rigid 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/bin/rigid +4 -0
- data/rigid +16 -0
- data/vendor/PyYAML-3.12.dist-info/DESCRIPTION.rst +12 -0
- data/vendor/PyYAML-3.12.dist-info/INSTALLER +1 -0
- data/vendor/PyYAML-3.12.dist-info/METADATA +35 -0
- data/vendor/PyYAML-3.12.dist-info/RECORD +42 -0
- data/vendor/PyYAML-3.12.dist-info/WHEEL +5 -0
- data/vendor/PyYAML-3.12.dist-info/metadata.json +1 -0
- data/vendor/PyYAML-3.12.dist-info/top_level.txt +2 -0
- data/vendor/_yaml.so +0 -0
- data/vendor/click/__init__.py +98 -0
- data/vendor/click/__init__.pyc +0 -0
- data/vendor/click/_bashcomplete.py +83 -0
- data/vendor/click/_bashcomplete.pyc +0 -0
- data/vendor/click/_compat.py +642 -0
- data/vendor/click/_compat.pyc +0 -0
- data/vendor/click/_termui_impl.py +547 -0
- data/vendor/click/_termui_impl.pyc +0 -0
- data/vendor/click/_textwrap.py +38 -0
- data/vendor/click/_textwrap.pyc +0 -0
- data/vendor/click/_unicodefun.py +119 -0
- data/vendor/click/_unicodefun.pyc +0 -0
- data/vendor/click/_winconsole.py +273 -0
- data/vendor/click/_winconsole.pyc +0 -0
- data/vendor/click/core.py +1738 -0
- data/vendor/click/core.pyc +0 -0
- data/vendor/click/decorators.py +304 -0
- data/vendor/click/decorators.pyc +0 -0
- data/vendor/click/exceptions.py +201 -0
- data/vendor/click/exceptions.pyc +0 -0
- data/vendor/click/formatting.py +256 -0
- data/vendor/click/formatting.pyc +0 -0
- data/vendor/click/globals.py +48 -0
- data/vendor/click/globals.pyc +0 -0
- data/vendor/click/parser.py +426 -0
- data/vendor/click/parser.pyc +0 -0
- data/vendor/click/termui.py +539 -0
- data/vendor/click/termui.pyc +0 -0
- data/vendor/click/testing.py +322 -0
- data/vendor/click/testing.pyc +0 -0
- data/vendor/click/types.py +550 -0
- data/vendor/click/types.pyc +0 -0
- data/vendor/click/utils.py +415 -0
- data/vendor/click/utils.pyc +0 -0
- data/vendor/click-6.6.dist-info/DESCRIPTION.rst +3 -0
- data/vendor/click-6.6.dist-info/INSTALLER +1 -0
- data/vendor/click-6.6.dist-info/METADATA +16 -0
- data/vendor/click-6.6.dist-info/RECORD +41 -0
- data/vendor/click-6.6.dist-info/WHEEL +6 -0
- data/vendor/click-6.6.dist-info/metadata.json +1 -0
- data/vendor/click-6.6.dist-info/top_level.txt +1 -0
- data/vendor/easy_install.py +5 -0
- data/vendor/easy_install.pyc +0 -0
- data/vendor/pip-9.0.1.dist-info/DESCRIPTION.rst +39 -0
- data/vendor/pip-9.0.1.dist-info/INSTALLER +1 -0
- data/vendor/pip-9.0.1.dist-info/METADATA +69 -0
- data/vendor/pip-9.0.1.dist-info/RECORD +501 -0
- data/vendor/pip-9.0.1.dist-info/WHEEL +6 -0
- data/vendor/pip-9.0.1.dist-info/entry_points.txt +5 -0
- data/vendor/pip-9.0.1.dist-info/metadata.json +1 -0
- data/vendor/pip-9.0.1.dist-info/top_level.txt +1 -0
- data/vendor/pkg_resources/__init__.py +3051 -0
- data/vendor/pkg_resources/__init__.pyc +0 -0
- data/vendor/pkg_resources/_vendor/__init__.py +0 -0
- data/vendor/pkg_resources/_vendor/__init__.pyc +0 -0
- data/vendor/pkg_resources/_vendor/appdirs.py +552 -0
- data/vendor/pkg_resources/_vendor/appdirs.pyc +0 -0
- data/vendor/pkg_resources/_vendor/packaging/__about__.py +21 -0
- data/vendor/pkg_resources/_vendor/packaging/__about__.pyc +0 -0
- data/vendor/pkg_resources/_vendor/packaging/__init__.py +14 -0
- data/vendor/pkg_resources/_vendor/packaging/__init__.pyc +0 -0
- data/vendor/pkg_resources/_vendor/packaging/_compat.py +30 -0
- data/vendor/pkg_resources/_vendor/packaging/_compat.pyc +0 -0
- data/vendor/pkg_resources/_vendor/packaging/_structures.py +68 -0
- data/vendor/pkg_resources/_vendor/packaging/_structures.pyc +0 -0
- data/vendor/pkg_resources/_vendor/packaging/markers.py +287 -0
- data/vendor/pkg_resources/_vendor/packaging/markers.pyc +0 -0
- data/vendor/pkg_resources/_vendor/packaging/requirements.py +127 -0
- data/vendor/pkg_resources/_vendor/packaging/requirements.pyc +0 -0
- data/vendor/pkg_resources/_vendor/packaging/specifiers.py +774 -0
- data/vendor/pkg_resources/_vendor/packaging/specifiers.pyc +0 -0
- data/vendor/pkg_resources/_vendor/packaging/utils.py +14 -0
- data/vendor/pkg_resources/_vendor/packaging/utils.pyc +0 -0
- data/vendor/pkg_resources/_vendor/packaging/version.py +393 -0
- data/vendor/pkg_resources/_vendor/packaging/version.pyc +0 -0
- data/vendor/pkg_resources/_vendor/pyparsing.py +5696 -0
- data/vendor/pkg_resources/_vendor/pyparsing.pyc +0 -0
- data/vendor/pkg_resources/_vendor/six.py +868 -0
- data/vendor/pkg_resources/_vendor/six.pyc +0 -0
- data/vendor/pkg_resources/extern/__init__.py +73 -0
- data/vendor/pkg_resources/extern/__init__.pyc +0 -0
- data/vendor/requests/__init__.py +86 -0
- data/vendor/requests/__init__.pyc +0 -0
- data/vendor/requests/adapters.py +503 -0
- data/vendor/requests/adapters.pyc +0 -0
- data/vendor/requests/api.py +148 -0
- data/vendor/requests/api.pyc +0 -0
- data/vendor/requests/auth.py +252 -0
- data/vendor/requests/auth.pyc +0 -0
- data/vendor/requests/cacert.pem +5616 -0
- data/vendor/requests/certs.py +25 -0
- data/vendor/requests/certs.pyc +0 -0
- data/vendor/requests/compat.py +66 -0
- data/vendor/requests/compat.pyc +0 -0
- data/vendor/requests/cookies.py +540 -0
- data/vendor/requests/cookies.pyc +0 -0
- data/vendor/requests/exceptions.py +114 -0
- data/vendor/requests/exceptions.pyc +0 -0
- data/vendor/requests/hooks.py +34 -0
- data/vendor/requests/hooks.pyc +0 -0
- data/vendor/requests/models.py +873 -0
- data/vendor/requests/models.pyc +0 -0
- data/vendor/requests/packages/__init__.py +36 -0
- data/vendor/requests/packages/__init__.pyc +0 -0
- data/vendor/requests/packages/chardet/__init__.py +32 -0
- data/vendor/requests/packages/chardet/__init__.pyc +0 -0
- data/vendor/requests/packages/chardet/big5freq.py +925 -0
- data/vendor/requests/packages/chardet/big5freq.pyc +0 -0
- data/vendor/requests/packages/chardet/big5prober.py +42 -0
- data/vendor/requests/packages/chardet/big5prober.pyc +0 -0
- data/vendor/requests/packages/chardet/chardetect.py +80 -0
- data/vendor/requests/packages/chardet/chardetect.pyc +0 -0
- data/vendor/requests/packages/chardet/chardistribution.py +231 -0
- data/vendor/requests/packages/chardet/chardistribution.pyc +0 -0
- data/vendor/requests/packages/chardet/charsetgroupprober.py +106 -0
- data/vendor/requests/packages/chardet/charsetgroupprober.pyc +0 -0
- data/vendor/requests/packages/chardet/charsetprober.py +62 -0
- data/vendor/requests/packages/chardet/charsetprober.pyc +0 -0
- data/vendor/requests/packages/chardet/codingstatemachine.py +61 -0
- data/vendor/requests/packages/chardet/codingstatemachine.pyc +0 -0
- data/vendor/requests/packages/chardet/compat.py +34 -0
- data/vendor/requests/packages/chardet/compat.pyc +0 -0
- data/vendor/requests/packages/chardet/constants.py +39 -0
- data/vendor/requests/packages/chardet/constants.pyc +0 -0
- data/vendor/requests/packages/chardet/cp949prober.py +44 -0
- data/vendor/requests/packages/chardet/cp949prober.pyc +0 -0
- data/vendor/requests/packages/chardet/escprober.py +86 -0
- data/vendor/requests/packages/chardet/escprober.pyc +0 -0
- data/vendor/requests/packages/chardet/escsm.py +242 -0
- data/vendor/requests/packages/chardet/escsm.pyc +0 -0
- data/vendor/requests/packages/chardet/eucjpprober.py +90 -0
- data/vendor/requests/packages/chardet/eucjpprober.pyc +0 -0
- data/vendor/requests/packages/chardet/euckrfreq.py +596 -0
- data/vendor/requests/packages/chardet/euckrfreq.pyc +0 -0
- data/vendor/requests/packages/chardet/euckrprober.py +42 -0
- data/vendor/requests/packages/chardet/euckrprober.pyc +0 -0
- data/vendor/requests/packages/chardet/euctwfreq.py +428 -0
- data/vendor/requests/packages/chardet/euctwfreq.pyc +0 -0
- data/vendor/requests/packages/chardet/euctwprober.py +41 -0
- data/vendor/requests/packages/chardet/euctwprober.pyc +0 -0
- data/vendor/requests/packages/chardet/gb2312freq.py +472 -0
- data/vendor/requests/packages/chardet/gb2312freq.pyc +0 -0
- data/vendor/requests/packages/chardet/gb2312prober.py +41 -0
- data/vendor/requests/packages/chardet/gb2312prober.pyc +0 -0
- data/vendor/requests/packages/chardet/hebrewprober.py +283 -0
- data/vendor/requests/packages/chardet/hebrewprober.pyc +0 -0
- data/vendor/requests/packages/chardet/jisfreq.py +569 -0
- data/vendor/requests/packages/chardet/jisfreq.pyc +0 -0
- data/vendor/requests/packages/chardet/jpcntx.py +227 -0
- data/vendor/requests/packages/chardet/jpcntx.pyc +0 -0
- data/vendor/requests/packages/chardet/langbulgarianmodel.py +229 -0
- data/vendor/requests/packages/chardet/langbulgarianmodel.pyc +0 -0
- data/vendor/requests/packages/chardet/langcyrillicmodel.py +329 -0
- data/vendor/requests/packages/chardet/langcyrillicmodel.pyc +0 -0
- data/vendor/requests/packages/chardet/langgreekmodel.py +225 -0
- data/vendor/requests/packages/chardet/langgreekmodel.pyc +0 -0
- data/vendor/requests/packages/chardet/langhebrewmodel.py +201 -0
- data/vendor/requests/packages/chardet/langhebrewmodel.pyc +0 -0
- data/vendor/requests/packages/chardet/langhungarianmodel.py +225 -0
- data/vendor/requests/packages/chardet/langhungarianmodel.pyc +0 -0
- data/vendor/requests/packages/chardet/langthaimodel.py +200 -0
- data/vendor/requests/packages/chardet/langthaimodel.pyc +0 -0
- data/vendor/requests/packages/chardet/latin1prober.py +139 -0
- data/vendor/requests/packages/chardet/latin1prober.pyc +0 -0
- data/vendor/requests/packages/chardet/mbcharsetprober.py +86 -0
- data/vendor/requests/packages/chardet/mbcharsetprober.pyc +0 -0
- data/vendor/requests/packages/chardet/mbcsgroupprober.py +54 -0
- data/vendor/requests/packages/chardet/mbcsgroupprober.pyc +0 -0
- data/vendor/requests/packages/chardet/mbcssm.py +572 -0
- data/vendor/requests/packages/chardet/mbcssm.pyc +0 -0
- data/vendor/requests/packages/chardet/sbcharsetprober.py +120 -0
- data/vendor/requests/packages/chardet/sbcharsetprober.pyc +0 -0
- data/vendor/requests/packages/chardet/sbcsgroupprober.py +69 -0
- data/vendor/requests/packages/chardet/sbcsgroupprober.pyc +0 -0
- data/vendor/requests/packages/chardet/sjisprober.py +91 -0
- data/vendor/requests/packages/chardet/sjisprober.pyc +0 -0
- data/vendor/requests/packages/chardet/universaldetector.py +170 -0
- data/vendor/requests/packages/chardet/universaldetector.pyc +0 -0
- data/vendor/requests/packages/chardet/utf8prober.py +76 -0
- data/vendor/requests/packages/chardet/utf8prober.pyc +0 -0
- data/vendor/requests/packages/urllib3/__init__.py +96 -0
- data/vendor/requests/packages/urllib3/__init__.pyc +0 -0
- data/vendor/requests/packages/urllib3/_collections.py +324 -0
- data/vendor/requests/packages/urllib3/_collections.pyc +0 -0
- data/vendor/requests/packages/urllib3/connection.py +330 -0
- data/vendor/requests/packages/urllib3/connection.pyc +0 -0
- data/vendor/requests/packages/urllib3/connectionpool.py +866 -0
- data/vendor/requests/packages/urllib3/connectionpool.pyc +0 -0
- data/vendor/requests/packages/urllib3/contrib/__init__.py +0 -0
- data/vendor/requests/packages/urllib3/contrib/__init__.pyc +0 -0
- data/vendor/requests/packages/urllib3/contrib/appengine.py +231 -0
- data/vendor/requests/packages/urllib3/contrib/appengine.pyc +0 -0
- data/vendor/requests/packages/urllib3/contrib/ntlmpool.py +115 -0
- data/vendor/requests/packages/urllib3/contrib/ntlmpool.pyc +0 -0
- data/vendor/requests/packages/urllib3/contrib/pyopenssl.py +358 -0
- data/vendor/requests/packages/urllib3/contrib/pyopenssl.pyc +0 -0
- data/vendor/requests/packages/urllib3/contrib/socks.py +172 -0
- data/vendor/requests/packages/urllib3/contrib/socks.pyc +0 -0
- data/vendor/requests/packages/urllib3/exceptions.py +209 -0
- data/vendor/requests/packages/urllib3/exceptions.pyc +0 -0
- data/vendor/requests/packages/urllib3/fields.py +178 -0
- data/vendor/requests/packages/urllib3/fields.pyc +0 -0
- data/vendor/requests/packages/urllib3/filepost.py +94 -0
- data/vendor/requests/packages/urllib3/filepost.pyc +0 -0
- data/vendor/requests/packages/urllib3/packages/__init__.py +5 -0
- data/vendor/requests/packages/urllib3/packages/__init__.pyc +0 -0
- data/vendor/requests/packages/urllib3/packages/ordered_dict.py +259 -0
- data/vendor/requests/packages/urllib3/packages/ordered_dict.pyc +0 -0
- data/vendor/requests/packages/urllib3/packages/six.py +868 -0
- data/vendor/requests/packages/urllib3/packages/six.pyc +0 -0
- data/vendor/requests/packages/urllib3/packages/ssl_match_hostname/__init__.py +13 -0
- data/vendor/requests/packages/urllib3/packages/ssl_match_hostname/__init__.pyc +0 -0
- data/vendor/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.py +105 -0
- data/vendor/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.pyc +0 -0
- data/vendor/requests/packages/urllib3/poolmanager.py +367 -0
- data/vendor/requests/packages/urllib3/poolmanager.pyc +0 -0
- data/vendor/requests/packages/urllib3/request.py +151 -0
- data/vendor/requests/packages/urllib3/request.pyc +0 -0
- data/vendor/requests/packages/urllib3/response.py +530 -0
- data/vendor/requests/packages/urllib3/response.pyc +0 -0
- data/vendor/requests/packages/urllib3/util/__init__.py +46 -0
- data/vendor/requests/packages/urllib3/util/__init__.pyc +0 -0
- data/vendor/requests/packages/urllib3/util/connection.py +144 -0
- data/vendor/requests/packages/urllib3/util/connection.pyc +0 -0
- data/vendor/requests/packages/urllib3/util/request.py +72 -0
- data/vendor/requests/packages/urllib3/util/request.pyc +0 -0
- data/vendor/requests/packages/urllib3/util/response.py +74 -0
- data/vendor/requests/packages/urllib3/util/response.pyc +0 -0
- data/vendor/requests/packages/urllib3/util/retry.py +300 -0
- data/vendor/requests/packages/urllib3/util/retry.pyc +0 -0
- data/vendor/requests/packages/urllib3/util/ssl_.py +320 -0
- data/vendor/requests/packages/urllib3/util/ssl_.pyc +0 -0
- data/vendor/requests/packages/urllib3/util/timeout.py +242 -0
- data/vendor/requests/packages/urllib3/util/timeout.pyc +0 -0
- data/vendor/requests/packages/urllib3/util/url.py +217 -0
- data/vendor/requests/packages/urllib3/util/url.pyc +0 -0
- data/vendor/requests/sessions.py +712 -0
- data/vendor/requests/sessions.pyc +0 -0
- data/vendor/requests/status_codes.py +91 -0
- data/vendor/requests/status_codes.pyc +0 -0
- data/vendor/requests/structures.py +105 -0
- data/vendor/requests/structures.pyc +0 -0
- data/vendor/requests/utils.py +817 -0
- data/vendor/requests/utils.pyc +0 -0
- data/vendor/requests-2.11.1.dist-info/DESCRIPTION.rst +1294 -0
- data/vendor/requests-2.11.1.dist-info/INSTALLER +1 -0
- data/vendor/requests-2.11.1.dist-info/METADATA +1323 -0
- data/vendor/requests-2.11.1.dist-info/RECORD +170 -0
- data/vendor/requests-2.11.1.dist-info/WHEEL +6 -0
- data/vendor/requests-2.11.1.dist-info/metadata.json +1 -0
- data/vendor/requests-2.11.1.dist-info/top_level.txt +1 -0
- data/vendor/rigid/__init__.py +1 -0
- data/vendor/rigid/__init__.pyc +0 -0
- data/vendor/rigid/api.py +129 -0
- data/vendor/rigid/api.pyc +0 -0
- data/vendor/rigid/commands/__init__.py +260 -0
- data/vendor/rigid/commands/__init__.pyc +0 -0
- data/vendor/rigid/commands/deploy.py +0 -0
- data/vendor/rigid/commands/deploy.pyc +0 -0
- data/vendor/rigid/deploy.py +70 -0
- data/vendor/rigid/deploy.pyc +0 -0
- data/vendor/rigid/file_scanner.py +63 -0
- data/vendor/rigid/file_scanner.pyc +0 -0
- data/vendor/rigid/utils.py +17 -0
- data/vendor/rigid/utils.pyc +0 -0
- data/vendor/rigid-0.2.0.dist-info/DESCRIPTION.rst +3 -0
- data/vendor/rigid-0.2.0.dist-info/INSTALLER +1 -0
- data/vendor/rigid-0.2.0.dist-info/METADATA +23 -0
- data/vendor/rigid-0.2.0.dist-info/RECORD +49 -0
- data/vendor/rigid-0.2.0.dist-info/WHEEL +5 -0
- data/vendor/rigid-0.2.0.dist-info/entry_points.txt +3 -0
- data/vendor/rigid-0.2.0.dist-info/metadata.json +1 -0
- data/vendor/rigid-0.2.0.dist-info/top_level.txt +2 -0
- data/vendor/setuptools-28.8.0.dist-info/DESCRIPTION.rst +243 -0
- data/vendor/setuptools-28.8.0.dist-info/INSTALLER +1 -0
- data/vendor/setuptools-28.8.0.dist-info/METADATA +272 -0
- data/vendor/setuptools-28.8.0.dist-info/RECORD +143 -0
- data/vendor/setuptools-28.8.0.dist-info/WHEEL +6 -0
- data/vendor/setuptools-28.8.0.dist-info/dependency_links.txt +2 -0
- data/vendor/setuptools-28.8.0.dist-info/entry_points.txt +63 -0
- data/vendor/setuptools-28.8.0.dist-info/metadata.json +1 -0
- data/vendor/setuptools-28.8.0.dist-info/top_level.txt +3 -0
- data/vendor/setuptools-28.8.0.dist-info/zip-safe +1 -0
- data/vendor/tests/__init__.py +0 -0
- data/vendor/tests/__init__.pyc +0 -0
- data/vendor/tests/integration/__init__.py +0 -0
- data/vendor/tests/integration/__init__.pyc +0 -0
- data/vendor/tests/integration/test_app.py +63 -0
- data/vendor/tests/integration/test_app.pyc +0 -0
- data/vendor/tests/integration/test_apps.py +27 -0
- data/vendor/tests/integration/test_apps.pyc +0 -0
- data/vendor/tests/integration/test_deploy.py +128 -0
- data/vendor/tests/integration/test_deploy.pyc +0 -0
- data/vendor/tests/integration/test_domains.py +35 -0
- data/vendor/tests/integration/test_domains.pyc +0 -0
- data/vendor/tests/integration/test_login.py +37 -0
- data/vendor/tests/integration/test_login.pyc +0 -0
- data/vendor/tests/integration/test_promote.py +24 -0
- data/vendor/tests/integration/test_promote.pyc +0 -0
- data/vendor/tests/integration/test_token.py +33 -0
- data/vendor/tests/integration/test_token.pyc +0 -0
- data/vendor/tests/integration/test_whoami.py +24 -0
- data/vendor/tests/integration/test_whoami.pyc +0 -0
- data/vendor/tests/test_deploy.py +33 -0
- data/vendor/tests/test_deploy.pyc +0 -0
- data/vendor/tests/test_file_scanner.py +89 -0
- data/vendor/tests/test_file_scanner.pyc +0 -0
- data/vendor/tests/utils.py +78 -0
- data/vendor/tests/utils.pyc +0 -0
- data/vendor/wheel-0.30.0a0.dist-info/DESCRIPTION.rst +325 -0
- data/vendor/wheel-0.30.0a0.dist-info/INSTALLER +1 -0
- data/vendor/wheel-0.30.0a0.dist-info/LICENSE.txt +22 -0
- data/vendor/wheel-0.30.0a0.dist-info/METADATA +357 -0
- data/vendor/wheel-0.30.0a0.dist-info/RECORD +86 -0
- data/vendor/wheel-0.30.0a0.dist-info/WHEEL +6 -0
- data/vendor/wheel-0.30.0a0.dist-info/entry_points.txt +6 -0
- data/vendor/wheel-0.30.0a0.dist-info/metadata.json +1 -0
- data/vendor/wheel-0.30.0a0.dist-info/top_level.txt +1 -0
- data/vendor/yaml/__init__.py +315 -0
- data/vendor/yaml/__init__.pyc +0 -0
- data/vendor/yaml/composer.py +139 -0
- data/vendor/yaml/composer.pyc +0 -0
- data/vendor/yaml/constructor.py +675 -0
- data/vendor/yaml/constructor.pyc +0 -0
- data/vendor/yaml/cyaml.py +85 -0
- data/vendor/yaml/cyaml.pyc +0 -0
- data/vendor/yaml/dumper.py +62 -0
- data/vendor/yaml/dumper.pyc +0 -0
- data/vendor/yaml/emitter.py +1140 -0
- data/vendor/yaml/emitter.pyc +0 -0
- data/vendor/yaml/error.py +75 -0
- data/vendor/yaml/error.pyc +0 -0
- data/vendor/yaml/events.py +86 -0
- data/vendor/yaml/events.pyc +0 -0
- data/vendor/yaml/loader.py +40 -0
- data/vendor/yaml/loader.pyc +0 -0
- data/vendor/yaml/nodes.py +49 -0
- data/vendor/yaml/nodes.pyc +0 -0
- data/vendor/yaml/parser.py +589 -0
- data/vendor/yaml/parser.pyc +0 -0
- data/vendor/yaml/reader.py +190 -0
- data/vendor/yaml/reader.pyc +0 -0
- data/vendor/yaml/representer.py +486 -0
- data/vendor/yaml/representer.pyc +0 -0
- data/vendor/yaml/resolver.py +227 -0
- data/vendor/yaml/resolver.pyc +0 -0
- data/vendor/yaml/scanner.py +1453 -0
- data/vendor/yaml/scanner.pyc +0 -0
- data/vendor/yaml/serializer.py +111 -0
- data/vendor/yaml/serializer.pyc +0 -0
- data/vendor/yaml/tokens.py +104 -0
- data/vendor/yaml/tokens.pyc +0 -0
- metadata +407 -0
@@ -0,0 +1,530 @@
|
|
1
|
+
from __future__ import absolute_import
|
2
|
+
from contextlib import contextmanager
|
3
|
+
import zlib
|
4
|
+
import io
|
5
|
+
from socket import timeout as SocketTimeout
|
6
|
+
from socket import error as SocketError
|
7
|
+
|
8
|
+
from ._collections import HTTPHeaderDict
|
9
|
+
from .exceptions import (
|
10
|
+
ProtocolError, DecodeError, ReadTimeoutError, ResponseNotChunked
|
11
|
+
)
|
12
|
+
from .packages.six import string_types as basestring, binary_type, PY3
|
13
|
+
from .packages.six.moves import http_client as httplib
|
14
|
+
from .connection import HTTPException, BaseSSLError
|
15
|
+
from .util.response import is_fp_closed, is_response_to_head
|
16
|
+
|
17
|
+
|
18
|
+
class DeflateDecoder(object):
|
19
|
+
|
20
|
+
def __init__(self):
|
21
|
+
self._first_try = True
|
22
|
+
self._data = binary_type()
|
23
|
+
self._obj = zlib.decompressobj()
|
24
|
+
|
25
|
+
def __getattr__(self, name):
|
26
|
+
return getattr(self._obj, name)
|
27
|
+
|
28
|
+
def decompress(self, data):
|
29
|
+
if not data:
|
30
|
+
return data
|
31
|
+
|
32
|
+
if not self._first_try:
|
33
|
+
return self._obj.decompress(data)
|
34
|
+
|
35
|
+
self._data += data
|
36
|
+
try:
|
37
|
+
return self._obj.decompress(data)
|
38
|
+
except zlib.error:
|
39
|
+
self._first_try = False
|
40
|
+
self._obj = zlib.decompressobj(-zlib.MAX_WBITS)
|
41
|
+
try:
|
42
|
+
return self.decompress(self._data)
|
43
|
+
finally:
|
44
|
+
self._data = None
|
45
|
+
|
46
|
+
|
47
|
+
class GzipDecoder(object):
|
48
|
+
|
49
|
+
def __init__(self):
|
50
|
+
self._obj = zlib.decompressobj(16 + zlib.MAX_WBITS)
|
51
|
+
|
52
|
+
def __getattr__(self, name):
|
53
|
+
return getattr(self._obj, name)
|
54
|
+
|
55
|
+
def decompress(self, data):
|
56
|
+
if not data:
|
57
|
+
return data
|
58
|
+
return self._obj.decompress(data)
|
59
|
+
|
60
|
+
|
61
|
+
def _get_decoder(mode):
|
62
|
+
if mode == 'gzip':
|
63
|
+
return GzipDecoder()
|
64
|
+
|
65
|
+
return DeflateDecoder()
|
66
|
+
|
67
|
+
|
68
|
+
class HTTPResponse(io.IOBase):
|
69
|
+
"""
|
70
|
+
HTTP Response container.
|
71
|
+
|
72
|
+
Backwards-compatible to httplib's HTTPResponse but the response ``body`` is
|
73
|
+
loaded and decoded on-demand when the ``data`` property is accessed. This
|
74
|
+
class is also compatible with the Python standard library's :mod:`io`
|
75
|
+
module, and can hence be treated as a readable object in the context of that
|
76
|
+
framework.
|
77
|
+
|
78
|
+
Extra parameters for behaviour not present in httplib.HTTPResponse:
|
79
|
+
|
80
|
+
:param preload_content:
|
81
|
+
If True, the response's body will be preloaded during construction.
|
82
|
+
|
83
|
+
:param decode_content:
|
84
|
+
If True, attempts to decode specific content-encoding's based on headers
|
85
|
+
(like 'gzip' and 'deflate') will be skipped and raw data will be used
|
86
|
+
instead.
|
87
|
+
|
88
|
+
:param original_response:
|
89
|
+
When this HTTPResponse wrapper is generated from an httplib.HTTPResponse
|
90
|
+
object, it's convenient to include the original for debug purposes. It's
|
91
|
+
otherwise unused.
|
92
|
+
"""
|
93
|
+
|
94
|
+
CONTENT_DECODERS = ['gzip', 'deflate']
|
95
|
+
REDIRECT_STATUSES = [301, 302, 303, 307, 308]
|
96
|
+
|
97
|
+
def __init__(self, body='', headers=None, status=0, version=0, reason=None,
|
98
|
+
strict=0, preload_content=True, decode_content=True,
|
99
|
+
original_response=None, pool=None, connection=None):
|
100
|
+
|
101
|
+
if isinstance(headers, HTTPHeaderDict):
|
102
|
+
self.headers = headers
|
103
|
+
else:
|
104
|
+
self.headers = HTTPHeaderDict(headers)
|
105
|
+
self.status = status
|
106
|
+
self.version = version
|
107
|
+
self.reason = reason
|
108
|
+
self.strict = strict
|
109
|
+
self.decode_content = decode_content
|
110
|
+
|
111
|
+
self._decoder = None
|
112
|
+
self._body = None
|
113
|
+
self._fp = None
|
114
|
+
self._original_response = original_response
|
115
|
+
self._fp_bytes_read = 0
|
116
|
+
|
117
|
+
if body and isinstance(body, (basestring, binary_type)):
|
118
|
+
self._body = body
|
119
|
+
|
120
|
+
self._pool = pool
|
121
|
+
self._connection = connection
|
122
|
+
|
123
|
+
if hasattr(body, 'read'):
|
124
|
+
self._fp = body
|
125
|
+
|
126
|
+
# Are we using the chunked-style of transfer encoding?
|
127
|
+
self.chunked = False
|
128
|
+
self.chunk_left = None
|
129
|
+
tr_enc = self.headers.get('transfer-encoding', '').lower()
|
130
|
+
# Don't incur the penalty of creating a list and then discarding it
|
131
|
+
encodings = (enc.strip() for enc in tr_enc.split(","))
|
132
|
+
if "chunked" in encodings:
|
133
|
+
self.chunked = True
|
134
|
+
|
135
|
+
# If requested, preload the body.
|
136
|
+
if preload_content and not self._body:
|
137
|
+
self._body = self.read(decode_content=decode_content)
|
138
|
+
|
139
|
+
def get_redirect_location(self):
|
140
|
+
"""
|
141
|
+
Should we redirect and where to?
|
142
|
+
|
143
|
+
:returns: Truthy redirect location string if we got a redirect status
|
144
|
+
code and valid location. ``None`` if redirect status and no
|
145
|
+
location. ``False`` if not a redirect status code.
|
146
|
+
"""
|
147
|
+
if self.status in self.REDIRECT_STATUSES:
|
148
|
+
return self.headers.get('location')
|
149
|
+
|
150
|
+
return False
|
151
|
+
|
152
|
+
def release_conn(self):
|
153
|
+
if not self._pool or not self._connection:
|
154
|
+
return
|
155
|
+
|
156
|
+
self._pool._put_conn(self._connection)
|
157
|
+
self._connection = None
|
158
|
+
|
159
|
+
@property
|
160
|
+
def data(self):
|
161
|
+
# For backwords-compat with earlier urllib3 0.4 and earlier.
|
162
|
+
if self._body:
|
163
|
+
return self._body
|
164
|
+
|
165
|
+
if self._fp:
|
166
|
+
return self.read(cache_content=True)
|
167
|
+
|
168
|
+
@property
|
169
|
+
def connection(self):
|
170
|
+
return self._connection
|
171
|
+
|
172
|
+
def tell(self):
|
173
|
+
"""
|
174
|
+
Obtain the number of bytes pulled over the wire so far. May differ from
|
175
|
+
the amount of content returned by :meth:``HTTPResponse.read`` if bytes
|
176
|
+
are encoded on the wire (e.g, compressed).
|
177
|
+
"""
|
178
|
+
return self._fp_bytes_read
|
179
|
+
|
180
|
+
def _init_decoder(self):
|
181
|
+
"""
|
182
|
+
Set-up the _decoder attribute if necessar.
|
183
|
+
"""
|
184
|
+
# Note: content-encoding value should be case-insensitive, per RFC 7230
|
185
|
+
# Section 3.2
|
186
|
+
content_encoding = self.headers.get('content-encoding', '').lower()
|
187
|
+
if self._decoder is None and content_encoding in self.CONTENT_DECODERS:
|
188
|
+
self._decoder = _get_decoder(content_encoding)
|
189
|
+
|
190
|
+
def _decode(self, data, decode_content, flush_decoder):
|
191
|
+
"""
|
192
|
+
Decode the data passed in and potentially flush the decoder.
|
193
|
+
"""
|
194
|
+
try:
|
195
|
+
if decode_content and self._decoder:
|
196
|
+
data = self._decoder.decompress(data)
|
197
|
+
except (IOError, zlib.error) as e:
|
198
|
+
content_encoding = self.headers.get('content-encoding', '').lower()
|
199
|
+
raise DecodeError(
|
200
|
+
"Received response with content-encoding: %s, but "
|
201
|
+
"failed to decode it." % content_encoding, e)
|
202
|
+
|
203
|
+
if flush_decoder and decode_content:
|
204
|
+
data += self._flush_decoder()
|
205
|
+
|
206
|
+
return data
|
207
|
+
|
208
|
+
def _flush_decoder(self):
|
209
|
+
"""
|
210
|
+
Flushes the decoder. Should only be called if the decoder is actually
|
211
|
+
being used.
|
212
|
+
"""
|
213
|
+
if self._decoder:
|
214
|
+
buf = self._decoder.decompress(b'')
|
215
|
+
return buf + self._decoder.flush()
|
216
|
+
|
217
|
+
return b''
|
218
|
+
|
219
|
+
@contextmanager
|
220
|
+
def _error_catcher(self):
|
221
|
+
"""
|
222
|
+
Catch low-level python exceptions, instead re-raising urllib3
|
223
|
+
variants, so that low-level exceptions are not leaked in the
|
224
|
+
high-level api.
|
225
|
+
|
226
|
+
On exit, release the connection back to the pool.
|
227
|
+
"""
|
228
|
+
clean_exit = False
|
229
|
+
|
230
|
+
try:
|
231
|
+
try:
|
232
|
+
yield
|
233
|
+
|
234
|
+
except SocketTimeout:
|
235
|
+
# FIXME: Ideally we'd like to include the url in the ReadTimeoutError but
|
236
|
+
# there is yet no clean way to get at it from this context.
|
237
|
+
raise ReadTimeoutError(self._pool, None, 'Read timed out.')
|
238
|
+
|
239
|
+
except BaseSSLError as e:
|
240
|
+
# FIXME: Is there a better way to differentiate between SSLErrors?
|
241
|
+
if 'read operation timed out' not in str(e): # Defensive:
|
242
|
+
# This shouldn't happen but just in case we're missing an edge
|
243
|
+
# case, let's avoid swallowing SSL errors.
|
244
|
+
raise
|
245
|
+
|
246
|
+
raise ReadTimeoutError(self._pool, None, 'Read timed out.')
|
247
|
+
|
248
|
+
except (HTTPException, SocketError) as e:
|
249
|
+
# This includes IncompleteRead.
|
250
|
+
raise ProtocolError('Connection broken: %r' % e, e)
|
251
|
+
|
252
|
+
# If no exception is thrown, we should avoid cleaning up
|
253
|
+
# unnecessarily.
|
254
|
+
clean_exit = True
|
255
|
+
finally:
|
256
|
+
# If we didn't terminate cleanly, we need to throw away our
|
257
|
+
# connection.
|
258
|
+
if not clean_exit:
|
259
|
+
# The response may not be closed but we're not going to use it
|
260
|
+
# anymore so close it now to ensure that the connection is
|
261
|
+
# released back to the pool.
|
262
|
+
if self._original_response:
|
263
|
+
self._original_response.close()
|
264
|
+
|
265
|
+
# Closing the response may not actually be sufficient to close
|
266
|
+
# everything, so if we have a hold of the connection close that
|
267
|
+
# too.
|
268
|
+
if self._connection:
|
269
|
+
self._connection.close()
|
270
|
+
|
271
|
+
# If we hold the original response but it's closed now, we should
|
272
|
+
# return the connection back to the pool.
|
273
|
+
if self._original_response and self._original_response.isclosed():
|
274
|
+
self.release_conn()
|
275
|
+
|
276
|
+
def read(self, amt=None, decode_content=None, cache_content=False):
|
277
|
+
"""
|
278
|
+
Similar to :meth:`httplib.HTTPResponse.read`, but with two additional
|
279
|
+
parameters: ``decode_content`` and ``cache_content``.
|
280
|
+
|
281
|
+
:param amt:
|
282
|
+
How much of the content to read. If specified, caching is skipped
|
283
|
+
because it doesn't make sense to cache partial content as the full
|
284
|
+
response.
|
285
|
+
|
286
|
+
:param decode_content:
|
287
|
+
If True, will attempt to decode the body based on the
|
288
|
+
'content-encoding' header.
|
289
|
+
|
290
|
+
:param cache_content:
|
291
|
+
If True, will save the returned data such that the same result is
|
292
|
+
returned despite of the state of the underlying file object. This
|
293
|
+
is useful if you want the ``.data`` property to continue working
|
294
|
+
after having ``.read()`` the file object. (Overridden if ``amt`` is
|
295
|
+
set.)
|
296
|
+
"""
|
297
|
+
self._init_decoder()
|
298
|
+
if decode_content is None:
|
299
|
+
decode_content = self.decode_content
|
300
|
+
|
301
|
+
if self._fp is None:
|
302
|
+
return
|
303
|
+
|
304
|
+
flush_decoder = False
|
305
|
+
data = None
|
306
|
+
|
307
|
+
with self._error_catcher():
|
308
|
+
if amt is None:
|
309
|
+
# cStringIO doesn't like amt=None
|
310
|
+
data = self._fp.read()
|
311
|
+
flush_decoder = True
|
312
|
+
else:
|
313
|
+
cache_content = False
|
314
|
+
data = self._fp.read(amt)
|
315
|
+
if amt != 0 and not data: # Platform-specific: Buggy versions of Python.
|
316
|
+
# Close the connection when no data is returned
|
317
|
+
#
|
318
|
+
# This is redundant to what httplib/http.client _should_
|
319
|
+
# already do. However, versions of python released before
|
320
|
+
# December 15, 2012 (http://bugs.python.org/issue16298) do
|
321
|
+
# not properly close the connection in all cases. There is
|
322
|
+
# no harm in redundantly calling close.
|
323
|
+
self._fp.close()
|
324
|
+
flush_decoder = True
|
325
|
+
|
326
|
+
if data:
|
327
|
+
self._fp_bytes_read += len(data)
|
328
|
+
|
329
|
+
data = self._decode(data, decode_content, flush_decoder)
|
330
|
+
|
331
|
+
if cache_content:
|
332
|
+
self._body = data
|
333
|
+
|
334
|
+
return data
|
335
|
+
|
336
|
+
def stream(self, amt=2**16, decode_content=None):
|
337
|
+
"""
|
338
|
+
A generator wrapper for the read() method. A call will block until
|
339
|
+
``amt`` bytes have been read from the connection or until the
|
340
|
+
connection is closed.
|
341
|
+
|
342
|
+
:param amt:
|
343
|
+
How much of the content to read. The generator will return up to
|
344
|
+
much data per iteration, but may return less. This is particularly
|
345
|
+
likely when using compressed data. However, the empty string will
|
346
|
+
never be returned.
|
347
|
+
|
348
|
+
:param decode_content:
|
349
|
+
If True, will attempt to decode the body based on the
|
350
|
+
'content-encoding' header.
|
351
|
+
"""
|
352
|
+
if self.chunked:
|
353
|
+
for line in self.read_chunked(amt, decode_content=decode_content):
|
354
|
+
yield line
|
355
|
+
else:
|
356
|
+
while not is_fp_closed(self._fp):
|
357
|
+
data = self.read(amt=amt, decode_content=decode_content)
|
358
|
+
|
359
|
+
if data:
|
360
|
+
yield data
|
361
|
+
|
362
|
+
@classmethod
|
363
|
+
def from_httplib(ResponseCls, r, **response_kw):
|
364
|
+
"""
|
365
|
+
Given an :class:`httplib.HTTPResponse` instance ``r``, return a
|
366
|
+
corresponding :class:`urllib3.response.HTTPResponse` object.
|
367
|
+
|
368
|
+
Remaining parameters are passed to the HTTPResponse constructor, along
|
369
|
+
with ``original_response=r``.
|
370
|
+
"""
|
371
|
+
headers = r.msg
|
372
|
+
|
373
|
+
if not isinstance(headers, HTTPHeaderDict):
|
374
|
+
if PY3: # Python 3
|
375
|
+
headers = HTTPHeaderDict(headers.items())
|
376
|
+
else: # Python 2
|
377
|
+
headers = HTTPHeaderDict.from_httplib(headers)
|
378
|
+
|
379
|
+
# HTTPResponse objects in Python 3 don't have a .strict attribute
|
380
|
+
strict = getattr(r, 'strict', 0)
|
381
|
+
resp = ResponseCls(body=r,
|
382
|
+
headers=headers,
|
383
|
+
status=r.status,
|
384
|
+
version=r.version,
|
385
|
+
reason=r.reason,
|
386
|
+
strict=strict,
|
387
|
+
original_response=r,
|
388
|
+
**response_kw)
|
389
|
+
return resp
|
390
|
+
|
391
|
+
# Backwards-compatibility methods for httplib.HTTPResponse
|
392
|
+
def getheaders(self):
|
393
|
+
return self.headers
|
394
|
+
|
395
|
+
def getheader(self, name, default=None):
|
396
|
+
return self.headers.get(name, default)
|
397
|
+
|
398
|
+
# Overrides from io.IOBase
|
399
|
+
def close(self):
|
400
|
+
if not self.closed:
|
401
|
+
self._fp.close()
|
402
|
+
|
403
|
+
if self._connection:
|
404
|
+
self._connection.close()
|
405
|
+
|
406
|
+
@property
|
407
|
+
def closed(self):
|
408
|
+
if self._fp is None:
|
409
|
+
return True
|
410
|
+
elif hasattr(self._fp, 'closed'):
|
411
|
+
return self._fp.closed
|
412
|
+
elif hasattr(self._fp, 'isclosed'): # Python 2
|
413
|
+
return self._fp.isclosed()
|
414
|
+
else:
|
415
|
+
return True
|
416
|
+
|
417
|
+
def fileno(self):
|
418
|
+
if self._fp is None:
|
419
|
+
raise IOError("HTTPResponse has no file to get a fileno from")
|
420
|
+
elif hasattr(self._fp, "fileno"):
|
421
|
+
return self._fp.fileno()
|
422
|
+
else:
|
423
|
+
raise IOError("The file-like object this HTTPResponse is wrapped "
|
424
|
+
"around has no file descriptor")
|
425
|
+
|
426
|
+
def flush(self):
|
427
|
+
if self._fp is not None and hasattr(self._fp, 'flush'):
|
428
|
+
return self._fp.flush()
|
429
|
+
|
430
|
+
def readable(self):
|
431
|
+
# This method is required for `io` module compatibility.
|
432
|
+
return True
|
433
|
+
|
434
|
+
def readinto(self, b):
|
435
|
+
# This method is required for `io` module compatibility.
|
436
|
+
temp = self.read(len(b))
|
437
|
+
if len(temp) == 0:
|
438
|
+
return 0
|
439
|
+
else:
|
440
|
+
b[:len(temp)] = temp
|
441
|
+
return len(temp)
|
442
|
+
|
443
|
+
def _update_chunk_length(self):
|
444
|
+
# First, we'll figure out length of a chunk and then
|
445
|
+
# we'll try to read it from socket.
|
446
|
+
if self.chunk_left is not None:
|
447
|
+
return
|
448
|
+
line = self._fp.fp.readline()
|
449
|
+
line = line.split(b';', 1)[0]
|
450
|
+
try:
|
451
|
+
self.chunk_left = int(line, 16)
|
452
|
+
except ValueError:
|
453
|
+
# Invalid chunked protocol response, abort.
|
454
|
+
self.close()
|
455
|
+
raise httplib.IncompleteRead(line)
|
456
|
+
|
457
|
+
def _handle_chunk(self, amt):
|
458
|
+
returned_chunk = None
|
459
|
+
if amt is None:
|
460
|
+
chunk = self._fp._safe_read(self.chunk_left)
|
461
|
+
returned_chunk = chunk
|
462
|
+
self._fp._safe_read(2) # Toss the CRLF at the end of the chunk.
|
463
|
+
self.chunk_left = None
|
464
|
+
elif amt < self.chunk_left:
|
465
|
+
value = self._fp._safe_read(amt)
|
466
|
+
self.chunk_left = self.chunk_left - amt
|
467
|
+
returned_chunk = value
|
468
|
+
elif amt == self.chunk_left:
|
469
|
+
value = self._fp._safe_read(amt)
|
470
|
+
self._fp._safe_read(2) # Toss the CRLF at the end of the chunk.
|
471
|
+
self.chunk_left = None
|
472
|
+
returned_chunk = value
|
473
|
+
else: # amt > self.chunk_left
|
474
|
+
returned_chunk = self._fp._safe_read(self.chunk_left)
|
475
|
+
self._fp._safe_read(2) # Toss the CRLF at the end of the chunk.
|
476
|
+
self.chunk_left = None
|
477
|
+
return returned_chunk
|
478
|
+
|
479
|
+
def read_chunked(self, amt=None, decode_content=None):
|
480
|
+
"""
|
481
|
+
Similar to :meth:`HTTPResponse.read`, but with an additional
|
482
|
+
parameter: ``decode_content``.
|
483
|
+
|
484
|
+
:param decode_content:
|
485
|
+
If True, will attempt to decode the body based on the
|
486
|
+
'content-encoding' header.
|
487
|
+
"""
|
488
|
+
self._init_decoder()
|
489
|
+
# FIXME: Rewrite this method and make it a class with a better structured logic.
|
490
|
+
if not self.chunked:
|
491
|
+
raise ResponseNotChunked(
|
492
|
+
"Response is not chunked. "
|
493
|
+
"Header 'transfer-encoding: chunked' is missing.")
|
494
|
+
|
495
|
+
# Don't bother reading the body of a HEAD request.
|
496
|
+
if self._original_response and is_response_to_head(self._original_response):
|
497
|
+
self._original_response.close()
|
498
|
+
return
|
499
|
+
|
500
|
+
with self._error_catcher():
|
501
|
+
while True:
|
502
|
+
self._update_chunk_length()
|
503
|
+
if self.chunk_left == 0:
|
504
|
+
break
|
505
|
+
chunk = self._handle_chunk(amt)
|
506
|
+
decoded = self._decode(chunk, decode_content=decode_content,
|
507
|
+
flush_decoder=False)
|
508
|
+
if decoded:
|
509
|
+
yield decoded
|
510
|
+
|
511
|
+
if decode_content:
|
512
|
+
# On CPython and PyPy, we should never need to flush the
|
513
|
+
# decoder. However, on Jython we *might* need to, so
|
514
|
+
# lets defensively do it anyway.
|
515
|
+
decoded = self._flush_decoder()
|
516
|
+
if decoded: # Platform-specific: Jython.
|
517
|
+
yield decoded
|
518
|
+
|
519
|
+
# Chunk content ends with \r\n: discard it.
|
520
|
+
while True:
|
521
|
+
line = self._fp.fp.readline()
|
522
|
+
if not line:
|
523
|
+
# Some sites may not end with '\r\n'.
|
524
|
+
break
|
525
|
+
if line == b'\r\n':
|
526
|
+
break
|
527
|
+
|
528
|
+
# We read everything; close the "file".
|
529
|
+
if self._original_response:
|
530
|
+
self._original_response.close()
|
Binary file
|
@@ -0,0 +1,46 @@
|
|
1
|
+
from __future__ import absolute_import
|
2
|
+
# For backwards compatibility, provide imports that used to be here.
|
3
|
+
from .connection import is_connection_dropped
|
4
|
+
from .request import make_headers
|
5
|
+
from .response import is_fp_closed
|
6
|
+
from .ssl_ import (
|
7
|
+
SSLContext,
|
8
|
+
HAS_SNI,
|
9
|
+
IS_PYOPENSSL,
|
10
|
+
assert_fingerprint,
|
11
|
+
resolve_cert_reqs,
|
12
|
+
resolve_ssl_version,
|
13
|
+
ssl_wrap_socket,
|
14
|
+
)
|
15
|
+
from .timeout import (
|
16
|
+
current_time,
|
17
|
+
Timeout,
|
18
|
+
)
|
19
|
+
|
20
|
+
from .retry import Retry
|
21
|
+
from .url import (
|
22
|
+
get_host,
|
23
|
+
parse_url,
|
24
|
+
split_first,
|
25
|
+
Url,
|
26
|
+
)
|
27
|
+
|
28
|
+
__all__ = (
|
29
|
+
'HAS_SNI',
|
30
|
+
'IS_PYOPENSSL',
|
31
|
+
'SSLContext',
|
32
|
+
'Retry',
|
33
|
+
'Timeout',
|
34
|
+
'Url',
|
35
|
+
'assert_fingerprint',
|
36
|
+
'current_time',
|
37
|
+
'is_connection_dropped',
|
38
|
+
'is_fp_closed',
|
39
|
+
'get_host',
|
40
|
+
'parse_url',
|
41
|
+
'make_headers',
|
42
|
+
'resolve_cert_reqs',
|
43
|
+
'resolve_ssl_version',
|
44
|
+
'split_first',
|
45
|
+
'ssl_wrap_socket',
|
46
|
+
)
|
Binary file
|