summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Doc/library/collections.rst18
-rw-r--r--Lib/test/test_import.py10
-rw-r--r--Modules/_cursesmodule.c13
-rw-r--r--PC/VS8.0/_ctypes.vcproj1
-rw-r--r--PCbuild/_ctypes.vcproj3
-rw-r--r--Python/import.c10
-rw-r--r--Tools/buildbot/build-amd64.bat5
-rw-r--r--Tools/buildbot/clean-amd64.bat7
-rw-r--r--Tools/buildbot/external-amd64.bat59
9 files changed, 73 insertions, 53 deletions
diff --git a/Doc/library/collections.rst b/Doc/library/collections.rst
index 0c440d6..6f2961a 100644
--- a/Doc/library/collections.rst
+++ b/Doc/library/collections.rst
@@ -510,7 +510,7 @@ field names, the method and attribute names start with an underscore.
Point(x=33, y=22)
>>> for partnum, record in inventory.items():
- inventory[partnum] = record._replace(price=newprices[partnum], timestamp=time.now())
+ ... inventory[partnum] = record._replace(price=newprices[partnum], timestamp=time.now())
.. attribute:: somenamedtuple._fields
@@ -525,7 +525,7 @@ field names, the method and attribute names start with an underscore.
>>> Color = namedtuple('Color', 'red green blue')
>>> Pixel = namedtuple('Pixel', Point._fields + Color._fields)
>>> Pixel(11, 22, 128, 255, 0)
- Pixel(x=11, y=22, red=128, green=255, blue=0)'
+ Pixel(x=11, y=22, red=128, green=255, blue=0)
To retrieve a field whose name is stored in a string, use the :func:`getattr`
function::
@@ -544,14 +544,14 @@ functionality with a subclass. Here is how to add a calculated field and
a fixed-width print format::
>>> class Point(namedtuple('Point', 'x y')):
- @property
- def hypot(self):
- return (self.x ** 2 + self.y ** 2) ** 0.5
- def __str__(self):
- return 'Point: x=%6.3f y=%6.3f hypot=%6.3f' % (self.x, self.y, self.hypot)
+ ... @property
+ ... def hypot(self):
+ ... return (self.x ** 2 + self.y ** 2) ** 0.5
+ ... def __str__(self):
+ ... return 'Point: x=%6.3f y=%6.3f hypot=%6.3f' % (self.x, self.y, self.hypot)
>>> for p in Point(3,4), Point(14,5), Point(9./7,6):
- print p
+ ... print p
Point: x= 3.000 y= 4.000 hypot= 5.000
Point: x=14.000 y= 5.000 hypot=14.866
@@ -560,7 +560,7 @@ a fixed-width print format::
Another use for subclassing is to replace performance critcal methods with
faster versions that bypass error-checking and that localize variable access::
- >>> class Point(namedtuple('Point', 'x y')):
+ class Point(namedtuple('Point', 'x y')):
_make = classmethod(tuple.__new__)
def _replace(self, _map=map, **kwds):
return self._make(_map(kwds.get, ('x', 'y'), self))
diff --git a/Lib/test/test_import.py b/Lib/test/test_import.py
index 760713e..d8f2d51 100644
--- a/Lib/test/test_import.py
+++ b/Lib/test/test_import.py
@@ -221,6 +221,16 @@ class ImportTest(unittest.TestCase):
del sys.modules[TESTFN]
+ def test_importbyfilename(self):
+ path = os.path.abspath(TESTFN)
+ try:
+ __import__(path)
+ except ImportError as err:
+ self.assertEqual("Import by filename is not supported.",
+ err.args[0])
+ else:
+ self.fail("import by path didn't raise an exception")
+
class PathsTests(unittest.TestCase):
SAMPLES = ('test', 'test\u00e4\u00f6\u00fc\u00df', 'test\u00e9\u00e8',
'test\u00b0\u00b3\u00b2')
diff --git a/Modules/_cursesmodule.c b/Modules/_cursesmodule.c
index 57f9058..a4536e4 100644
--- a/Modules/_cursesmodule.c
+++ b/Modules/_cursesmodule.c
@@ -677,25 +677,30 @@ PyCursesWindow_ChgAt(PyCursesWindowObject *self, PyObject *args)
int num = -1;
short color;
attr_t attr = A_NORMAL;
+ long lattr;
int use_xy = FALSE;
switch (PyTuple_Size(args)) {
case 1:
- if (!PyArg_ParseTuple(args,"l;attr", &attr))
+ if (!PyArg_ParseTuple(args,"l;attr", &lattr))
return NULL;
+ attr = lattr;
break;
case 2:
- if (!PyArg_ParseTuple(args,"il;n,attr", &num, &attr))
+ if (!PyArg_ParseTuple(args,"il;n,attr", &num, &lattr))
return NULL;
+ attr = lattr;
break;
case 3:
- if (!PyArg_ParseTuple(args,"iil;int,int,attr", &y, &x, &attr))
+ if (!PyArg_ParseTuple(args,"iil;int,int,attr", &y, &x, &lattr))
return NULL;
+ attr = lattr;
use_xy = TRUE;
break;
case 4:
- if (!PyArg_ParseTuple(args,"iiil;int,int,n,attr", &y, &x, &num, &attr))
+ if (!PyArg_ParseTuple(args,"iiil;int,int,n,attr", &y, &x, &num, &lattr))
return NULL;
+ attr = lattr;
use_xy = TRUE;
break;
default:
diff --git a/PC/VS8.0/_ctypes.vcproj b/PC/VS8.0/_ctypes.vcproj
index bb68ad9..931d5fc 100644
--- a/PC/VS8.0/_ctypes.vcproj
+++ b/PC/VS8.0/_ctypes.vcproj
@@ -643,6 +643,7 @@
<Tool
Name="VCCustomBuildTool"
CommandLine="ml64 /nologo /c /Fo &quot;$(IntDir)\win64.obj&quot; &quot;$(InputPath)&quot;&#x0D;&#x0A;"
+ Outputs="$(IntDir)\win64.obj"
/>
</FileConfiguration>
<FileConfiguration
diff --git a/PCbuild/_ctypes.vcproj b/PCbuild/_ctypes.vcproj
index f923ca0..d654a9b 100644
--- a/PCbuild/_ctypes.vcproj
+++ b/PCbuild/_ctypes.vcproj
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
- Version="9,00"
+ Version="9.00"
Name="_ctypes"
ProjectGUID="{0E9791DB-593A-465F-98BC-681011311618}"
RootNamespace="_ctypes"
@@ -643,6 +643,7 @@
<Tool
Name="VCCustomBuildTool"
CommandLine="ml64 /nologo /c /Fo &quot;$(IntDir)\win64.obj&quot; &quot;$(InputPath)&quot;&#x0D;&#x0A;"
+ Outputs="$(IntDir)\win64.obj"
/>
</FileConfiguration>
<FileConfiguration
diff --git a/Python/import.c b/Python/import.c
index 6500f23..f9d4246 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -2000,6 +2000,16 @@ import_module_level(char *name, PyObject *globals, PyObject *locals,
Py_ssize_t buflen = 0;
PyObject *parent, *head, *next, *tail;
+ if (strchr(name, '/') != NULL
+#ifdef MS_WINDOWS
+ || strchr(name, '\\') != NULL
+#endif
+ ) {
+ PyErr_SetString(PyExc_ImportError,
+ "Import by filename is not supported.");
+ return NULL;
+ }
+
parent = get_parent(globals, buf, &buflen, level);
if (parent == NULL)
return NULL;
diff --git a/Tools/buildbot/build-amd64.bat b/Tools/buildbot/build-amd64.bat
index cddd3dd..b74086e 100644
--- a/Tools/buildbot/build-amd64.bat
+++ b/Tools/buildbot/build-amd64.bat
@@ -1,6 +1,5 @@
@rem Used by the buildbot "compile" step.
-setlocal
cmd /c Tools\buildbot\external-amd64.bat
-call "%VS71COMNTOOLS%vsvars32.bat"
+call "%VS90COMNTOOLS%vsvars32.bat"
REM cmd /q/c Tools\buildbot\kill_python.bat
-devenv.com /build ReleaseAMD64 PC\VS7.1\pcbuild.sln
+vcbuild PCbuild\pcbuild.sln "Debug|x64"
diff --git a/Tools/buildbot/clean-amd64.bat b/Tools/buildbot/clean-amd64.bat
index 585476a..0fc3617 100644
--- a/Tools/buildbot/clean-amd64.bat
+++ b/Tools/buildbot/clean-amd64.bat
@@ -1,6 +1,7 @@
@rem Used by the buildbot "clean" step.
-call "%VS71COMNTOOLS%vsvars32.bat"
-cd PC\VS7.1
+call "%VS90COMNTOOLS%vsvars32.bat"
+cd PCbuild
@echo Deleting .pyc/.pyo files ...
del /s Lib\*.pyc Lib\*.pyo
-devenv.com /clean ReleaseAMD64 pcbuild.sln
+vcbuild /clean pcbuild.sln "Release|x64"
+vcbuild /clean pcbuild.sln "Debug|x64"
diff --git a/Tools/buildbot/external-amd64.bat b/Tools/buildbot/external-amd64.bat
index ec9e6b6..3e5c859 100644
--- a/Tools/buildbot/external-amd64.bat
+++ b/Tools/buildbot/external-amd64.bat
@@ -1,50 +1,43 @@
@rem Fetches (and builds if necessary) external dependencies
-setlocal
-@rem need this so that 'devenv' is found
-call "%VS71COMNTOOLS%vsvars32.bat"
-@rem set the build environment
-call "%MSSdk%\SetEnv" /XP64 /RETAIL
+@REM XXX FIXME - building for x64 disabled for now.
@rem Assume we start inside the Python source directory
-for %%i in (.) do set CWD=%%~fi
cd ..
-
-@rem sqlite
-if not exist sqlite-source-3.3.4 (
- svn export http://svn.python.org/projects/external/sqlite-source-3.3.4
- if exist %CWD%\PCbuild\sqlite3.dll del %CWD%\PCbuild\sqlite3.dll
-)
-if not exist %CWD%\PCbuild\sqlite3.dll (
- cd sqlite-source-3.3.4\amd64
- cl ..\*.c
- link /def:..\sqlite3.def /dll *.obj /out:sqlite3.dll bufferoverflowU.lib
- cd ..\..
- copy sqlite-source-3.3.4\amd64\sqlite3.dll %CWD%\PCbuild
-)
+call "%VS90COMNTOOLS%vsvars32.bat"
@rem bzip
if not exist bzip2-1.0.3 svn export http://svn.python.org/projects/external/bzip2-1.0.3
-if not exist bzip2-1.0.3\libbz2.lib (
- cd bzip2-1.0.3
- nmake /f makefile.msc CFLAGS="-DWIN32 -MD -Ox -D_FILE_OFFSET_BITS=64 -nologo /GS-"
- cd ..
-)
@rem Sleepycat db
if not exist db-4.4.20 svn export http://svn.python.org/projects/external/db-4.4.20
-if not exist "db-4.4.20\build_win32\Release_AMD64\libdb44s.lib" (
- cd db-4.4.20\build_win32
- devenv Berkeley_DB.sln /build "Release AMD64" /project db_static /useenv
- cd ..\..
-)
+@REM if not exist db-4.4.20\build_win32\debug\libdb44sd.lib (
+@REM vcbuild db-4.4.20\build_win32\Berkeley_DB.sln /build Debug /project db_static
+@REM )
@rem OpenSSL
-if not exist openssl-0.9.8a svn export http://svn.python.org/projects/external/openssl-0.9.8a
+if not exist openssl-0.9.8g (
+ if exist openssl-0.9.8a rd /s/q openssl-0.9.8a
+ svn export http://svn.python.org/projects/external/openssl-0.9.8g
+)
@rem tcltk
-if not exist tcl8.4.12 (
+if not exist tcl8.4.16 (
if exist tcltk rd /s/q tcltk
- svn export http://svn.python.org/projects/external/tcl8.4.12
- svn export http://svn.python.org/projects/external/tk8.4.12
+ if exist tcl8.4.12 rd /s/q tcl8.4.12
+ if exist tk8.4.12 rd /s/q tk8.4.12
+ svn export http://svn.python.org/projects/external/tcl8.4.16
+ svn export http://svn.python.org/projects/external/tk8.4.16
+@REM cd tcl8.4.16\win
+@REM nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500
+@REM nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 INSTALLDIR=..\..\tcltk install
+@REM cd ..\..
+@REM cd tk8.4.16\win
+@REM nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 TCLDIR=..\..\tcl8.4.16
+@REM nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 TCLDIR=..\..\tcl8.4.16 INSTALLDIR=..\..\tcltk install
+@REM cd ..\..
)
+
+@rem sqlite
+if not exist sqlite-source-3.3.4 svn export http://svn.python.org/projects/external/sqlite-source-3.3.4
+@REM if not exist build\PCbuild\sqlite3.dll copy sqlite-source-3.3.4\sqlite3.dll build\PCbuild