-
Notifications
You must be signed in to change notification settings - Fork 1.7k
/
requires_internet.py
35 lines (25 loc) · 1.05 KB
/
requires_internet.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# Copyright 2002 by Jeffrey Chang. All rights reserved. This code is
# part of the Biopython distribution and governed by its license.
# Please see the LICENSE file that should have been included as part
# of this package.
# This module attempts to detect whether the internet is available.
# To use it, just insert "import requires_internet" into your Python
# code. If the internet is available, then the import statement
# succeeds. If it is not, then the statement will result in an
# ImportError exception.
AVAILABLE = None # Was the internet available the last time I checked?
TESTED = 0 # Have I checked before? If so, just re-use the result.
# I'm going to check for internet availability
RELIABLE_DOMAIN = "biopython.org"
if not TESTED:
# Not thread-safe...
TESTED = 1
import socket
try:
socket.getaddrinfo(RELIABLE_DOMAIN, 80, socket.AF_UNSPEC, socket.SOCK_STREAM)
except socket.gaierror, x:
AVAILABLE = 0
else:
AVAILABLE = 1
if not AVAILABLE:
raise ImportError, "internet not available"