42 except ImportError: |
42 except ImportError: |
43 import sha |
43 import sha |
44 _sha1 = sha.sha |
44 _sha1 = sha.sha |
45 return _sha1(s) |
45 return _sha1(s) |
46 |
46 |
47 try: |
47 import subprocess |
48 import subprocess |
48 closefds = os.name == 'posix' |
49 subprocess.Popen # trigger ImportError early |
49 def popen2(cmd, mode='t', bufsize=-1): |
50 closefds = os.name == 'posix' |
50 p = subprocess.Popen(cmd, shell=True, bufsize=bufsize, |
51 def popen2(cmd, mode='t', bufsize=-1): |
51 close_fds=closefds, |
52 p = subprocess.Popen(cmd, shell=True, bufsize=bufsize, |
52 stdin=subprocess.PIPE, stdout=subprocess.PIPE) |
53 close_fds=closefds, |
53 return p.stdin, p.stdout |
54 stdin=subprocess.PIPE, stdout=subprocess.PIPE) |
54 def popen3(cmd, mode='t', bufsize=-1): |
55 return p.stdin, p.stdout |
55 p = subprocess.Popen(cmd, shell=True, bufsize=bufsize, |
56 def popen3(cmd, mode='t', bufsize=-1): |
56 close_fds=closefds, |
57 p = subprocess.Popen(cmd, shell=True, bufsize=bufsize, |
57 stdin=subprocess.PIPE, stdout=subprocess.PIPE, |
58 close_fds=closefds, |
58 stderr=subprocess.PIPE) |
59 stdin=subprocess.PIPE, stdout=subprocess.PIPE, |
59 return p.stdin, p.stdout, p.stderr |
60 stderr=subprocess.PIPE) |
60 def Popen3(cmd, capturestderr=False, bufsize=-1): |
61 return p.stdin, p.stdout, p.stderr |
61 stderr = capturestderr and subprocess.PIPE or None |
62 def Popen3(cmd, capturestderr=False, bufsize=-1): |
62 p = subprocess.Popen(cmd, shell=True, bufsize=bufsize, |
63 stderr = capturestderr and subprocess.PIPE or None |
63 close_fds=closefds, |
64 p = subprocess.Popen(cmd, shell=True, bufsize=bufsize, |
64 stdin=subprocess.PIPE, stdout=subprocess.PIPE, |
65 close_fds=closefds, |
65 stderr=stderr) |
66 stdin=subprocess.PIPE, stdout=subprocess.PIPE, |
66 p.fromchild = p.stdout |
67 stderr=stderr) |
67 p.tochild = p.stdin |
68 p.fromchild = p.stdout |
68 p.childerr = p.stderr |
69 p.tochild = p.stdin |
69 return p |
70 p.childerr = p.stderr |
|
71 return p |
|
72 except ImportError: |
|
73 subprocess = None |
|
74 from popen2 import Popen3 |
|
75 popen2 = os.popen2 |
|
76 popen3 = os.popen3 |
|
77 |
|
78 |
70 |
79 def version(): |
71 def version(): |
80 """Return version information if available.""" |
72 """Return version information if available.""" |
81 try: |
73 try: |
82 import __version__ |
74 import __version__ |