mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	Demand version 2.5.1 since 2.5 has a bug with codecs.open context managers.
This commit is contained in:
		
							parent
							
								
									1bb124ad0d
								
							
						
					
					
						commit
						fdca6d8599
					
				
					 4 changed files with 60 additions and 9 deletions
				
			
		| 
						 | 
					@ -11,9 +11,9 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if __name__ == '__main__':
 | 
					if __name__ == '__main__':
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if sys.version_info[:3] < (2, 5, 0):
 | 
					    if sys.version_info[:3] < (2, 5, 1):
 | 
				
			||||||
        print >>sys.stderr, """\
 | 
					        print >>sys.stderr, """\
 | 
				
			||||||
Error: Sphinx needs to be executed with Python 2.5 or newer
 | 
					Error: Sphinx needs to be executed with Python 2.5.1 or newer
 | 
				
			||||||
(If you run this from the Makefile, you can set the PYTHON variable
 | 
					(If you run this from the Makefile, you can set the PYTHON variable
 | 
				
			||||||
to the path of an alternative interpreter executable, e.g.,
 | 
					to the path of an alternative interpreter executable, e.g.,
 | 
				
			||||||
``make html PYTHON=python2.5``).
 | 
					``make html PYTHON=python2.5``).
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,6 +9,16 @@
 | 
				
			||||||
                                catch_warning)
 | 
					                                catch_warning)
 | 
				
			||||||
from test.test_pep352 import ignore_message_warning
 | 
					from test.test_pep352 import ignore_message_warning
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class NaiveException(Exception):
 | 
				
			||||||
 | 
					    def __init__(self, x):
 | 
				
			||||||
 | 
					        self.x = x
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class SomewhatNaiveException(Exception):
 | 
				
			||||||
 | 
					    def __init__(self, x):
 | 
				
			||||||
 | 
					        self.x = x
 | 
				
			||||||
 | 
					        Exception.__init__(self)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# XXX This is not really enough, each *operation* should be tested!
 | 
					# XXX This is not really enough, each *operation* should be tested!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class ExceptionTests(unittest.TestCase):
 | 
					class ExceptionTests(unittest.TestCase):
 | 
				
			||||||
| 
						 | 
					@ -263,6 +273,10 @@ def testAttributes(self):
 | 
				
			||||||
                {'message' : '', 'args' : (u'\u3042', 0, 1, 'ouch'),
 | 
					                {'message' : '', 'args' : (u'\u3042', 0, 1, 'ouch'),
 | 
				
			||||||
                 'object' : u'\u3042', 'reason' : 'ouch',
 | 
					                 'object' : u'\u3042', 'reason' : 'ouch',
 | 
				
			||||||
                 'start' : 0, 'end' : 1}),
 | 
					                 'start' : 0, 'end' : 1}),
 | 
				
			||||||
 | 
					            (NaiveException, ('foo',),
 | 
				
			||||||
 | 
					                {'message': '', 'args': ('foo',), 'x': 'foo'}),
 | 
				
			||||||
 | 
					            (SomewhatNaiveException, ('foo',),
 | 
				
			||||||
 | 
					                {'message': '', 'args': (), 'x': 'foo'}),
 | 
				
			||||||
        ]
 | 
					        ]
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            exceptionList.append(
 | 
					            exceptionList.append(
 | 
				
			||||||
| 
						 | 
					@ -283,7 +297,8 @@ def testAttributes(self):
 | 
				
			||||||
                    if type(e) is not exc:
 | 
					                    if type(e) is not exc:
 | 
				
			||||||
                        raise
 | 
					                        raise
 | 
				
			||||||
                    # Verify module name
 | 
					                    # Verify module name
 | 
				
			||||||
                    self.assertEquals(type(e).__module__, 'exceptions')
 | 
					                    if not type(e).__name__.endswith('NaiveException'):
 | 
				
			||||||
 | 
					                        self.assertEquals(type(e).__module__, 'exceptions')
 | 
				
			||||||
                    # Verify no ref leaks in Exc_str()
 | 
					                    # Verify no ref leaks in Exc_str()
 | 
				
			||||||
                    s = str(e)
 | 
					                    s = str(e)
 | 
				
			||||||
                    for checkArgName in expected:
 | 
					                    for checkArgName in expected:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -38,18 +38,31 @@ BaseException_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
 | 
				
			||||||
    /* the dict is created on the fly in PyObject_GenericSetAttr */
 | 
					    /* the dict is created on the fly in PyObject_GenericSetAttr */
 | 
				
			||||||
    self->message = self->dict = NULL;
 | 
					    self->message = self->dict = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    self->args = PyTuple_New(0);
 | 
					    if (!args) {
 | 
				
			||||||
    if (!self->args) {
 | 
					        /* MemoryError instantiation */
 | 
				
			||||||
 | 
					        args = PyTuple_New(0);
 | 
				
			||||||
 | 
					        if (!args) {
 | 
				
			||||||
 | 
					            Py_DECREF(self);
 | 
				
			||||||
 | 
					            return NULL;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        Py_INCREF(args);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    self->args = args;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /* Since the args can be overwritten in __init__, we have to store
 | 
				
			||||||
 | 
					       the original args somewhere for pickling. */
 | 
				
			||||||
 | 
					    if (PyObject_SetAttrString((PyObject *)self, "__newargs__", args) < 0) {
 | 
				
			||||||
        Py_DECREF(self);
 | 
					        Py_DECREF(self);
 | 
				
			||||||
        return NULL;
 | 
					        return NULL;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
    self->message = PyString_FromString("");
 | 
					    self->message = PyString_FromString("");
 | 
				
			||||||
    if (!self->message) {
 | 
					    if (!self->message) {
 | 
				
			||||||
        Py_DECREF(self);
 | 
					        Py_DECREF(self);
 | 
				
			||||||
        return NULL;
 | 
					        return NULL;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					 | 
				
			||||||
    return (PyObject *)self;
 | 
					    return (PyObject *)self;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -147,10 +160,23 @@ BaseException_repr(PyBaseExceptionObject *self)
 | 
				
			||||||
static PyObject *
 | 
					static PyObject *
 | 
				
			||||||
BaseException_reduce(PyBaseExceptionObject *self)
 | 
					BaseException_reduce(PyBaseExceptionObject *self)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    PyObject *result;
 | 
				
			||||||
 | 
					    PyObject *newargs = PyObject_GetAttrString((PyObject *)self, "__newargs__");
 | 
				
			||||||
 | 
					    if (!newargs) {
 | 
				
			||||||
 | 
					        if (PyErr_ExceptionMatches(PyExc_AttributeError)) {
 | 
				
			||||||
 | 
					            PyErr_SetString(PyExc_AttributeError,
 | 
				
			||||||
 | 
					                            "To pickle exceptions via BaseException.__reduce__, "
 | 
				
			||||||
 | 
					                            "you need to set the __newargs__ attribute in your "
 | 
				
			||||||
 | 
					                            "custom __new__ method.");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return NULL;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    if (self->args && self->dict)
 | 
					    if (self->args && self->dict)
 | 
				
			||||||
        return PyTuple_Pack(3, Py_Type(self), self->args, self->dict);
 | 
					        result = PyTuple_Pack(3, Py_Type(self), newargs, self->dict);
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
        return PyTuple_Pack(2, Py_Type(self), self->args);
 | 
					        result = PyTuple_Pack(2, Py_Type(self), newargs);
 | 
				
			||||||
 | 
					    Py_DECREF(newargs);
 | 
				
			||||||
 | 
					    return result;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1395,6 +1395,7 @@ find_module(char *fullname, char *subname, PyObject *path, char *buf,
 | 
				
			||||||
			filemode = fdp->mode;
 | 
								filemode = fdp->mode;
 | 
				
			||||||
			if (filemode[0] == 'U')
 | 
								if (filemode[0] == 'U')
 | 
				
			||||||
				filemode = "r" PY_STDIOTEXTMODE;
 | 
									filemode = "r" PY_STDIOTEXTMODE;
 | 
				
			||||||
 | 
								errno = 0;
 | 
				
			||||||
			fp = fopen(buf, filemode);
 | 
								fp = fopen(buf, filemode);
 | 
				
			||||||
			if (fp != NULL) {
 | 
								if (fp != NULL) {
 | 
				
			||||||
				if (case_ok(buf, len, namelen, name))
 | 
									if (case_ok(buf, len, namelen, name))
 | 
				
			||||||
| 
						 | 
					@ -1404,6 +1405,15 @@ find_module(char *fullname, char *subname, PyObject *path, char *buf,
 | 
				
			||||||
					fp = NULL;
 | 
										fp = NULL;
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
								/* issue a warning if the file is there */
 | 
				
			||||||
 | 
								/*if (errno != ENOENT) {
 | 
				
			||||||
 | 
									char warnstr[MAXPATHLEN+80];
 | 
				
			||||||
 | 
									sprintf(warnstr, "Not importing '%.*s': ");
 | 
				
			||||||
 | 
									
 | 
				
			||||||
 | 
									if (PyErr_Warn(PyExc_ImportWarning,
 | 
				
			||||||
 | 
										       warnstr)) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								}*/
 | 
				
			||||||
#if defined(PYOS_OS2)
 | 
					#if defined(PYOS_OS2)
 | 
				
			||||||
			/* restore the saved snapshot */
 | 
								/* restore the saved snapshot */
 | 
				
			||||||
			strcpy(buf, saved_buf);
 | 
								strcpy(buf, saved_buf);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue