summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2017-05-02 15:26:50 +0200
committerMichał Górny <mgorny@gentoo.org>2017-05-02 16:01:01 +0200
commit5b7c19ec6a851b706bc26fe8352934de3291cc87 (patch)
tree6728901720bdd994f3e77414d7668cb7a6b7ad01 /dev-python
parentfaeb8cb8c2461964c726c0fc9a51d7195e00380e (diff)
downloadgentoo-5b7c19ec6a851b706bc26fe8352934de3291cc87.tar.gz
gentoo-5b7c19ec6a851b706bc26fe8352934de3291cc87.tar.bz2
gentoo-5b7c19ec6a851b706bc26fe8352934de3291cc87.zip
dev-python/paste: Clean old versions up
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/paste/Manifest2
-rw-r--r--dev-python/paste/files/paste-1.7.5.1-email-mime.patch19
-rw-r--r--dev-python/paste/files/paste-1.7.5.1-fix-tests-for-pypy.patch24
-rw-r--r--dev-python/paste/files/paste-1.7.5.1-hmac.patch11
-rw-r--r--dev-python/paste/files/paste-1.7.5.1-python27-lambda.patch12
-rw-r--r--dev-python/paste/files/paste-1.7.5.1-rfc822.patch14
-rw-r--r--dev-python/paste/files/paste-1.7.5.1-types.patch57
-rw-r--r--dev-python/paste/files/paste-1.7.5.1-unbundle-stdlib.patch1211
-rw-r--r--dev-python/paste/files/paste-1.7.5.1-unbundle-tempita.patch1860
-rw-r--r--dev-python/paste/files/paste-1.7.5.1-userdict.patch64
-rw-r--r--dev-python/paste/files/paste-2.0.2-unbundle-tempita.patch36
-rw-r--r--dev-python/paste/paste-1.7.5.1-r1.ebuild68
-rw-r--r--dev-python/paste/paste-1.7.5.1-r2.ebuild81
-rw-r--r--dev-python/paste/paste-2.0.2.ebuild72
14 files changed, 0 insertions, 3531 deletions
diff --git a/dev-python/paste/Manifest b/dev-python/paste/Manifest
index 5c3ad8466e3c..1f740ff2cc66 100644
--- a/dev-python/paste/Manifest
+++ b/dev-python/paste/Manifest
@@ -1,3 +1 @@
-DIST Paste-1.7.5.1.tar.gz 523304 SHA256 11645842ba8ec986ae8cfbe4c6cacff5c35f0f4527abf4f5581ae8b4ad49c0b6 SHA512 058a86dec41f132c22b14f3bc882d9c02c04bb0cc9ea5fc5371911698c3d7a89859742a4b806ad388c7fe37289b816db16c50bce21f56c8371293c4d91b5ccb6 WHIRLPOOL 5928a6f20c136a77576b653df34337f1eb110845b8d53d7637eeb6c792fe7f10fe622adefec382378aef16c1abee91c37e90e5fe17dbaa07046681a393f6c5c8
-DIST Paste-2.0.2.tar.gz 627842 SHA256 adac3ac893a2dac6b8ffd49901377dd6819e05be3436b374d698641071daba99 SHA512 32eddeab1bab9d0b1a30848d89613b40ed02a77912f7ef5a86880e1c1a860c5637cd45114bd58cc5ac84410a569ede67e6ebd7afd2007c588433d54d6940f529 WHIRLPOOL 08c997079e632b92e592211d942298235228ec22b997d549f608552f139a941cdd47a5c2da859867c279cab0ad7f388823f1af163ed7ea8aeaaa7558407e3750
DIST Paste-2.0.3.tar.gz 643935 SHA256 2346a347824c32641bf020c17967b49ae74d3310ec1bc9b958d4b84e2d985218 SHA512 174b06d77bc6e1d4079e8de7df40412ffda098364efd4e3f915f858be1188c8a6fb546fe4ab981ccc067ec77b7171083b2469e7db6fc3b777d5a24151c928362 WHIRLPOOL 0aa15c2c6ffdbf965f3763d296e28c75337d9e582ad8623d70a9a4df572457247d583682b7ecddc5206b1a997f22e4f46f68b013a1ca646b0d6d08559ac1447e
diff --git a/dev-python/paste/files/paste-1.7.5.1-email-mime.patch b/dev-python/paste/files/paste-1.7.5.1-email-mime.patch
deleted file mode 100644
index 4c06997b0809..000000000000
--- a/dev-python/paste/files/paste-1.7.5.1-email-mime.patch
+++ /dev/null
@@ -1,19 +0,0 @@
---- a/paste/exceptions/reporter.py
-+++ b/paste/exceptions/reporter.py
-@@ -1,8 +1,14 @@
- # (c) 2005 Ian Bicking and contributors; written for Paste (http://pythonpaste.org)
- # Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
-
--from email.MIMEText import MIMEText
--from email.MIMEMultipart import MIMEMultipart
-+try:
-+ from email.MIMEText import MIMEText
-+except:
-+ from email.mime.text import MIMEText
-+try:
-+ from email.MIMEMultipart import MIMEMultipart
-+except:
-+ from email.mime.multipart import MIMEMultipart
- import smtplib
- import time
- try:
diff --git a/dev-python/paste/files/paste-1.7.5.1-fix-tests-for-pypy.patch b/dev-python/paste/files/paste-1.7.5.1-fix-tests-for-pypy.patch
deleted file mode 100644
index b5e9430c3bb9..000000000000
--- a/dev-python/paste/files/paste-1.7.5.1-fix-tests-for-pypy.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-Ignore the exception detail for two exceptions that are slightly
-different on pypy.
-
-diff -r 7f90a96378ed tests/test_template.txt
---- a/tests/test_template.txt Mon Mar 05 21:14:08 2012 +0100
-+++ b/tests/test_template.txt Wed May 16 23:29:46 2012 +0200
-@@ -6,7 +6,7 @@
- 'Hi Ian'
- >>> Template('Hi {{repr(name)}}').substitute(name='Ian')
- "Hi 'Ian'"
-- >>> Template('Hi {{name+1}}').substitute(name='Ian')
-+ >>> Template('Hi {{name+1}}').substitute(name='Ian') #doctest: +IGNORE_EXCEPTION_DETAIL
- Traceback (most recent call last):
- ...
- TypeError: cannot concatenate 'str' and 'int' objects at line 1 column 6
-@@ -125,7 +125,7 @@
- >>> sub('{{default x=1}}{{x}}')
- '1'
- >>> # The normal case:
-- >>> sub('{{x}}')
-+ >>> sub('{{x}}') #doctest: +IGNORE_EXCEPTION_DETAIL
- Traceback (most recent call last):
- ...
- NameError: name 'x' is not defined at line 1 column 3
diff --git a/dev-python/paste/files/paste-1.7.5.1-hmac.patch b/dev-python/paste/files/paste-1.7.5.1-hmac.patch
deleted file mode 100644
index c86d0f977cfe..000000000000
--- a/dev-python/paste/files/paste-1.7.5.1-hmac.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/paste/auth/cookie.py
-+++ b/paste/auth/cookie.py
-@@ -52,7 +52,7 @@
-
- def make_time(value):
- return time.strftime("%Y%m%d%H%M", time.gmtime(value))
--_signature_size = len(hmac.new('x', 'x', sha1).digest())
-+_signature_size = len(hmac.new(b'x', b'x', sha1).digest())
- _header_size = _signature_size + len(make_time(time.time()))
-
- # @@: Should this be using urllib.quote?
diff --git a/dev-python/paste/files/paste-1.7.5.1-python27-lambda.patch b/dev-python/paste/files/paste-1.7.5.1-python27-lambda.patch
deleted file mode 100644
index 91dcad137153..000000000000
--- a/dev-python/paste/files/paste-1.7.5.1-python27-lambda.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -r 30425672adf7 paste/auth/cookie.py
---- a/paste/auth/cookie.py Wed Jun 23 17:15:45 2010 -0500
-+++ b/paste/auth/cookie.py Mon Aug 02 20:06:43 2010 -0700
-@@ -62,7 +62,7 @@
- _decode = [(v, k) for (k, v) in _encode]
- _decode.reverse()
- def encode(s, sublist = _encode):
-- return reduce((lambda a, (b, c): a.replace(b, c)), sublist, str(s))
-+ return reduce((lambda a, b: a.replace(b[0], b[1])), sublist, str(s))
- decode = lambda s: encode(s, _decode)
-
- class CookieTooLarge(RuntimeError):
diff --git a/dev-python/paste/files/paste-1.7.5.1-rfc822.patch b/dev-python/paste/files/paste-1.7.5.1-rfc822.patch
deleted file mode 100644
index e0950fcaabef..000000000000
--- a/dev-python/paste/files/paste-1.7.5.1-rfc822.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- a/paste/httpheaders.py
-+++ b/paste/httpheaders.py
-@@ -137,7 +137,10 @@
- import mimetypes
- import urllib2
- import re
--from rfc822 import formatdate, parsedate_tz, mktime_tz
-+try:
-+ from rfc822 import formatdate, parsedate_tz, mktime_tz
-+except ImportError:
-+ from email.utils import formatdate, parsedate_tz, mktime_tz
- from time import time as now
- from httpexceptions import HTTPBadRequest
-
diff --git a/dev-python/paste/files/paste-1.7.5.1-types.patch b/dev-python/paste/files/paste-1.7.5.1-types.patch
deleted file mode 100644
index 87ea53c39648..000000000000
--- a/dev-python/paste/files/paste-1.7.5.1-types.patch
+++ /dev/null
@@ -1,57 +0,0 @@
---- a/paste/lint.py
-+++ b/paste/lint.py
-@@ -111,7 +111,6 @@
-
- import re
- import sys
--from types import DictType, StringType, TupleType, ListType
- import warnings
-
- header_re = re.compile(r'^[a-zA-Z][a-zA-Z0-9\-_]*$')
-@@ -282,7 +281,7 @@
- "Iterator garbage collected without being closed")
-
- def check_environ(environ):
-- assert type(environ) is DictType, (
-+ assert isinstance(environ,dict), (
- "Environment is not of the right type: %r (environment: %r)"
- % (type(environ), environ))
-
-@@ -309,11 +308,11 @@
- if '.' in key:
- # Extension, we don't care about its type
- continue
-- assert type(environ[key]) is StringType, (
-+ assert isinstance(environ[key], str), (
- "Environmental variable %s is not a string: %r (value: %r)"
- % (key, type(environ[key]), environ[key]))
-
-- assert type(environ['wsgi.version']) is TupleType, (
-+ assert isinstance(environ['wsgi.version'], tuple), (
- "wsgi.version should be a tuple (%r)" % environ['wsgi.version'])
- assert environ['wsgi.url_scheme'] in ('http', 'https'), (
- "wsgi.url_scheme unknown: %r" % environ['wsgi.url_scheme'])
-@@ -359,7 +358,7 @@
- % (wsgi_errors, attr))
-
- def check_status(status):
-- assert type(status) is StringType, (
-+ assert isinstance(status, str), (
- "Status must be a string (not %r)" % status)
- # Implicitly check that we can turn it into an integer:
- status_code = status.split(None, 1)[0]
-@@ -374,12 +373,12 @@
- % status, WSGIWarning)
-
- def check_headers(headers):
-- assert type(headers) is ListType, (
-+ assert isinstance(headers,list), (
- "Headers (%r) must be of type list: %r"
- % (headers, type(headers)))
- header_names = {}
- for item in headers:
-- assert type(item) is TupleType, (
-+ assert isinstance(item, tuple), (
- "Individual headers (%r) must be of type tuple: %r"
- % (item, type(item)))
- assert len(item) == 2
diff --git a/dev-python/paste/files/paste-1.7.5.1-unbundle-stdlib.patch b/dev-python/paste/files/paste-1.7.5.1-unbundle-stdlib.patch
deleted file mode 100644
index b389df2482c7..000000000000
--- a/dev-python/paste/files/paste-1.7.5.1-unbundle-stdlib.patch
+++ /dev/null
@@ -1,1211 +0,0 @@
---- a/paste/debug/fsdiff.py
-+++ b/paste/debug/fsdiff.py
-@@ -12,7 +12,10 @@
- import os
- from fnmatch import fnmatch
- from datetime import datetime
--from paste.util.UserDict24 import IterableUserDict
-+try:
-+ from UserDict import IterableUserDict
-+except ImportError:
-+ from paste.util.UserDict24 import IterableUserDict
- import operator
- import re
-
---- a/paste/debug/doctest_webapp.py
-+++ b/paste/debug/doctest_webapp.py
-@@ -8,10 +8,7 @@
- These are functions for use when doctest-testing a document.
- """
-
--try:
-- import subprocess
--except ImportError:
-- from paste.util import subprocess24 as subprocess
-+import subprocess
- import doctest
- import os
- import sys
---- a/paste/debug/wdg_validate.py
-+++ b/paste/debug/wdg_validate.py
-@@ -6,10 +6,7 @@
- """
-
- from cStringIO import StringIO
--try:
-- import subprocess
--except ImportError:
-- from paste.util import subprocess24 as subprocess
-+import subprocess
- from paste.response import header_value
- import re
- import cgi
---- a/paste/fixture.py
-+++ b/paste/fixture.py
-@@ -26,10 +26,7 @@
- except ImportError:
- from StringIO import StringIO
- import re
--try:
-- import subprocess
--except ImportError:
-- from paste.util import subprocess24 as subprocess
-+import subprocess
-
- from paste import wsgilib
- from paste import lint
---- a/paste/util/subprocess24.py
-+++ /dev/null
-@@ -1,1152 +0,0 @@
--# subprocess - Subprocesses with accessible I/O streams
--#
--# For more information about this module, see PEP 324.
--#
--# This module should remain compatible with Python 2.2, see PEP 291.
--#
--# Copyright (c) 2003-2005 by Peter Astrand <astrand@lysator.liu.se>
--#
--# Licensed to PSF under a Contributor Agreement.
--# See http://www.python.org/2.4/license for licensing details.
--
--r"""subprocess - Subprocesses with accessible I/O streams
--
--This module allows you to spawn processes, connect to their
--input/output/error pipes, and obtain their return codes. This module
--intends to replace several other, older modules and functions, like:
--
--os.system
--os.spawn*
--os.popen*
--popen2.*
--commands.*
--
--Information about how the subprocess module can be used to replace these
--modules and functions can be found below.
--
--
--
--Using the subprocess module
--===========================
--This module defines one class called Popen:
--
--class Popen(args, bufsize=0, executable=None,
-- stdin=None, stdout=None, stderr=None,
-- preexec_fn=None, close_fds=False, shell=False,
-- cwd=None, env=None, universal_newlines=False,
-- startupinfo=None, creationflags=0):
--
--
--Arguments are:
--
--args should be a string, or a sequence of program arguments. The
--program to execute is normally the first item in the args sequence or
--string, but can be explicitly set by using the executable argument.
--
--On UNIX, with shell=False (default): In this case, the Popen class
--uses os.execvp() to execute the child program. args should normally
--be a sequence. A string will be treated as a sequence with the string
--as the only item (the program to execute).
--
--On UNIX, with shell=True: If args is a string, it specifies the
--command string to execute through the shell. If args is a sequence,
--the first item specifies the command string, and any additional items
--will be treated as additional shell arguments.
--
--On Windows: the Popen class uses CreateProcess() to execute the child
--program, which operates on strings. If args is a sequence, it will be
--converted to a string using the list2cmdline method. Please note that
--not all MS Windows applications interpret the command line the same
--way: The list2cmdline is designed for applications using the same
--rules as the MS C runtime.
--
--bufsize, if given, has the same meaning as the corresponding argument
--to the built-in open() function: 0 means unbuffered, 1 means line
--buffered, any other positive value means use a buffer of
--(approximately) that size. A negative bufsize means to use the system
--default, which usually means fully buffered. The default value for
--bufsize is 0 (unbuffered).
--
--stdin, stdout and stderr specify the executed programs' standard
--input, standard output and standard error file handles, respectively.
--Valid values are PIPE, an existing file descriptor (a positive
--integer), an existing file object, and None. PIPE indicates that a
--new pipe to the child should be created. With None, no redirection
--will occur; the child's file handles will be inherited from the
--parent. Additionally, stderr can be STDOUT, which indicates that the
--stderr data from the applications should be captured into the same
--file handle as for stdout.
--
--If preexec_fn is set to a callable object, this object will be called
--in the child process just before the child is executed.
--
--If close_fds is true, all file descriptors except 0, 1 and 2 will be
--closed before the child process is executed.
--
--if shell is true, the specified command will be executed through the
--shell.
--
--If cwd is not None, the current directory will be changed to cwd
--before the child is executed.
--
--If env is not None, it defines the environment variables for the new
--process.
--
--If universal_newlines is true, the file objects stdout and stderr are
--opened as a text files, but lines may be terminated by any of '\n',
--the Unix end-of-line convention, '\r', the Macintosh convention or
--'\r\n', the Windows convention. All of these external representations
--are seen as '\n' by the Python program. Note: This feature is only
--available if Python is built with universal newline support (the
--default). Also, the newlines attribute of the file objects stdout,
--stdin and stderr are not updated by the communicate() method.
--
--The startupinfo and creationflags, if given, will be passed to the
--underlying CreateProcess() function. They can specify things such as
--appearance of the main window and priority for the new process.
--(Windows only)
--
--
--This module also defines two shortcut functions:
--
--call(*args, **kwargs):
-- Run command with arguments. Wait for command to complete, then
-- return the returncode attribute. The arguments are the same as for
-- the Popen constructor. Example:
--
-- retcode = call(["ls", "-l"])
--
--
--Exceptions
------------
--Exceptions raised in the child process, before the new program has
--started to execute, will be re-raised in the parent. Additionally,
--the exception object will have one extra attribute called
--'child_traceback', which is a string containing traceback information
--from the childs point of view.
--
--The most common exception raised is OSError. This occurs, for
--example, when trying to execute a non-existent file. Applications
--should prepare for OSErrors.
--
--A ValueError will be raised if Popen is called with invalid arguments.
--
--
--Security
----------
--Unlike some other popen functions, this implementation will never call
--/bin/sh implicitly. This means that all characters, including shell
--metacharacters, can safely be passed to child processes.
--
--
--Popen objects
--=============
--Instances of the Popen class have the following methods:
--
--poll()
-- Check if child process has terminated. Returns returncode
-- attribute.
--
--wait()
-- Wait for child process to terminate. Returns returncode attribute.
--
--communicate(input=None)
-- Interact with process: Send data to stdin. Read data from stdout
-- and stderr, until end-of-file is reached. Wait for process to
-- terminate. The optional stdin argument should be a string to be
-- sent to the child process, or None, if no data should be sent to
-- the child.
--
-- communicate() returns a tuple (stdout, stderr).
--
-- Note: The data read is buffered in memory, so do not use this
-- method if the data size is large or unlimited.
--
--The following attributes are also available:
--
--stdin
-- If the stdin argument is PIPE, this attribute is a file object
-- that provides input to the child process. Otherwise, it is None.
--
--stdout
-- If the stdout argument is PIPE, this attribute is a file object
-- that provides output from the child process. Otherwise, it is
-- None.
--
--stderr
-- If the stderr argument is PIPE, this attribute is file object that
-- provides error output from the child process. Otherwise, it is
-- None.
--
--pid
-- The process ID of the child process.
--
--returncode
-- The child return code. A None value indicates that the process
-- hasn't terminated yet. A negative value -N indicates that the
-- child was terminated by signal N (UNIX only).
--
--
--Replacing older functions with the subprocess module
--====================================================
--In this section, "a ==> b" means that b can be used as a replacement
--for a.
--
--Note: All functions in this section fail (more or less) silently if
--the executed program cannot be found; this module raises an OSError
--exception.
--
--In the following examples, we assume that the subprocess module is
--imported with "from subprocess import *".
--
--
--Replacing /bin/sh shell backquote
-----------------------------------
--output=`mycmd myarg`
--==>
--output = Popen(["mycmd", "myarg"], stdout=PIPE).communicate()[0]
--
--
--Replacing shell pipe line
---------------------------
--output=`dmesg | grep hda`
--==>
--p1 = Popen(["dmesg"], stdout=PIPE)
--p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE)
--output = p2.communicate()[0]
--
--
--Replacing os.system()
-----------------------
--sts = os.system("mycmd" + " myarg")
--==>
--p = Popen("mycmd" + " myarg", shell=True)
--sts = os.waitpid(p.pid, 0)
--
--Note:
--
--* Calling the program through the shell is usually not required.
--
--* It's easier to look at the returncode attribute than the
-- exitstatus.
--
--A more real-world example would look like this:
--
--try:
-- retcode = call("mycmd" + " myarg", shell=True)
-- if retcode < 0:
-- print >>sys.stderr, "Child was terminated by signal", -retcode
-- else:
-- print >>sys.stderr, "Child returned", retcode
--except OSError, e:
-- print >>sys.stderr, "Execution failed:", e
--
--
--Replacing os.spawn*
---------------------
--P_NOWAIT example:
--
--pid = os.spawnlp(os.P_NOWAIT, "/bin/mycmd", "mycmd", "myarg")
--==>
--pid = Popen(["/bin/mycmd", "myarg"]).pid
--
--
--P_WAIT example:
--
--retcode = os.spawnlp(os.P_WAIT, "/bin/mycmd", "mycmd", "myarg")
--==>
--retcode = call(["/bin/mycmd", "myarg"])
--
--
--Vector example:
--
--os.spawnvp(os.P_NOWAIT, path, args)
--==>
--Popen([path] + args[1:])
--
--
--Environment example:
--
--os.spawnlpe(os.P_NOWAIT, "/bin/mycmd", "mycmd", "myarg", env)
--==>
--Popen(["/bin/mycmd", "myarg"], env={"PATH": "/usr/bin"})
--
--
--Replacing os.popen*
---------------------
--pipe = os.popen(cmd, mode='r', bufsize)
--==>
--pipe = Popen(cmd, shell=True, bufsize=bufsize, stdout=PIPE).stdout
--
--pipe = os.popen(cmd, mode='w', bufsize)
--==>
--pipe = Popen(cmd, shell=True, bufsize=bufsize, stdin=PIPE).stdin
--
--
--(child_stdin, child_stdout) = os.popen2(cmd, mode, bufsize)
--==>
--p = Popen(cmd, shell=True, bufsize=bufsize,
-- stdin=PIPE, stdout=PIPE, close_fds=True)
--(child_stdin, child_stdout) = (p.stdin, p.stdout)
--
--
--(child_stdin,
-- child_stdout,
-- child_stderr) = os.popen3(cmd, mode, bufsize)
--==>
--p = Popen(cmd, shell=True, bufsize=bufsize,
-- stdin=PIPE, stdout=PIPE, stderr=PIPE, close_fds=True)
--(child_stdin,
-- child_stdout,
-- child_stderr) = (p.stdin, p.stdout, p.stderr)
--
--
--(child_stdin, child_stdout_and_stderr) = os.popen4(cmd, mode, bufsize)
--==>
--p = Popen(cmd, shell=True, bufsize=bufsize,
-- stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True)
--(child_stdin, child_stdout_and_stderr) = (p.stdin, p.stdout)
--
--
--Replacing popen2.*
--------------------
--Note: If the cmd argument to popen2 functions is a string, the command
--is executed through /bin/sh. If it is a list, the command is directly
--executed.
--
--(child_stdout, child_stdin) = popen2.popen2("somestring", bufsize, mode)
--==>
--p = Popen(["somestring"], shell=True, bufsize=bufsize
-- stdin=PIPE, stdout=PIPE, close_fds=True)
--(child_stdout, child_stdin) = (p.stdout, p.stdin)
--
--
--(child_stdout, child_stdin) = popen2.popen2(["mycmd", "myarg"], bufsize, mode)
--==>
--p = Popen(["mycmd", "myarg"], bufsize=bufsize,
-- stdin=PIPE, stdout=PIPE, close_fds=True)
--(child_stdout, child_stdin) = (p.stdout, p.stdin)
--
--The popen2.Popen3 and popen3.Popen4 basically works as subprocess.Popen,
--except that:
--
--* subprocess.Popen raises an exception if the execution fails
--* the capturestderr argument is replaced with the stderr argument.
--* stdin=PIPE and stdout=PIPE must be specified.
--* popen2 closes all filedescriptors by default, but you have to specify
-- close_fds=True with subprocess.Popen.
--
--
--"""
--
--import sys
--mswindows = (sys.platform == "win32")
--
--import os
--import types
--import traceback
--
--if mswindows:
-- import threading
-- import msvcrt
-- ## @@: Changed in Paste
-- ## Since this module is only used on pre-python-2.4 systems, they probably
-- ## don't have _subprocess installed, but hopefully have the win32 stuff
-- ## installed.
-- if 1: # <-- change this to use pywin32 instead of the _subprocess driver
-- import pywintypes
-- from win32api import GetStdHandle, STD_INPUT_HANDLE, \
-- STD_OUTPUT_HANDLE, STD_ERROR_HANDLE
-- from win32api import GetCurrentProcess, DuplicateHandle, \
-- GetModuleFileName, GetVersion
-- from win32con import DUPLICATE_SAME_ACCESS, SW_HIDE
-- from win32pipe import CreatePipe
-- from win32process import CreateProcess, STARTUPINFO, \
-- GetExitCodeProcess, STARTF_USESTDHANDLES, \
-- STARTF_USESHOWWINDOW, CREATE_NEW_CONSOLE
-- from win32event import WaitForSingleObject, INFINITE, WAIT_OBJECT_0
-- else:
-- from _subprocess import *
-- class STARTUPINFO:
-- dwFlags = 0
-- hStdInput = None
-- hStdOutput = None
-- hStdError = None
-- class pywintypes:
-- error = IOError
--else:
-- import select
-- import errno
-- import fcntl
-- import pickle
--
--__all__ = ["Popen", "PIPE", "STDOUT", "call"]
--
--try:
-- MAXFD = os.sysconf("SC_OPEN_MAX")
--except:
-- MAXFD = 256
--
--# True/False does not exist on 2.2.0
--try:
-- False
--except NameError:
-- False = 0
-- True = 1
--
--_active = []
--
--def _cleanup():
-- for inst in _active[:]:
-- inst.poll()
--
--PIPE = -1
--STDOUT = -2
--
--
--def call(*args, **kwargs):
-- """Run command with arguments. Wait for command to complete, then
-- return the returncode attribute.
--
-- The arguments are the same as for the Popen constructor. Example:
--
-- retcode = call(["ls", "-l"])
-- """
-- return Popen(*args, **kwargs).wait()
--
--
--def list2cmdline(seq):
-- """
-- Translate a sequence of arguments into a command line
-- string, using the same rules as the MS C runtime:
--
-- 1) Arguments are delimited by white space, which is either a
-- space or a tab.
--
-- 2) A string surrounded by double quotation marks is
-- interpreted as a single argument, regardless of white space
-- contained within. A quoted string can be embedded in an
-- argument.
--
-- 3) A double quotation mark preceded by a backslash is
-- interpreted as a literal double quotation mark.
--
-- 4) Backslashes are interpreted literally, unless they
-- immediately precede a double quotation mark.
--
-- 5) If backslashes immediately precede a double quotation mark,
-- every pair of backslashes is interpreted as a literal
-- backslash. If the number of backslashes is odd, the last
-- backslash escapes the next double quotation mark as
-- described in rule 3.
-- """
--
-- # See
-- # http://msdn.microsoft.com/library/en-us/vccelng/htm/progs_12.asp
-- result = []
-- needquote = False
-- for arg in seq:
-- bs_buf = []
--
-- # Add a space to separate this argument from the others
-- if result:
-- result.append(' ')
--
-- needquote = (" " in arg) or ("\t" in arg)
-- if needquote:
-- result.append('"')
--
-- for c in arg:
-- if c == '\\':
-- # Don't know if we need to double yet.
-- bs_buf.append(c)
-- elif c == '"':
-- # Double backspaces.
-- result.append('\\' * len(bs_buf)*2)
-- bs_buf = []
-- result.append('\\"')
-- else:
-- # Normal char
-- if bs_buf:
-- result.extend(bs_buf)
-- bs_buf = []
-- result.append(c)
--
-- # Add remaining backspaces, if any.
-- if bs_buf:
-- result.extend(bs_buf)
--
-- if needquote:
-- result.extend(bs_buf)
-- result.append('"')
--
-- return ''.join(result)
--
--
--class Popen(object):
-- def __init__(self, args, bufsize=0, executable=None,
-- stdin=None, stdout=None, stderr=None,
-- preexec_fn=None, close_fds=False, shell=False,
-- cwd=None, env=None, universal_newlines=False,
-- startupinfo=None, creationflags=0):
-- """Create new Popen instance."""
-- _cleanup()
--
-- if not isinstance(bufsize, (int, long)):
-- raise TypeError("bufsize must be an integer")
--
-- if mswindows:
-- if preexec_fn is not None:
-- raise ValueError("preexec_fn is not supported on Windows "
-- "platforms")
-- if close_fds:
-- raise ValueError("close_fds is not supported on Windows "
-- "platforms")
-- else:
-- # POSIX
-- if startupinfo is not None:
-- raise ValueError("startupinfo is only supported on Windows "
-- "platforms")
-- if creationflags != 0:
-- raise ValueError("creationflags is only supported on Windows "
-- "platforms")
--
-- self.stdin = None
-- self.stdout = None
-- self.stderr = None
-- self.pid = None
-- self.returncode = None
-- self.universal_newlines = universal_newlines
--
-- # Input and output objects. The general principle is like
-- # this:
-- #
-- # Parent Child
-- # ------ -----
-- # p2cwrite ---stdin---> p2cread
-- # c2pread <--stdout--- c2pwrite
-- # errread <--stderr--- errwrite
-- #
-- # On POSIX, the child objects are file descriptors. On
-- # Windows, these are Windows file handles. The parent objects
-- # are file descriptors on both platforms. The parent objects
-- # are None when not using PIPEs. The child objects are None
-- # when not redirecting.
--
-- (p2cread, p2cwrite,
-- c2pread, c2pwrite,
-- errread, errwrite) = self._get_handles(stdin, stdout, stderr)
--
-- self._execute_child(args, executable, preexec_fn, close_fds,
-- cwd, env, universal_newlines,
-- startupinfo, creationflags, shell,
-- p2cread, p2cwrite,
-- c2pread, c2pwrite,
-- errread, errwrite)
--
-- if p2cwrite:
-- self.stdin = os.fdopen(p2cwrite, 'wb', bufsize)
-- if c2pread:
-- if universal_newlines:
-- self.stdout = os.fdopen(c2pread, 'rU', bufsize)
-- else:
-- self.stdout = os.fdopen(c2pread, 'rb', bufsize)
-- if errread:
-- if universal_newlines:
-- self.stderr = os.fdopen(errread, 'rU', bufsize)
-- else:
-- self.stderr = os.fdopen(errread, 'rb', bufsize)
--
-- _active.append(self)
--
--
-- def _translate_newlines(self, data):
-- data = data.replace("\r\n", "\n")
-- data = data.replace("\r", "\n")
-- return data
--
--
-- if mswindows:
-- #
-- # Windows methods
-- #
-- def _get_handles(self, stdin, stdout, stderr):
-- """Construct and return tupel with IO objects:
-- p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite
-- """
-- if stdin == None and stdout == None and stderr == None:
-- return (None, None, None, None, None, None)
--
-- p2cread, p2cwrite = None, None
-- c2pread, c2pwrite = None, None
-- errread, errwrite = None, None
--
-- if stdin == None:
-- p2cread = GetStdHandle(STD_INPUT_HANDLE)
-- elif stdin == PIPE:
-- p2cread, p2cwrite = CreatePipe(None, 0)
-- # Detach and turn into fd
-- p2cwrite = p2cwrite.Detach()
-- p2cwrite = msvcrt.open_osfhandle(p2cwrite, 0)
-- elif type(stdin) == types.IntType:
-- p2cread = msvcrt.get_osfhandle(stdin)
-- else:
-- # Assuming file-like object
-- p2cread = msvcrt.get_osfhandle(stdin.fileno())
-- p2cread = self._make_inheritable(p2cread)
--
-- if stdout == None:
-- c2pwrite = GetStdHandle(STD_OUTPUT_HANDLE)
-- elif stdout == PIPE:
-- c2pread, c2pwrite = CreatePipe(None, 0)
-- # Detach and turn into fd
-- c2pread = c2pread.Detach()
-- c2pread = msvcrt.open_osfhandle(c2pread, 0)
-- elif type(stdout) == types.IntType:
-- c2pwrite = msvcrt.get_osfhandle(stdout)
-- else:
-- # Assuming file-like object
-- c2pwrite = msvcrt.get_osfhandle(stdout.fileno())
-- c2pwrite = self._make_inheritable(c2pwrite)
--
-- if stderr == None:
-- errwrite = GetStdHandle(STD_ERROR_HANDLE)
-- elif stderr == PIPE:
-- errread, errwrite = CreatePipe(None, 0)
-- # Detach and turn into fd
-- errread = errread.Detach()
-- errread = msvcrt.open_osfhandle(errread, 0)
-- elif stderr == STDOUT:
-- errwrite = c2pwrite
-- elif type(stderr) == types.IntType:
-- errwrite = msvcrt.get_osfhandle(stderr)
-- else:
-- # Assuming file-like object
-- errwrite = msvcrt.get_osfhandle(stderr.fileno())
-- errwrite = self._make_inheritable(errwrite)
--
-- return (p2cread, p2cwrite,
-- c2pread, c2pwrite,
-- errread, errwrite)
--
--
-- def _make_inheritable(self, handle):
-- """Return a duplicate of handle, which is inheritable"""
-- return DuplicateHandle(GetCurrentProcess(), handle,
-- GetCurrentProcess(), 0, 1,
-- DUPLICATE_SAME_ACCESS)
--
--
-- def _find_w9xpopen(self):
-- """Find and return absolut path to w9xpopen.exe"""
-- w9xpopen = os.path.join(os.path.dirname(GetModuleFileName(0)),
-- "w9xpopen.exe")
-- if not os.path.exists(w9xpopen):
-- # Eeek - file-not-found - possibly an embedding
--