mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
linkcheck: Move requests package loader to sphinx.util.requests
This commit is contained in:
parent
609ae03947
commit
fe1e5f7a7d
@ -14,10 +14,7 @@ import socket
|
|||||||
import codecs
|
import codecs
|
||||||
import threading
|
import threading
|
||||||
from os import path
|
from os import path
|
||||||
import warnings
|
|
||||||
|
|
||||||
import pkg_resources
|
|
||||||
import requests
|
|
||||||
from requests.exceptions import HTTPError
|
from requests.exceptions import HTTPError
|
||||||
from six.moves import queue
|
from six.moves import queue
|
||||||
from six.moves.urllib.parse import unquote
|
from six.moves.urllib.parse import unquote
|
||||||
@ -38,32 +35,7 @@ from sphinx.builders import Builder
|
|||||||
from sphinx.util import encode_uri
|
from sphinx.util import encode_uri
|
||||||
from sphinx.util.console import purple, red, darkgreen, darkgray, \
|
from sphinx.util.console import purple, red, darkgreen, darkgray, \
|
||||||
darkred, turquoise
|
darkred, turquoise
|
||||||
|
from sphinx.util.requests import requests, useragent_header
|
||||||
try:
|
|
||||||
pkg_resources.require(['requests[security]'])
|
|
||||||
except pkg_resources.DistributionNotFound:
|
|
||||||
import ssl
|
|
||||||
if not getattr(ssl, 'HAS_SNI', False):
|
|
||||||
# don't complain on each url processed about the SSL issue
|
|
||||||
requests.packages.urllib3.disable_warnings(
|
|
||||||
requests.packages.urllib3.exceptions.InsecurePlatformWarning)
|
|
||||||
warnings.warn(
|
|
||||||
'Some links may return broken results due to being unable to '
|
|
||||||
'check the Server Name Indication (SNI) in the returned SSL cert '
|
|
||||||
'against the hostname in the url requested. Recommended to '
|
|
||||||
'install "requests[security]" as a dependency or upgrade to '
|
|
||||||
'a python version with SNI support (Python 3 and Python 2.7.9+).'
|
|
||||||
)
|
|
||||||
except pkg_resources.UnknownExtra:
|
|
||||||
warnings.warn(
|
|
||||||
'Some links may return broken results due to being unable to '
|
|
||||||
'check the Server Name Indication (SNI) in the returned SSL cert '
|
|
||||||
'against the hostname in the url requested. Recommended to '
|
|
||||||
'install requests-2.4.1+.'
|
|
||||||
)
|
|
||||||
|
|
||||||
requests_user_agent = [('User-agent', 'Mozilla/5.0 (X11; Linux x86_64; rv:25.0) '
|
|
||||||
'Gecko/20100101 Firefox/25.0')]
|
|
||||||
|
|
||||||
|
|
||||||
class AnchorCheckParser(HTMLParser):
|
class AnchorCheckParser(HTMLParser):
|
||||||
@ -118,7 +90,7 @@ class CheckExternalLinksBuilder(Builder):
|
|||||||
open(path.join(self.outdir, 'output.txt'), 'w').close()
|
open(path.join(self.outdir, 'output.txt'), 'w').close()
|
||||||
|
|
||||||
self.session = requests.Session()
|
self.session = requests.Session()
|
||||||
self.session.headers = dict(requests_user_agent)
|
self.session.headers = dict(useragent_header)
|
||||||
|
|
||||||
# create queues and worker threads
|
# create queues and worker threads
|
||||||
self.wqueue = queue.Queue()
|
self.wqueue = queue.Queue()
|
||||||
|
43
sphinx/util/requests.py
Normal file
43
sphinx/util/requests.py
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""
|
||||||
|
sphinx.util.requests
|
||||||
|
~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Simple requests package loader
|
||||||
|
|
||||||
|
:copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
|
||||||
|
:license: BSD, see LICENSE for details.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import absolute_import
|
||||||
|
|
||||||
|
import requests
|
||||||
|
import warnings
|
||||||
|
import pkg_resources
|
||||||
|
|
||||||
|
# try to load requests[security]
|
||||||
|
try:
|
||||||
|
pkg_resources.require(['requests[security]'])
|
||||||
|
except pkg_resources.DistributionNotFound:
|
||||||
|
import ssl
|
||||||
|
if not getattr(ssl, 'HAS_SNI', False):
|
||||||
|
# don't complain on each url processed about the SSL issue
|
||||||
|
requests.packages.urllib3.disable_warnings(
|
||||||
|
requests.packages.urllib3.exceptions.InsecurePlatformWarning)
|
||||||
|
warnings.warn(
|
||||||
|
'Some links may return broken results due to being unable to '
|
||||||
|
'check the Server Name Indication (SNI) in the returned SSL cert '
|
||||||
|
'against the hostname in the url requested. Recommended to '
|
||||||
|
'install "requests[security]" as a dependency or upgrade to '
|
||||||
|
'a python version with SNI support (Python 3 and Python 2.7.9+).'
|
||||||
|
)
|
||||||
|
except pkg_resources.UnknownExtra:
|
||||||
|
warnings.warn(
|
||||||
|
'Some links may return broken results due to being unable to '
|
||||||
|
'check the Server Name Indication (SNI) in the returned SSL cert '
|
||||||
|
'against the hostname in the url requested. Recommended to '
|
||||||
|
'install requests-2.4.1+.'
|
||||||
|
)
|
||||||
|
|
||||||
|
useragent_header = [('User-agent',
|
||||||
|
'Mozilla/5.0 (X11; Linux x86_64; rv:25.0) Gecko/20100101 Firefox/25.0')]
|
Loading…
Reference in New Issue
Block a user