File: requires_internet.py

package info (click to toggle)
python-biopython 1.45-3
  • links: PTS, VCS
  • area: main
  • in suites: lenny
  • size: 18,192 kB
  • ctags: 12,310
  • sloc: python: 83,505; xml: 13,834; ansic: 7,015; cpp: 1,855; sql: 1,144; makefile: 179
file content (35 lines) | stat: -rw-r--r-- 1,163 bytes parent folder | download
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
# MissingExternalDependencyError exception.

from Bio import MissingExternalDependencyError 

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 MissingExternalDependencyError("internet not available")