summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/bin/profiling/gather_profile_stats.py2
-rwxr-xr-xdjango/bin/unique-messages.py2
-rw-r--r--django/contrib/auth/management/__init__.py2
-rw-r--r--django/contrib/contenttypes/management.py6
-rw-r--r--django/contrib/gis/db/backends/spatialite/creation.py2
-rw-r--r--django/contrib/gis/gdal/geometries.py16
-rw-r--r--django/contrib/gis/gdal/srs.py24
-rw-r--r--django/contrib/gis/gdal/tests/test_ds.py4
-rw-r--r--django/contrib/gis/gdal/tests/test_geom.py4
-rw-r--r--django/contrib/gis/geos/tests/test_geos.py12
-rw-r--r--django/contrib/gis/utils/ogrinfo.py18
-rw-r--r--django/contrib/gis/utils/ogrinspect.py4
-rw-r--r--django/contrib/sites/management.py4
-rw-r--r--django/core/management/__init__.py4
-rw-r--r--django/core/management/sql.py2
-rw-r--r--django/core/servers/fastcgi.py16
-rw-r--r--django/db/backends/creation.py14
-rw-r--r--django/db/backends/oracle/creation.py28
-rw-r--r--django/db/backends/sqlite3/creation.py4
-rw-r--r--django/dispatch/saferef.py6
-rw-r--r--django/test/_doctest.py48
-rw-r--r--django/utils/dateformat.py2
-rw-r--r--django/utils/termcolors.py10
-rw-r--r--django/utils/unittest/main.py4
-rw-r--r--docs/_ext/applyxrefs.py6
-rw-r--r--docs/_ext/literals_to_xrefs.py10
-rw-r--r--docs/howto/custom-model-fields.txt2
-rw-r--r--docs/intro/install.txt2
-rw-r--r--docs/ref/contrib/gis/db-api.txt2
-rw-r--r--docs/ref/contrib/gis/gdal.txt24
-rw-r--r--docs/ref/contrib/gis/geoquerysets.txt16
-rw-r--r--docs/ref/contrib/gis/geos.txt2
-rw-r--r--docs/ref/contrib/gis/layermapping.txt8
-rw-r--r--docs/ref/contrib/gis/measure.txt22
-rw-r--r--docs/ref/contrib/gis/tutorial.txt24
-rw-r--r--docs/ref/contrib/syndication.txt2
-rw-r--r--docs/ref/forms/api.txt68
-rw-r--r--docs/ref/forms/fields.txt14
-rw-r--r--docs/ref/models/instances.txt2
-rw-r--r--docs/ref/models/querysets.txt6
-rw-r--r--docs/ref/template-response.txt6
-rw-r--r--docs/ref/templates/api.txt2
-rw-r--r--docs/topics/auth.txt6
-rw-r--r--docs/topics/db/examples/many_to_many.txt4
-rw-r--r--docs/topics/db/queries.txt20
-rw-r--r--docs/topics/db/sql.txt8
-rw-r--r--docs/topics/forms/formsets.txt16
-rw-r--r--docs/topics/forms/media.txt16
-rw-r--r--docs/topics/forms/modelforms.txt4
-rw-r--r--docs/topics/http/urls.txt2
-rw-r--r--docs/topics/i18n/translation.txt2
-rw-r--r--docs/topics/install.txt2
-rw-r--r--docs/topics/signals.txt4
-rw-r--r--docs/topics/signing.txt2
-rwxr-xr-xextras/csrf_migration_helper.py32
-rw-r--r--tests/regressiontests/admin_scripts/management/commands/app_command.py2
-rw-r--r--tests/regressiontests/admin_scripts/management/commands/base_command.py2
-rw-r--r--tests/regressiontests/admin_scripts/management/commands/label_command.py2
-rw-r--r--tests/regressiontests/admin_scripts/management/commands/noargs_command.py2
-rw-r--r--tests/regressiontests/test_runner/tests.py2
-rwxr-xr-xtests/runtests.py36
61 files changed, 310 insertions, 310 deletions
diff --git a/django/bin/profiling/gather_profile_stats.py b/django/bin/profiling/gather_profile_stats.py
index 2274eadee9..0244eb6034 100644
--- a/django/bin/profiling/gather_profile_stats.py
+++ b/django/bin/profiling/gather_profile_stats.py
@@ -24,7 +24,7 @@ def gather_stats(p):
prof = stats.load(os.path.join(p, f))
else:
continue
- print "Processing %s" % f
+ print("Processing %s" % f)
if path in profiles:
profiles[path].add(prof)
else:
diff --git a/django/bin/unique-messages.py b/django/bin/unique-messages.py
index c43374a5b9..fbc74f8f46 100755
--- a/django/bin/unique-messages.py
+++ b/django/bin/unique-messages.py
@@ -11,7 +11,7 @@ def unique_messages():
elif os.path.isdir('locale'):
basedir = os.path.abspath('locale')
else:
- print "This script should be run from the Django Git tree or your project or app tree."
+ print("This script should be run from the Django Git tree or your project or app tree.")
sys.exit(1)
for (dirpath, dirnames, filenames) in os.walk(basedir):
diff --git a/django/contrib/auth/management/__init__.py b/django/contrib/auth/management/__init__.py
index b516507277..66f54f18a8 100644
--- a/django/contrib/auth/management/__init__.py
+++ b/django/contrib/auth/management/__init__.py
@@ -54,7 +54,7 @@ def create_permissions(app, created_models, verbosity, **kwargs):
auth_app.Permission.objects.bulk_create(objs)
if verbosity >= 2:
for obj in objs:
- print "Adding permission '%s'" % obj
+ print("Adding permission '%s'" % obj)
def create_superuser(app, created_models, verbosity, db, **kwargs):
diff --git a/django/contrib/contenttypes/management.py b/django/contrib/contenttypes/management.py
index d47d5579ba..6a23ef5287 100644
--- a/django/contrib/contenttypes/management.py
+++ b/django/contrib/contenttypes/management.py
@@ -39,7 +39,7 @@ def update_contenttypes(app, created_models, verbosity=2, **kwargs):
])
if verbosity >= 2:
for ct in cts:
- print "Adding content type '%s | %s'" % (ct.app_label, ct.model)
+ print("Adding content type '%s | %s'" % (ct.app_label, ct.model))
# Confirm that the content type is stale before deletion.
if to_remove:
@@ -63,11 +63,11 @@ If you're unsure, answer 'no'.
if ok_to_delete == 'yes':
for ct in to_remove:
if verbosity >= 2:
- print "Deleting stale content type '%s | %s'" % (ct.app_label, ct.model)
+ print("Deleting stale content type '%s | %s'" % (ct.app_label, ct.model))
ct.delete()
else:
if verbosity >= 2:
- print "Stale content types remain."
+ print("Stale content types remain.")
def update_all_contenttypes(verbosity=2, **kwargs):
for app in get_apps():
diff --git a/django/contrib/gis/db/backends/spatialite/creation.py b/django/contrib/gis/db/backends/spatialite/creation.py
index 33b6f95864..aab03e8d58 100644
--- a/django/contrib/gis/db/backends/spatialite/creation.py
+++ b/django/contrib/gis/db/backends/spatialite/creation.py
@@ -24,7 +24,7 @@ class SpatiaLiteCreation(DatabaseCreation):
test_db_repr = ''
if verbosity >= 2:
test_db_repr = " ('%s')" % test_database_name
- print "Creating test database for alias '%s'%s..." % (self.connection.alias, test_db_repr)
+ print("Creating test database for alias '%s'%s..." % (self.connection.alias, test_db_repr))
self._create_test_db(verbosity, autoclobber)
diff --git a/django/contrib/gis/gdal/geometries.py b/django/contrib/gis/gdal/geometries.py
index 30125d5764..b4d4ad1646 100644
--- a/django/contrib/gis/gdal/geometries.py
+++ b/django/contrib/gis/gdal/geometries.py
@@ -13,21 +13,21 @@
>>> from django.contrib.gis.gdal import OGRGeometry, OGRGeomType, SpatialReference
>>> wkt1, wkt2 = 'POINT(-90 30)', 'POLYGON((0 0, 5 0, 5 5, 0 5)'
>>> pnt = OGRGeometry(wkt1)
- >>> print pnt
+ >>> print(pnt)
POINT (-90 30)
>>> mpnt = OGRGeometry(OGRGeomType('MultiPoint'), SpatialReference('WGS84'))
>>> mpnt.add(wkt1)
>>> mpnt.add(wkt1)
- >>> print mpnt
+ >>> print(mpnt)
MULTIPOINT (-90 30,-90 30)
- >>> print mpnt.srs.name
+ >>> print(mpnt.srs.name)
WGS 84
- >>> print mpnt.srs.proj
+ >>> print(mpnt.srs.proj)
+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs
>>> mpnt.transform_to(SpatialReference('NAD27'))
- >>> print mpnt.proj
+ >>> print(mpnt.proj)
+proj=longlat +ellps=clrk66 +datum=NAD27 +no_defs
- >>> print mpnt
+ >>> print(mpnt)
MULTIPOINT (-89.999930378602485 29.999797886557641,-89.999930378602485 29.999797886557641)
The OGRGeomType class is to make it easy to specify an OGR geometry type:
@@ -35,8 +35,8 @@
>>> gt1 = OGRGeomType(3) # Using an integer for the type
>>> gt2 = OGRGeomType('Polygon') # Using a string
>>> gt3 = OGRGeomType('POLYGON') # It's case-insensitive
- >>> print gt1 == 3, gt1 == 'Polygon' # Equivalence works w/non-OGRGeomType objects
- True
+ >>> print(gt1 == 3, gt1 == 'Polygon') # Equivalence works w/non-OGRGeomType objects
+ True True
"""
# Python library requisites.
import sys
diff --git a/django/contrib/gis/gdal/srs.py b/django/contrib/gis/gdal/srs.py
index e211bace91..67049731de 100644
--- a/django/contrib/gis/gdal/srs.py
+++ b/django/contrib/gis/gdal/srs.py
@@ -4,7 +4,7 @@
Example:
>>> from django.contrib.gis.gdal import SpatialReference
>>> srs = SpatialReference('WGS84')
- >>> print srs
+ >>> print(srs)
GEOGCS["WGS 84",
DATUM["WGS_1984",
SPHEROID["WGS 84",6378137,298.257223563,
@@ -16,14 +16,14 @@
UNIT["degree",0.01745329251994328,
AUTHORITY["EPSG","9122"]],
AUTHORITY["EPSG","4326"]]
- >>> print srs.proj
+ >>> print(srs.proj)
+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs
- >>> print srs.ellipsoid
+ >>> print(srs.ellipsoid)
(6378137.0, 6356752.3142451793, 298.25722356300003)
- >>> print srs.projected, srs.geographic
+ >>> print(srs.projected, srs.geographic)
False True
>>> srs.import_epsg(32140)
- >>> print srs.name
+ >>> print(srs.name)
NAD83 / Texas South Central
"""
from ctypes import byref, c_char_p, c_int
@@ -103,19 +103,19 @@ class SpatialReference(GDALBase):
>>> wkt = 'GEOGCS["WGS 84", DATUM["WGS_1984, ... AUTHORITY["EPSG","4326"]]')
>>> srs = SpatialReference(wkt) # could also use 'WGS84', or 4326
- >>> print srs['GEOGCS']
+ >>> print(srs['GEOGCS'])
WGS 84
- >>> print srs['DATUM']
+ >>> print(srs['DATUM'])
WGS_1984
- >>> print srs['AUTHORITY']
+ >>> print(srs['AUTHORITY'])
EPSG
- >>> print srs['AUTHORITY', 1] # The authority value
+ >>> print(srs['AUTHORITY', 1]) # The authority value
4326
- >>> print srs['TOWGS84', 4] # the fourth value in this wkt
+ >>> print(srs['TOWGS84', 4]) # the fourth value in this wkt
0
- >>> print srs['UNIT|AUTHORITY'] # For the units authority, have to use the pipe symbole.
+ >>> print(srs['UNIT|AUTHORITY']) # For the units authority, have to use the pipe symbole.
EPSG
- >>> print srs['UNIT|AUTHORITY', 1] # The authority value for the untis
+ >>> print(srs['UNIT|AUTHORITY', 1]) # The authority value for the untis
9122
"""
if isinstance(target, tuple):
diff --git a/django/contrib/gis/gdal/tests/test_ds.py b/django/contrib/gis/gdal/tests/test_ds.py
index 16d6e8603b..71d22a0a27 100644
--- a/django/contrib/gis/gdal/tests/test_ds.py
+++ b/django/contrib/gis/gdal/tests/test_ds.py
@@ -59,7 +59,7 @@ class DataSourceTest(unittest.TestCase):
def test03a_layers(self):
"Testing Data Source Layers."
- print "\nBEGIN - expecting out of range feature id error; safe to ignore.\n"
+ print("\nBEGIN - expecting out of range feature id error; safe to ignore.\n")
for source in ds_list:
ds = DataSource(source.ds)
@@ -108,7 +108,7 @@ class DataSourceTest(unittest.TestCase):
# the feature values here while in this loop.
for fld_name in fld_names:
self.assertEqual(source.field_values[fld_name][i], feat.get(fld_name))
- print "\nEND - expecting out of range feature id error; safe to ignore."
+ print("\nEND - expecting out of range feature id error; safe to ignore.")
def test03b_layer_slice(self):
"Test indexing and slicing on Layers."
diff --git a/django/contrib/gis/gdal/tests/test_geom.py b/django/contrib/gis/gdal/tests/test_geom.py
index 656901b55e..b68aa41b0a 100644
--- a/django/contrib/gis/gdal/tests/test_geom.py
+++ b/django/contrib/gis/gdal/tests/test_geom.py
@@ -234,7 +234,7 @@ class OGRGeomTest(unittest.TestCase, TestDataMixin):
# Both rings in this geometry are not closed.
poly = OGRGeometry('POLYGON((0 0, 5 0, 5 5, 0 5), (1 1, 2 1, 2 2, 2 1))')
self.assertEqual(8, poly.point_count)
- print "\nBEGIN - expecting IllegalArgumentException; safe to ignore.\n"
+ print("\nBEGIN - expecting IllegalArgumentException; safe to ignore.\n")
try:
c = poly.centroid
except OGRException:
@@ -242,7 +242,7 @@ class OGRGeomTest(unittest.TestCase, TestDataMixin):
pass
else:
self.fail('Should have raised an OGRException!')
- print "\nEND - expecting IllegalArgumentException; safe to ignore.\n"
+ print("\nEND - expecting IllegalArgumentException; safe to ignore.\n")
# Closing the rings -- doesn't work on GDAL versions 1.4.1 and below:
# http://trac.osgeo.org/gdal/ticket/1673
diff --git a/django/contrib/gis/geos/tests/test_geos.py b/django/contrib/gis/geos/tests/test_geos.py
index a6b50df635..a81925aec1 100644
--- a/django/contrib/gis/geos/tests/test_geos.py
+++ b/django/contrib/gis/geos/tests/test_geos.py
@@ -134,7 +134,7 @@ class GEOSTest(unittest.TestCase, TestDataMixin):
def test01d_errors(self):
"Testing the Error handlers."
# string-based
- print "\nBEGIN - expecting GEOS_ERROR; safe to ignore.\n"
+ print("\nBEGIN - expecting GEOS_ERROR; safe to ignore.\n")
for err in self.geometries.errors:
try:
g = fromstr(err.wkt)
@@ -144,7 +144,7 @@ class GEOSTest(unittest.TestCase, TestDataMixin):
# Bad WKB
self.assertRaises(GEOSException, GEOSGeometry, buffer('0'))
- print "\nEND - expecting GEOS_ERROR; safe to ignore.\n"
+ print("\nEND - expecting GEOS_ERROR; safe to ignore.\n")
class NotAGeometry(object):
pass
@@ -439,7 +439,7 @@ class GEOSTest(unittest.TestCase, TestDataMixin):
def test05b_multipolygons(self):
"Testing MultiPolygon objects."
- print "\nBEGIN - expecting GEOS_NOTICE; safe to ignore.\n"
+ print("\nBEGIN - expecting GEOS_NOTICE; safe to ignore.\n")
prev = fromstr('POINT (0 0)')
for mp in self.geometries.multipolygons:
mpoly = fromstr(mp.wkt)
@@ -458,7 +458,7 @@ class GEOSTest(unittest.TestCase, TestDataMixin):
self.assertEqual(p.valid, True)
self.assertEqual(mpoly.wkt, MultiPolygon(*tuple(poly.clone() for poly in mpoly)).wkt)
- print "\nEND - expecting GEOS_NOTICE; safe to ignore.\n"
+ print("\nEND - expecting GEOS_NOTICE; safe to ignore.\n")
def test06a_memory_hijinks(self):
"Testing Geometry __del__() on rings and polygons."
@@ -995,7 +995,7 @@ class GEOSTest(unittest.TestCase, TestDataMixin):
self.assertTrue(isinstance(g.valid_reason, basestring))
self.assertEqual(g.valid_reason, "Valid Geometry")
- print "\nBEGIN - expecting GEOS_NOTICE; safe to ignore.\n"
+ print("\nBEGIN - expecting GEOS_NOTICE; safe to ignore.\n")
g = GEOSGeometry("LINESTRING(0 0, 0 0)")
@@ -1003,7 +1003,7 @@ class GEOSTest(unittest.TestCase, TestDataMixin):
self.assertTrue(isinstance(g.valid_reason, basestring))
self.assertTrue(g.valid_reason.startswith("Too few points in geometry component"))
- print "\nEND - expecting GEOS_NOTICE; safe to ignore.\n"
+ print("\nEND - expecting GEOS_NOTICE; safe to ignore.\n")
def test28_geos_version(self):
"Testing the GEOS version regular expression."
diff --git a/django/contrib/gis/utils/ogrinfo.py b/django/contrib/gis/utils/ogrinfo.py
index 1e4c42daa5..d9c3e09155 100644
--- a/django/contrib/gis/utils/ogrinfo.py
+++ b/django/contrib/gis/utils/ogrinfo.py
@@ -22,19 +22,19 @@ def ogrinfo(data_source, num_features=10):
raise Exception('Data source parameter must be a string or a DataSource object.')
for i, layer in enumerate(data_source):
- print "data source : %s" % data_source.name
- print "==== layer %s" % i
- print " shape type: %s" % GEO_CLASSES[layer.geom_type.num].__name__
- print " # features: %s" % len(layer)
- print " srs: %s" % layer.srs
+ print("data source : %s" % data_source.name)
+ print("==== layer %s" % i)
+ print(" shape type: %s" % GEO_CLASSES[layer.geom_type.num].__name__)
+ print(" # features: %s" % len(layer))
+ print(" srs: %s" % layer.srs)
extent_tup = layer.extent.tuple
- print " extent: %s - %s" % (extent_tup[0:2], extent_tup[2:4])
- print "Displaying the first %s features ====" % num_features
+ print(" extent: %s - %s" % (extent_tup[0:2], extent_tup[2:4]))
+ print("Displaying the first %s features ====" % num_features)
width = max(*map(len,layer.fields))
fmt = " %%%ss: %%s" % width
for j, feature in enumerate(layer[:num_features]):
- print "=== Feature %s" % j
+ print("=== Feature %s" % j)
for fld_name in layer.fields:
type_name = feature[fld_name].type_name
output = fmt % (fld_name, type_name)
@@ -47,7 +47,7 @@ def ogrinfo(data_source, num_features=10):
output += val_fmt % val
else:
output += ' (None)'
- print output
+ print(output)
# For backwards compatibility.
sample = ogrinfo
diff --git a/django/contrib/gis/utils/ogrinspect.py b/django/contrib/gis/utils/ogrinspect.py
index aa4e209877..a99989978e 100644
--- a/django/contrib/gis/utils/ogrinspect.py
+++ b/django/contrib/gis/utils/ogrinspect.py
@@ -68,8 +68,8 @@ def ogrinspect(*args, **kwargs):
shp_file = 'data/mapping_hacks/world_borders.shp'
model_name = 'WorldBorders'
- print ogrinspect(shp_file, model_name, multi_geom=True, srid=4326,
- geom_name='shapes', blank=True)
+ print(ogrinspect(shp_file, model_name, multi_geom=True, srid=4326,
+ geom_name='shapes', blank=True))
Required Arguments
`datasource` => string or DataSource object to file pointer
diff --git a/django/contrib/sites/management.py b/django/contrib/sites/management.py
index 1b76bf5411..7a29e82d4c 100644
--- a/django/contrib/sites/management.py
+++ b/django/contrib/sites/management.py
@@ -18,7 +18,7 @@ def create_default_site(app, created_models, verbosity, db, **kwargs):
# the next id will be 1, so we coerce it. See #15573 and #16353. This
# can also crop up outside of tests - see #15346.
if verbosity >= 2:
- print "Creating example.com Site object"
+ print("Creating example.com Site object")
Site(pk=1, domain="example.com", name="example.com").save(using=db)
# We set an explicit pk instead of relying on auto-incrementation,
@@ -26,7 +26,7 @@ def create_default_site(app, created_models, verbosity, db, **kwargs):
sequence_sql = connections[db].ops.sequence_reset_sql(no_style(), [Site])
if sequence_sql:
if verbosity >= 2:
- print "Resetting sequence"
+ print("Resetting sequence")
cursor = connections[db].cursor()
for command in sequence_sql:
cursor.execute(command)
diff --git a/django/core/management/__init__.py b/django/core/management/__init__.py
index 840a3b74df..b4e82e454f 100644
--- a/django/core/management/__init__.py
+++ b/django/core/management/__init__.py
@@ -299,7 +299,7 @@ class ManagementUtility(object):
# subcommand
if cword == 1:
- print ' '.join(sorted(filter(lambda x: x.startswith(curr), subcommands)))
+ print(' '.join(sorted(filter(lambda x: x.startswith(curr), subcommands))))
# subcommand options
# special case: the 'help' subcommand has no options
elif cwords[0] in subcommands and cwords[0] != 'help':
@@ -333,7 +333,7 @@ class ManagementUtility(object):
# append '=' to options which require args
if option[1]:
opt_label += '='
- print opt_label
+ print(opt_label)
sys.exit(1)
def execute(self):
diff --git a/django/core/management/sql.py b/django/core/management/sql.py
index 68c72b3487..83c17d9731 100644
--- a/django/core/management/sql.py
+++ b/django/core/management/sql.py
@@ -173,7 +173,7 @@ def emit_post_sync_signal(created_models, verbosity, interactive, db):
for app in models.get_apps():
app_name = app.__name__.split('.')[-2]
if verbosity >= 2:
- print "Running post-sync handlers for application", app_name
+ print("Running post-sync handlers for application %s" % app_name)
models.signals.post_syncdb.send(sender=app, app=app,
created_models=created_models, verbosity=verbosity,
interactive=interactive, db=db)
diff --git a/django/core/servers/fastcgi.py b/django/core/servers/fastcgi.py
index 9c652a74ef..750bff7e9f 100644
--- a/django/core/servers/fastcgi.py
+++ b/django/core/servers/fastcgi.py
@@ -82,9 +82,9 @@ Examples:
""" % FASTCGI_OPTIONS
def fastcgi_help(message=None):
- print FASTCGI_HELP
+ print(FASTCGI_HELP)
if message:
- print message
+ print(message)
return False
def runfastcgi(argset=[], **kwargs):
@@ -103,11 +103,11 @@ def runfastcgi(argset=[], **kwargs):
try:
import flup
except ImportError as e:
- print >> sys.stderr, "ERROR: %s" % e
- print >> sys.stderr, " Unable to load the flup package. In order to run django"
- print >> sys.stderr, " as a FastCGI application, you will need to get flup from"
- print >> sys.stderr, " http://www.saddi.com/software/flup/ If you've already"
- print >> sys.stderr, " installed flup, then make sure you have it in your PYTHONPATH."
+ sys.stderr.write("ERROR: %s\n" % e)
+ sys.stderr.write(" Unable to load the flup package. In order to run django\n")
+ sys.stderr.write(" as a FastCGI application, you will need to get flup from\n")
+ sys.stderr.write(" http://www.saddi.com/software/flup/ If you've already\n")
+ sys.stderr.write(" installed flup, then make sure you have it in your PYTHONPATH.\n")
return False
flup_module = 'server.' + options['protocol']
@@ -136,7 +136,7 @@ def runfastcgi(argset=[], **kwargs):
module = importlib.import_module('.%s' % flup_module, 'flup')
WSGIServer = module.WSGIServer
except Exception:
- print "Can't import flup." + flup_module
+ print("Can't import flup." + flup_module)
return False
# Prep up and go
diff --git a/django/db/backends/creation.py b/django/db/backends/creation.py
index e672253009..ba90cb970b 100644
--- a/django/db/backends/creation.py
+++ b/django/db/backends/creation.py
@@ -256,8 +256,8 @@ class BaseDatabaseCreation(object):
test_db_repr = ''
if verbosity >= 2:
test_db_repr = " ('%s')" % test_database_name
- print "Creating test database for alias '%s'%s..." % (
- self.connection.alias, test_db_repr)
+ print("Creating test database for alias '%s'%s..." % (
+ self.connection.alias, test_db_repr))
self._create_test_db(verbosity, autoclobber)
@@ -339,8 +339,8 @@ class BaseDatabaseCreation(object):
if autoclobber or confirm == 'yes':
try:
if verbosity >= 1:
- print ("Destroying old test database '%s'..."
- % self.connection.alias)
+ print("Destroying old test database '%s'..."
+ % self.connection.alias)
cursor.execute(
"DROP DATABASE %s" % qn(test_database_name))
cursor.execute(
@@ -351,7 +351,7 @@ class BaseDatabaseCreation(object):
"Got an error recreating the test database: %s\n" % e)
sys.exit(2)
else:
- print "Tests cancelled."
+ print("Tests cancelled.")
sys.exit(1)
return test_database_name
@@ -367,8 +367,8 @@ class BaseDatabaseCreation(object):
test_db_repr = ''
if verbosity >= 2:
test_db_repr = " ('%s')" % test_database_name
- print "Destroying test database for alias '%s'%s..." % (
- self.connection.alias, test_db_repr)
+ print("Destroying test database for alias '%s'%s..." % (
+ self.connection.alias, test_db_repr))
# Temporarily use a new connection and a copy of the settings dict.
# This prevents the production database from being exposed to potential
diff --git a/django/db/backends/oracle/creation.py b/django/db/backends/oracle/creation.py
index 758c9ecd4a..2f096f735a 100644
--- a/django/db/backends/oracle/creation.py
+++ b/django/db/backends/oracle/creation.py
@@ -69,19 +69,19 @@ class DatabaseCreation(BaseDatabaseCreation):
if autoclobber or confirm == 'yes':
try:
if verbosity >= 1:
- print "Destroying old test database '%s'..." % self.connection.alias
+ print("Destroying old test database '%s'..." % self.connection.alias)
self._execute_test_db_destruction(cursor, parameters, verbosity)
self._execute_test_db_creation(cursor, parameters, verbosity)
except Exception as e:
sys.stderr.write("Got an error recreating the test database: %s\n" % e)
sys.exit(2)
else:
- print "Tests cancelled."
+ print("Tests cancelled.")
sys.exit(1)
if self._test_user_create():
if verbosity >= 1:
- print "Creating test user..."
+ print("Creating test user...")
try:
self._create_test_user(cursor, parameters, verbosity)
except Exception as e:
@@ -91,16 +91,16 @@ class DatabaseCreation(BaseDatabaseCreation):
if autoclobber or confirm == 'yes':
try:
if verbosity >= 1:
- print "Destroying old test user..."
+ print("Destroying old test user...")
self._destroy_test_user(cursor, parameters, verbosity)
if verbosity >= 1:
- print "Creating test user..."
+ print("Creating test user...")
self._create_test_user(cursor, parameters, verbosity)
except Exception as e:
sys.stderr.write("Got an error recreating the test user: %s\n" % e)
sys.exit(2)
else:
- print "Tests cancelled."
+ print("Tests cancelled.")
sys.exit(1)
self.connection.settings_dict['SAVED_USER'] = self.connection.settings_dict['USER']
@@ -136,17 +136,17 @@ class DatabaseCreation(BaseDatabaseCreation):
time.sleep(1) # To avoid "database is being accessed by other users" errors.
if self._test_user_create():
if verbosity >= 1:
- print 'Destroying test user...'
+ print('Destroying test user...')
self._destroy_test_user(cursor, parameters, verbosity)
if self._test_database_create():
if verbosity >= 1:
- print 'Destroying test database tables...'
+ print('Destroying test database tables...')
self._execute_test_db_destruction(cursor, parameters, verbosity)
self.connection.close()
def _execute_test_db_creation(self, cursor, parameters, verbosity):
if verbosity >= 2:
- print "_create_test_db(): dbname = %s" % parameters['dbname']
+ print("_create_test_db(): dbname = %s" % parameters['dbname'])
statements = [
"""CREATE TABLESPACE %(tblspace)s
DATAFILE '%(tblspace)s.dbf' SIZE 20M
@@ -161,7 +161,7 @@ class DatabaseCreation(BaseDatabaseCreation):
def _create_test_user(self, cursor, parameters, verbosity):
if verbosity >= 2:
- print "_create_test_user(): username = %s" % parameters['user']
+ print("_create_test_user(): username = %s" % parameters['user'])
statements = [
"""CREATE USER %(user)s
IDENTIFIED BY %(password)s
@@ -174,7 +174,7 @@ class DatabaseCreation(BaseDatabaseCreation):
def _execute_test_db_destruction(self, cursor, parameters, verbosity):
if verbosity >= 2:
- print "_execute_test_db_destruction(): dbname=%s" % parameters['dbname']
+ print("_execute_test_db_destruction(): dbname=%s" % parameters['dbname'])
statements = [
'DROP TABLESPACE %(tblspace)s INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS',
'DROP TABLESPACE %(tblspace_temp)s INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS',
@@ -183,8 +183,8 @@ class DatabaseCreation(BaseDatabaseCreation):
def _destroy_test_user(self, cursor, parameters, verbosity):
if verbosity >= 2:
- print "_destroy_test_user(): user=%s" % parameters['user']
- print "Be patient. This can take some time..."
+ print("_destroy_test_user(): user=%s" % parameters['user'])
+ print("Be patient. This can take some time...")
statements = [
'DROP USER %(user)s CASCADE',
]
@@ -194,7 +194,7 @@ class DatabaseCreation(BaseDatabaseCreation):
for template in statements:
stmt = template % parameters
if verbosity >= 2:
- print stmt
+ print(stmt)
try:
cursor.execute(stmt)
except Exception as err:
diff --git a/django/db/backends/sqlite3/creation.py b/django/db/backends/sqlite3/creation.py
index 9e660fa387..efdc457be0 100644
--- a/django/db/backends/sqlite3/creation.py
+++ b/django/db/backends/sqlite3/creation.py
@@ -50,7 +50,7 @@ class DatabaseCreation(BaseDatabaseCreation):
if test_database_name != ':memory:':
# Erase the old test database
if verbosity >= 1:
- print "Destroying old test database '%s'..." % self.connection.alias
+ print("Destroying old test database '%s'..." % self.connection.alias)
if os.access(test_database_name, os.F_OK):
if not autoclobber:
confirm = raw_input("Type 'yes' if you would like to try deleting the test database '%s', or 'no' to cancel: " % test_database_name)
@@ -61,7 +61,7 @@ class DatabaseCreation(BaseDatabaseCreation):
sys.stderr.write("Got an error deleting the old test database: %s\n" % e)
sys.exit(2)
else:
- print "Tests cancelled."
+ print("Tests cancelled.")
sys.exit(1)
return test_database_name
diff --git a/django/dispatch/saferef.py b/django/dispatch/saferef.py
index 364c13e43b..ebf423fc91 100644
--- a/django/dispatch/saferef.py
+++ b/django/dispatch/saferef.py
@@ -122,9 +122,9 @@ class BoundMethodWeakref(object):
except Exception as e:
try:
traceback.print_exc()
- except AttributeError as err:
- print '''Exception during saferef %s cleanup function %s: %s'''%(
- self, function, e
+ except AttributeError:
+ print('Exception during saferef %s cleanup function %s: %s' % (
+ self, function, e)
)
self.deletionMethods = [onDelete]
self.key = self.calculateKey( target )
diff --git a/django/test/_doctest.py b/django/test/_doctest.py
index af2f409e32..b07829318d 100644
--- a/django/test/_doctest.py
+++ b/django/test/_doctest.py
@@ -878,7 +878,7 @@ class DocTestFinder:
add them to `tests`.
"""
if self._verbose:
- print 'Finding tests in %s' % name
+ print('Finding tests in %s' % name)
# If we've already processed this object, then ignore it.
if id(obj) in seen:
@@ -1034,7 +1034,7 @@ class DocTestRunner:
>>> tests = DocTestFinder().find(_TestClass)
>>> runner = DocTestRunner(verbose=False)
>>> for test in tests:
- ... print runner.run(test)
+ ... print(runner.run(test))
(0, 2)
(0, 1)
(0, 2)
@@ -1406,28 +1406,28 @@ class DocTestRunner:
failed.append(x)
if verbose:
if notests:
- print len(notests), "items had no tests:"
+ print("%d items had no tests:" % len(notests))
notests.sort()
for thing in notests:
- print " ", thing
+ print(" %s" % thing)
if passed:
- print len(passed), "items passed all tests:"
+ print("%d items passed all tests:" % len(passed))
passed.sort()
for thing, count in passed:
- print " %3d tests in %s" % (count, thing)
+ print(" %3d tests in %s" % (count, thing))
if failed:
- print self.DIVIDER
- print len(failed), "items had failures:"
+ print(self.DIVIDER)
+ print("%d items had failures:" % len(failed))
failed.sort()
for thing, (f, t) in failed:
- print " %3d of %3d in %s" % (f, t, thing)
+ print(" %3d of %3d in %s" % (f, t, thing))
if verbose:
- print totalt, "tests in", len(self._name2ft), "items."
- print totalt - totalf, "passed and", totalf, "failed."
+ print("%d tests in % d items" % (len(self._name2ft), totalt))
+ print("%d passed and %d failed." % (totalt - totalf, totalf))
if totalf:
- print "***Test Failed***", totalf, "failures."
+ print("***Test Failed*** %d failures." % totalf)
elif verbose:
- print "Test passed."
+ print("Test passed.")
return totalf, totalt
#/////////////////////////////////////////////////////////////////
@@ -1437,8 +1437,8 @@ class DocTestRunner:
d = self._name2ft
for name, (f, t) in other._name2ft.items():
if name in d:
- print "*** DocTestRunner.merge: '" + name + "' in both" \
- " testers; summing outcomes."
+ print("*** DocTestRunner.merge: '" + name + "' in both" \
+ " testers; summing outcomes.")
f2, t2 = d[name]
f = f + f2
t = t + t2
@@ -2007,10 +2007,10 @@ class Tester:
def runstring(self, s, name):
test = DocTestParser().get_doctest(s, self.globs, name, None, None)
if self.verbose:
- print "Running string", name
+ print("Running string %s" % name)
(f,t) = self.testrunner.run(test)
if self.verbose:
- print f, "of", t, "examples failed in string", name
+ print("%s of %s examples failed in string %s" % (f, t, name))
return (f,t)
def rundoc(self, object, name=None, module=None):
@@ -2442,7 +2442,7 @@ def script_from_examples(s):
... Ho hum
... '''
- >>> print script_from_examples(text)
+ >>> print(script_from_examples(text))
# Here are examples of simple math.
#
# Python has super accurate integer addition
@@ -2533,7 +2533,7 @@ def debug_script(src, pm=False, globs=None):
try:
execfile(srcfilename, globs, globs)
except:
- print sys.exc_info()[1]
+ print(sys.exc_info()[1])
pdb.post_mortem(sys.exc_info()[2])
else:
# Note that %r is vital here. '%s' instead can, e.g., cause
@@ -2575,7 +2575,7 @@ class _TestClass:
"""val -> _TestClass object with associated value val.
>>> t = _TestClass(123)
- >>> print t.get()
+ >>> print(t.get())
123
"""
@@ -2595,7 +2595,7 @@ class _TestClass:
"""get() -> return TestClass's associated value.
>>> x = _TestClass(-42)
- >>> print x.get()
+ >>> print(x.get())
-42
"""
@@ -2627,7 +2627,7 @@ __test__ = {"_TestClass": _TestClass,
"blank lines": r"""
Blank lines can be marked with <BLANKLINE>:
- >>> print 'foo\n\nbar\n'
+ >>> print('foo\n\nbar\n')
foo
<BLANKLINE>
bar
@@ -2637,14 +2637,14 @@ __test__ = {"_TestClass": _TestClass,
"ellipsis": r"""
If the ellipsis flag is used, then '...' can be used to
elide substrings in the desired output:
- >>> print range(1000) #doctest: +ELLIPSIS
+ >>> print(range(1000)) #doctest: +ELLIPSIS
[0, 1, 2, ..., 999]
""",
"whitespace normalization": r"""
If the whitespace normalization flag is used, then
differences in whitespace are ignored.
- >>> print range(30) #doctest: +NORMALIZE_WHITESPACE
+ >>> print(range(30)) #doctest: +NORMALIZE_WHITESPACE
[0, 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]
diff --git a/django/utils/dateformat.py b/django/utils/dateformat.py
index 1b2dd57fe7..e16a2df1f2 100644
--- a/django/utils/dateformat.py
+++ b/django/utils/dateformat.py
@@ -6,7 +6,7 @@ Usage:
>>> import datetime
>>> d = datetime.datetime.now()
>>> df = DateFormat(d)
->>> print df.format('jS F Y H:i')
+>>> print(df.format('jS F Y H:i'))
7th October 2003 11:39
>>>
"""
diff --git a/django/utils/termcolors.py b/django/utils/termcolors.py
index 4fb64ac9a0..1eebaa2316 100644
--- a/django/utils/termcolors.py
+++ b/django/utils/termcolors.py
@@ -33,10 +33,10 @@ def colorize(text='', opts=(), **kwargs):
colorize('hello', fg='red', bg='blue', opts=('blink',))
colorize()
colorize('goodbye', opts=('underscore',))
- print colorize('first line', fg='red', opts=('noreset',))
- print 'this should be red too'
- print colorize('and so should this')
- print 'this should not be red'
+ print(colorize('first line', fg='red', opts=('noreset',)))
+ print('this should be red too')
+ print(colorize('and so should this'))
+ print('this should not be red')
"""
code_list = []
if text == '' and len(opts) == 1 and opts[0] == 'reset':
@@ -59,7 +59,7 @@ def make_style(opts=(), **kwargs):
Example:
bold_red = make_style(opts=('bold',), fg='red')
- print bold_red('hello')
+ print(bold_red('hello'))
KEYWORD = make_style(fg='yellow')
COMMENT = make_style(fg='blue', opts=('bold',))
"""
diff --git a/django/utils/unittest/main.py b/django/utils/unittest/main.py
index 744cacd841..0f25a98a22 100644
--- a/django/utils/unittest/main.py
+++ b/django/utils/unittest/main.py
@@ -99,7 +99,7 @@ class TestProgram(object):
def usageExit(self, msg=None):
if msg:
- print msg
+ print(msg)
usage = {'progName': self.progName, 'catchbreak': '', 'failfast': '',
'buffer': ''}
if self.failfast != False:
@@ -108,7 +108,7 @@ class TestProgram(object):
usage['catchbreak'] = CATCHBREAK
if self.buffer != False:
usage['buffer'] = BUFFEROUTPUT
- print self.USAGE % usage
+ print(self.USAGE % usage)
sys.exit(2)
def parseArgs(self, argv):
diff --git a/docs/_ext/applyxrefs.py b/docs/_ext/applyxrefs.py
index 3809088c1f..14d18bd856 100644
--- a/docs/_ext/applyxrefs.py
+++ b/docs/_ext/applyxrefs.py
@@ -77,12 +77,12 @@ def main(argv=None):
target_found, lines = has_target(fn)
if not target_found:
if testing:
- print '%s: %s' % (fn, lines[0]),
+ print('%s: %s' % (fn, lines[0]))
else:
- print "Adding xref to %s" % fn
+ print("Adding xref to %s" % fn)
process_file(fn, lines)
else:
print "Skipping %s: already has a xref" % fn
if __name__ == '__main__':
- sys.exit(main()) \ No newline at end of file
+ sys.exit(main())
diff --git a/docs/_ext/literals_to_xrefs.py b/docs/_ext/literals_to_xrefs.py
index 569193c72d..d1487ca729 100644
--- a/docs/_ext/literals_to_xrefs.py
+++ b/docs/_ext/literals_to_xrefs.py
@@ -136,10 +136,10 @@ def colorize(text='', opts=(), **kwargs):
colorize('hello', fg='red', bg='blue', opts=('blink',))
colorize()
colorize('goodbye', opts=('underscore',))
- print colorize('first line', fg='red', opts=('noreset',))
- print 'this should be red too'
- print colorize('and so should this')
- print 'this should not be red'
+ print(colorize('first line', fg='red', opts=('noreset',)))
+ print('this should be red too')
+ print(colorize('and so should this'))
+ print('this should not be red')
"""
color_names = ('black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white')
foreground = dict([(color_names[x], '3%s' % x) for x in range(8)])
@@ -168,4 +168,4 @@ if __name__ == '__main__':
try:
fixliterals(sys.argv[1])
except (KeyboardInterrupt, SystemExit):
- print \ No newline at end of file
+ print('')
diff --git a/docs/howto/custom-model-fields.txt b/docs/howto/custom-model-fields.txt
index 7f0ea3799d..5c2fed3b34 100644
--- a/docs/howto/custom-model-fields.txt
+++ b/docs/howto/custom-model-fields.txt
@@ -55,7 +55,7 @@ We'd like to be able to do things like this in our models (we assume the
``hand`` attribute on the model is an instance of ``Hand``)::
example = MyModel.objects.get(pk=1)
- print example.hand.north
+ print(example.hand.north)
new_hand = Hand(north, east, south, west)
example.hand = new_hand
diff --git a/docs/intro/install.txt b/docs/intro/install.txt
index 95f7b27396..41339b5f11 100644
--- a/docs/intro/install.txt
+++ b/docs/intro/install.txt
@@ -83,7 +83,7 @@ To verify that Django can be seen by Python, type ``python`` from your shell.
Then at the Python prompt, try to import Django::
>>> import django
- >>> print django.get_version()
+ >>> print(django.get_version())
1.4
diff --git a/docs/ref/contrib/gis/db-api.txt b/docs/ref/contrib/gis/db-api.txt
index 45698dd669..4cf65e513e 100644
--- a/docs/ref/contrib/gis/db-api.txt
+++ b/docs/ref/contrib/gis/db-api.txt
@@ -76,7 +76,7 @@ transform procedure::
>>> z = Zipcode(code=78212, poly=poly_3084)
>>> z.save()
>>> from django.db import connection
- >>> print connection.queries[-1]['sql'] # printing the last SQL statement executed (requires DEBUG=True)
+ >>> print(connection.queries[-1]['sql']) # printing the last SQL statement executed (requires DEBUG=True)
INSERT INTO "geoapp_zipcode" ("code", "poly") VALUES (78212, ST_Transform(ST_GeomFromWKB('\\001 ... ', 3084), 4326))
Thus, geometry parameters may be passed in using the ``GEOSGeometry`` object, WKT
diff --git a/docs/ref/contrib/gis/gdal.txt b/docs/ref/contrib/gis/gdal.txt
index 77c7c07618..5cd6187c6c 100644
--- a/docs/ref/contrib/gis/gdal.txt
+++ b/docs/ref/contrib/gis/gdal.txt
@@ -114,7 +114,7 @@ __ http://www.gdal.org/ogr/ogr_formats.html
information about each layer in a :class:`DataSource`::
>>> for layer in ds:
- ... print 'Layer "%s": %i %ss' % (layer.name, len(layer), layer.geom_type.name)
+ ... print('Layer "%s": %i %ss' % (layer.name, len(layer), layer.geom_type.name))
...
Layer "cities": 3 Points
@@ -200,7 +200,7 @@ __ http://www.gdal.org/ogr/ogr_formats.html
Property that returns the :class:`SpatialReference` associated
with this layer::
- >>> print layer.srs
+ >>> print(layer.srs)
GEOGCS["GCS_WGS_1984",
DATUM["WGS_1984",
SPHEROID["WGS_1984",6378137,298.257223563]],
@@ -220,9 +220,9 @@ __ http://www.gdal.org/ogr/ogr_formats.html
other than ``None``, only features that intersect the filter will be
returned when iterating over the layer::
- >>> print layer.spatial_filter
+ >>> print(layer.spatial_filter)
None
- >>> print len(layer)
+ >>> print(len(layer))
3
>>> [feat.get('Name') for feat in layer]
['Pueblo', 'Lawrence', 'Houston']
@@ -814,7 +814,7 @@ systems and coordinate transformation::
>>> gt1 = OGRGeomType(3) # Using an integer for the type
>>> gt2 = OGRGeomType('Polygon') # Using a string
>>> gt3 = OGRGeomType('POLYGON') # It's case-insensitive
- >>> print gt1 == 3, gt1 == 'Polygon' # Equivalence works w/non-OGRGeomType objects
+ >>> print(gt1 == 3, gt1 == 'Polygon') # Equivalence works w/non-OGRGeomType objects
True True
.. attribute:: name
@@ -927,19 +927,19 @@ Coordinate System Objects
>>> wkt = 'GEOGCS["WGS 84", DATUM["WGS_1984, ... AUTHORITY["EPSG","4326"]]')
>>> srs = SpatialReference(wkt) # could also use 'WGS84', or 4326
- >>> print srs['GEOGCS']
+ >>> print(srs['GEOGCS'])
WGS 84
- >>> print srs['DATUM']
+ >>> print(srs['DATUM'])
WGS_1984
- >>> print srs['AUTHORITY']
+ >>> print(srs['AUTHORITY'])
EPSG
- >>> print srs['AUTHORITY', 1] # The authority value
+ >>> print(srs['AUTHORITY', 1]) # The authority value
4326
- >>> print srs['TOWGS84', 4] # the fourth value in this wkt
+ >>> print(srs['TOWGS84', 4]) # the fourth value in this wkt
0
- >>> print srs['UNIT|AUTHORITY'] # For the units authority, have to use the pipe symbol.
+ >>> print(srs['UNIT|AUTHORITY']) # For the units authority, have to use the pipe symbol.
EPSG
- >>> print srs['UNIT|AUTHORITY', 1] # The authority value for the units
+ >>> print(srs['UNIT|AUTHORITY', 1]) # The authority value for the units
9122
.. method:: attr_value(target, index=0)
diff --git a/docs/ref/contrib/gis/geoquerysets.txt b/docs/ref/contrib/gis/geoquerysets.txt
index 832f21e3e7..5bc9ab1f64 100644
--- a/docs/ref/contrib/gis/geoquerysets.txt
+++ b/docs/ref/contrib/gis/geoquerysets.txt
@@ -714,7 +714,7 @@ the distance from the `Tasmanian`__ city of Hobart to every other
:class:`PointField` in the ``AustraliaCity`` queryset is calculated::
>>> pnt = AustraliaCity.objects.get(name='Hobart').point
- >>> for city in AustraliaCity.objects.distance(pnt): print city.name, city.distance
+ >>> for city in AustraliaCity.objects.distance(pnt): print(city.name, city.distance)
Wollongong 990071.220408 m
Shellharbour 972804.613941 m
Thirroul 1002334.36351 m
@@ -874,9 +874,9 @@ Example::
>>> qs = Zipcode.objects.all().transform() # Transforms to WGS84
>>> qs = Zipcode.objects.all().transform(32140) # Transforming to "NAD83 / Texas South Central"
- >>> print qs[0].poly.srid
+ >>> print(qs[0].poly.srid)
32140
- >>> print qs[0].poly
+ >>> print(qs[0].poly)
POLYGON ((234055.1698884720099159 4937796.9232223574072123 ...
``translate``
@@ -990,7 +990,7 @@ Attaches a ``gml`` attribute to every model in the queryset that contains the
Example::
>>> qs = Zipcode.objects.all().gml()
- >>> print qs[0].gml
+ >>> print(qs[0].gml)
<gml:Polygon srsName="EPSG:4326"><gml:OuterBoundaryIs>-147.78711,70.245363 ... -147.78711,70.245363</gml:OuterBoundaryIs></gml:Polygon>
===================== =====================================================
@@ -1023,7 +1023,7 @@ necessary.
Example::
>>> qs = Zipcode.objects.all().kml()
- >>> print qs[0].kml
+ >>> print(qs[0].kml)
<Polygon><outerBoundaryIs><LinearRing><coordinates>-103.04135,36.217596,0 ... -103.04135,36.217596,0</coordinates></LinearRing></outerBoundaryIs></Polygon>
===================== =====================================================
@@ -1128,7 +1128,7 @@ lower left coordinate and the upper right coordinate.
Example::
>>> qs = City.objects.filter(name__in=('Houston', 'Dallas'))
- >>> print qs.extent()
+ >>> print(qs.extent())
(-96.8016128540039, 29.7633724212646, -95.3631439208984, 32.782058715820)
``extent3d``
@@ -1146,7 +1146,7 @@ the lower left coordinate and upper right coordinate.
Example::
>>> qs = City.objects.filter(name__in=('Houston', 'Dallas'))
- >>> print qs.extent3d()
+ >>> print(qs.extent3d())
(-96.8016128540039, 29.7633724212646, 0, -95.3631439208984, 32.782058715820, 0)
``make_line``
@@ -1161,7 +1161,7 @@ Returns a ``LineString`` constructed from the point field geometries in the
Example::
- >>> print City.objects.filter(name__in=('Houston', 'Dallas')).make_line()
+ >>> print(City.objects.filter(name__in=('Houston', 'Dallas')).make_line())
LINESTRING (-95.3631510000000020 29.7633739999999989, -96.8016109999999941 32.7820570000000018)
``unionagg``
diff --git a/docs/ref/contrib/gis/geos.txt b/docs/ref/contrib/gis/geos.txt
index 9fceda32d0..d3d9fe4442 100644
--- a/docs/ref/contrib/gis/geos.txt
+++ b/docs/ref/contrib/gis/geos.txt
@@ -231,7 +231,7 @@ Property that may be used to retrieve or set the SRID associated with the
geometry. For example::
>>> pnt = Point(5, 23)
- >>> print pnt.srid
+ >>> print(pnt.srid)
None
>>> pnt.srid = 4326
>>> pnt.srid
diff --git a/docs/ref/contrib/gis/layermapping.txt b/docs/ref/contrib/gis/layermapping.txt
index b0fb29e77a..dd0a41cbc0 100644
--- a/docs/ref/contrib/gis/layermapping.txt
+++ b/docs/ref/contrib/gis/layermapping.txt
@@ -39,13 +39,13 @@ Example
>>> from django.contrib.gis.gdal import DataSource
>>> ds = DataSource('test_poly.shp')
>>> layer = ds[0]
- >>> print layer.fields # Exploring the fields in the layer, we only want the 'str' field.
+ >>> print(layer.fields) # Exploring the fields in the layer, we only want the 'str' field.
['float', 'int', 'str']
- >>> print len(layer) # getting the number of features in the layer (should be 3)
+ >>> print(len(layer)) # getting the number of features in the layer (should be 3)
3
- >>> print layer.geom_type # Should be 'Polygon'
+ >>> print(layer.geom_type) # Should be 'Polygon'
Polygon
- >>> print layer.srs # WGS84 in WKT
+ >>> print(layer.srs) # WGS84 in WKT
GEOGCS["GCS_WGS_1984",
DATUM["WGS_1984",
SPHEROID["WGS_1984",6378137,298.257223563]],
diff --git a/docs/ref/contrib/gis/measure.txt b/docs/ref/contrib/gis/measure.txt
index 6971788b4e..699677a50c 100644
--- a/docs/ref/contrib/gis/measure.txt
+++ b/docs/ref/contrib/gis/measure.txt
@@ -22,41 +22,41 @@ instantiated in units of kilometers (``km``) and miles (``mi``)::
>>> from django.contrib.gis.measure import Distance, D
>>> d1 = Distance(km=5)
- >>> print d1
+ >>> print(d1)
5.0 km
>>> d2 = D(mi=5) # `D` is an alias for `Distance`
- >>> print d2
+ >>> print(d2)
5.0 mi
Conversions are easy, just access the preferred unit attribute to get a
converted distance quantity::
- >>> print d1.mi # Converting 5 kilometers to miles
+ >>> print(d1.mi) # Converting 5 kilometers to miles
3.10685596119
- >>> print d2.km # Converting 5 miles to kilometers
+ >>> print(d2.km) # Converting 5 miles to kilometers
8.04672
Moreover, arithmetic operations may be performed between the distance
objects::
- >>> print d1 + d2 # Adding 5 miles to 5 kilometers
+ >>> print(d1 + d2) # Adding 5 miles to 5 kilometers
13.04672 km
- >>> print d2 - d1 # Subtracting 5 kilometers from 5 miles
+ >>> print(d2 - d1) # Subtracting 5 kilometers from 5 miles
1.89314403881 mi
Two :class:`Distance` objects multiplied together will yield an :class:`Area`
object, which uses squared units of measure::
>>> a = d1 * d2 # Returns an Area object.
- >>> print a
+ >>> print(a)
40.2336 sq_km
To determine what the attribute abbreviation of a unit is, the ``unit_attname``
class method may be used::
- >>> print Distance.unit_attname('US Survey Foot')
+ >>> print(Distance.unit_attname('US Survey Foot'))
survey_ft
- >>> print Distance.unit_attname('centimeter')
+ >>> print(Distance.unit_attname('centimeter'))
cm
.. _supported_units:
@@ -127,7 +127,7 @@ Measurement API
Returns the distance value in units corresponding to the given unit
attribute. For example::
- >>> print dist.km
+ >>> print(dist.km)
8.04672
.. classmethod:: unit_attname(unit_name)
@@ -159,7 +159,7 @@ Measurement API
Returns the area value in units corresponding to the given unit
attribute. For example::
- >>> print a.sq_km
+ >>> print(a.sq_km)
12.949940551680001
.. classmethod:: unit_attname(unit_name)
diff --git a/docs/ref/contrib/gis/tutorial.txt b/docs/ref/contrib/gis/tutorial.txt
index 34014d7be4..395eac1821 100644
--- a/docs/ref/contrib/gis/tutorial.txt
+++ b/docs/ref/contrib/gis/tutorial.txt
@@ -362,24 +362,24 @@ Now, the world borders shapefile may be opened using GeoDjango's
>>> from django.contrib.gis.gdal import DataSource
>>> ds = DataSource(world_shp)
- >>> print ds
+ >>> print(ds)
/ ... /geodjango/world/data/TM_WORLD_BORDERS-0.3.shp (ESRI Shapefile)
Data source objects can have different layers of geospatial features; however,
shapefiles are only allowed to have one layer::
- >>> print len(ds)
+ >>> print(len(ds))
1
>>> lyr = ds[0]
- >>> print lyr
+ >>> print(lyr)
TM_WORLD_BORDERS-0.3
You can see what the geometry type of the layer is and how many features it
contains::
- >>> print lyr.geom_type
+ >>> print(lyr.geom_type)
Polygon
- >>> print len(lyr)
+ >>> print(len(lyr))
246
.. note::
@@ -397,7 +397,7 @@ system associated with it -- if it does, the ``srs`` attribute will return a
:class:`~django.contrib.gis.gdal.SpatialReference` object::
>>> srs = lyr.srs
- >>> print srs
+ >>> print(srs)
GEOGCS["GCS_WGS_1984",
DATUM["WGS_1984",
SPHEROID["WGS_1984",6378137.0,298.257223563]],
@@ -413,7 +413,7 @@ latitude.
In addition, shapefiles also support attribute fields that may contain
additional data. Here are the fields on the World Borders layer:
- >>> print lyr.fields
+ >>> print(lyr.fields)
['FIPS', 'ISO2', 'ISO3', 'UN', 'NAME', 'AREA', 'POP2005', 'REGION', 'SUBREGION', 'LON', 'LAT']
Here we are examining the OGR types (e.g., whether a field is an integer or
@@ -428,7 +428,7 @@ feature's attribute fields (whose **values** are accessed via ``get()``
method)::
>>> for feat in lyr:
- ... print feat.get('NAME'), feat.geom.num_points
+ ... print(feat.get('NAME'), feat.geom.num_points)
...
Guernsey 18
Jersey 26
@@ -443,16 +443,16 @@ method)::
And individual features may be retrieved by their feature ID::
>>> feat = lyr[234]
- >>> print feat.get('NAME')
+ >>> print(feat.get('NAME'))
San Marino
Here the boundary geometry for San Marino is extracted and looking
exported to WKT and GeoJSON::
>>> geom = feat.geom
- >>> print geom.wkt
+ >>> print(geom.wkt)
POLYGON ((12.415798 43.957954,12.450554 ...
- >>> print geom.json
+ >>> print(geom.json)
{ "type": "Polygon", "coordinates": [ [ [ 12.415798, 43.957954 ], [ 12.450554, 43.979721 ], ...
@@ -659,7 +659,7 @@ in transformation SQL, allowing the developer to work at a higher level
of abstraction::
>>> qs = WorldBorder.objects.filter(mpoly__intersects=pnt)
- >>> print qs.query # Generating the SQL
+ >>> print(qs.query) # Generating the SQL
SELECT "world_worldborder"."id", "world_worldborder"."name", "world_worldborder"."area",
"world_worldborder"."pop2005", "world_worldborder"."fips", "world_worldborder"."iso2",
"world_worldborder"."iso3", "world_worldborder"."un", "world_worldborder"."region",
diff --git a/docs/ref/contrib/syndication.txt b/docs/ref/contrib/syndication.txt
index 754ac5843b..76c176e7b3 100644
--- a/docs/ref/contrib/syndication.txt
+++ b/docs/ref/contrib/syndication.txt
@@ -891,7 +891,7 @@ For example, to create an Atom 1.0 feed and print it to standard output::
... link=u"http://www.example.com/entries/1/",
... pubdate=datetime.now(),
... description=u"<p>Today I had a Vienna Beef hot dog. It was pink, plump and perfect.</p>")
- >>> print f.writeString('UTF-8')
+ >>> print(f.writeString('UTF-8'))
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
...
diff --git a/docs/ref/forms/api.txt b/docs/ref/forms/api.txt
index 86b6bb453e..a866fc550c 100644
--- a/docs/ref/forms/api.txt
+++ b/docs/ref/forms/api.txt
@@ -161,7 +161,7 @@ and the latter gets precedence::
... url = forms.URLField()
... comment = forms.CharField()
>>> f = CommentForm(initial={'name': 'instance'}, auto_id=False)
- >>> print f
+ >>> print(f)
<tr><th>Name:</th><td><input type="text" name="name" value="instance" /></td></tr>
<tr><th>Url:</th><td><input type="text" name="url" /></td></tr>
<tr><th>Comment:</th><td><input type="text" name="comment" /></td></tr>
@@ -266,7 +266,7 @@ The second task of a ``Form`` object is to render itself as HTML. To do so,
simply ``print`` it::
>>> f = ContactForm()
- >>> print f
+ >>> print(f)
<tr><th><label for="id_subject">Subject:</label></th><td><input id="id_subject" type="text" name="subject" maxlength="100" /></td></tr>
<tr><th><label for="id_message">Message:</label></th><td><input type="text" name="message" id="id_message" /></td></tr>
<tr><th><label for="id_sender">Sender:</label></th><td><input type="text" name="sender" id="id_sender" /></td></tr>
@@ -283,7 +283,7 @@ include ``checked="checked"`` if appropriate::
... 'sender': 'foo@example.com',
... 'cc_myself': True}
>>> f = ContactForm(data)
- >>> print f
+ >>> print(f)
<tr><th><label for="id_subject">Subject:</label></th><td><input id="id_subject" type="text" name="subject" maxlength="100" value="hello" /></td></tr>
<tr><th><label for="id_message">Message:</label></th><td><input type="text" name="message" id="id_message" value="Hi there" /></td></tr>
<tr><th><label for="id_sender">Sender:</label></th><td><input type="text" name="sender" id="id_sender" value="foo@example.com" /></td></tr>
@@ -331,7 +331,7 @@ a form object, and each rendering method returns a Unicode object.
>>> f = ContactForm()
>>> f.as_p()
u'<p><label for="id_subject">Subject:</label> <input id="id_subject" type="text" name="subject" maxlength="100" /></p>\n<p><label for="id_message">Message:</label> <input type="text" name="message" id="id_message" /></p>\n<p><label for="id_sender">Sender:</label> <input type="text" name="sender" id="id_sender" /></p>\n<p><label for="id_cc_myself">Cc myself:</label> <input type="checkbox" name="cc_myself" id="id_cc_myself" /></p>'
- >>> print f.as_p()
+ >>> print(f.as_p())
<p><label for="id_subject">Subject:</label> <input id="id_subject" type="text" name="subject" maxlength="100" /></p>
<p><label for="id_message">Message:</label> <input type="text" name="message" id="id_message" /></p>
<p><label for="id_sender">Sender:</label> <input type="text" name="sender" id="id_sender" /></p>
@@ -350,7 +350,7 @@ a form object, and each rendering method returns a Unicode object.
>>> f = ContactForm()
>>> f.as_ul()
u'<li><label for="id_subject">Subject:</label> <input id="id_subject" type="text" name="subject" maxlength="100" /></li>\n<li><label for="id_message">Message:</label> <input type="text" name="message" id="id_message" /></li>\n<li><label for="id_sender">Sender:</label> <input type="text" name="sender" id="id_sender" /></li>\n<li><label for="id_cc_myself">Cc myself:</label> <input type="checkbox" name="cc_myself" id="id_cc_myself" /></li>'
- >>> print f.as_ul()
+ >>> print(f.as_ul())
<li><label for="id_subject">Subject:</label> <input id="id_subject" type="text" name="subject" maxlength="100" /></li>
<li><label for="id_message">Message:</label> <input type="text" name="message" id="id_message" /></li>
<li><label for="id_sender">Sender:</label> <input type="text" name="sender" id="id_sender" /></li>
@@ -368,7 +368,7 @@ a form object, and each rendering method returns a Unicode object.
>>> f = ContactForm()
>>> f.as_table()
u'<tr><th><label for="id_subject">Subject:</label></th><td><input id="id_subject" type="text" name="subject" maxlength="100" /></td></tr>\n<tr><th><label for="id_message">Message:</label></th><td><input type="text" name="message" id="id_message" /></td></tr>\n<tr><th><label for="id_sender">Sender:</label></th><td><input type="text" name="sender" id="id_sender" /></td></tr>\n<tr><th><label for="id_cc_myself">Cc myself:</label></th><td><input type="checkbox" name="cc_myself" id="id_cc_myself" /></td></tr>'
- >>> print f.as_table()
+ >>> print(f.as_table())
<tr><th><label for="id_subject">Subject:</label></th><td><input id="id_subject" type="text" name="subject" maxlength="100" /></td></tr>
<tr><th><label for="id_message">Message:</label></th><td><input type="text" name="message" id="id_message" /></td></tr>
<tr><th><label for="id_sender">Sender:</label></th><td><input type="text" name="sender" id="id_sender" /></td></tr>
@@ -398,7 +398,7 @@ Once you've done that, rows will be given ``"error"`` and/or ``"required"``
classes, as needed. The HTML will look something like::
>>> f = ContactForm(data)
- >>> print f.as_table()
+ >>> print(f.as_table())
<tr class="required"><th><label for="id_subject">Subject:</label> ...
<tr class="required"><th><label for="id_message">Message:</label> ...
<tr class="required error"><th><label for="id_sender">Sender:</label> ...
@@ -426,17 +426,17 @@ If ``auto_id`` is ``False``, then the form output will not include ``<label>``
tags nor ``id`` attributes::
>>> f = ContactForm(auto_id=False)
- >>> print f.as_table()
+ >>> print(f.as_table())
<tr><th>Subject:</th><td><input type="text" name="subject" maxlength="100" /></td></tr>
<tr><th>Message:</th><td><input type="text" name="message" /></td></tr>
<tr><th>Sender:</th><td><input type="text" name="sender" /></td></tr>
<tr><th>Cc myself:</th><td><input type="checkbox" name="cc_myself" /></td></tr>
- >>> print f.as_ul()
+ >>> print(f.as_ul())
<li>Subject: <input type="text" name="subject" maxlength="100" /></li>
<li>Message: <input type="text" name="message" /></li>
<li>Sender: <input type="text" name="sender" /></li>
<li>Cc myself: <input type="checkbox" name="cc_myself" /></li>
- >>> print f.as_p()
+ >>> print(f.as_p())
<p>Subject: <input type="text" name="subject" maxlength="100" /></p>
<p>Message: <input type="text" name="message" /></p>
<p>Sender: <input type="text" name="sender" /></p>
@@ -447,17 +447,17 @@ If ``auto_id`` is set to ``True``, then the form output *will* include
field::
>>> f = ContactForm(auto_id=True)
- >>> print f.as_table()
+ >>> print(f.as_table())
<tr><th><label for="subject">Subject:</label></th><td><input id="subject" type="text" name="subject" maxlength="100" /></td></tr>
<tr><th><label for="message">Message:</label></th><td><input type="text" name="message" id="message" /></td></tr>
<tr><th><label for="sender">Sender:</label></th><td><input type="text" name="sender" id="sender" /></td></tr>
<tr><th><label for="cc_myself">Cc myself:</label></th><td><input type="checkbox" name="cc_myself" id="cc_myself" /></td></tr>
- >>> print f.as_ul()
+ >>> print(f.as_ul())
<li><label for="subject">Subject:</label> <input id="subject" type="text" name="subject" maxlength="100" /></li>
<li><label for="message">Message:</label> <input type="text" name="message" id="message" /></li>
<li><label for="sender">Sender:</label> <input type="text" name="sender" id="sender" /></li>
<li><label for="cc_myself">Cc myself:</label> <input type="checkbox" name="cc_myself" id="cc_myself" /></li>
- >>> print f.as_p()
+ >>> print(f.as_p())
<p><label for="subject">Subject:</label> <input id="subject" type="text" name="subject" maxlength="100" /></p>
<p><label for="message">Message:</label> <input type="text" name="message" id="message" /></p>
<p><label for="sender">Sender:</label> <input type="text" name="sender" id="sender" /></p>
@@ -470,17 +470,17 @@ attributes based on the format string. For example, for a format string
``'field_subject'``. Continuing our example::
>>> f = ContactForm(auto_id='id_for_%s')
- >>> print f.as_table()
+ >>> print(f.as_table())
<tr><th><label for="id_for_subject">Subject:</label></th><td><input id="id_for_subject" type="text" name="subject" maxlength="100" /></td></tr>
<tr><th><label for="id_for_message">Message:</label></th><td><input type="text" name="message" id="id_for_message" /></td></tr>
<tr><th><label for="id_for_sender">Sender:</label></th><td><input type="text" name="sender" id="id_for_sender" /></td></tr>
<tr><th><label for="id_for_cc_myself">Cc myself:</label></th><td><input type="checkbox" name="cc_myself" id="id_for_cc_myself" /></td></tr>
- >>> print f.as_ul()
+ >>> print(f.as_ul())
<li><label for="id_for_subject">Subject:</label> <input id="id_for_subject" type="text" name="subject" maxlength="100" /></li>
<li><label for="id_for_message">Message:</label> <input type="text" name="message" id="id_for_message" /></li>
<li><label for="id_for_sender">Sender:</label> <input type="text" name="sender" id="id_for_sender" /></li>
<li><label for="id_for_cc_myself">Cc myself:</label> <input type="checkbox" name="cc_myself" id="id_for_cc_myself" /></li>
- >>> print f.as_p()
+ >>> print(f.as_p())
<p><label for="id_for_subject">Subject:</label> <input id="id_for_subject" type="text" name="subject" maxlength="100" /></p>
<p><label for="id_for_message">Message:</label> <input type="text" name="message" id="id_for_message" /></p>
<p><label for="id_for_sender">Sender:</label> <input type="text" name="sender" id="id_for_sender" /></p>
@@ -496,13 +496,13 @@ rendered. It's possible to change the colon to another character, or omit it
entirely, using the ``label_suffix`` parameter::
>>> f = ContactForm(auto_id='id_for_%s', label_suffix='')
- >>> print f.as_ul()
+ >>> print(f.as_ul())
<li><label for="id_for_subject">Subject</label> <input id="id_for_subject" type="text" name="subject" maxlength="100" /></li>
<li><label for="id_for_message">Message</label> <input type="text" name="message" id="id_for_message" /></li>
<li><label for="id_for_sender">Sender</label> <input type="text" name="sender" id="id_for_sender" /></li>
<li><label for="id_for_cc_myself">Cc myself</label> <input type="checkbox" name="cc_myself" id="id_for_cc_myself" /></li>
>>> f = ContactForm(auto_id='id_for_%s', label_suffix=' ->')
- >>> print f.as_ul()
+ >>> print(f.as_ul())
<li><label for="id_for_subject">Subject -></label> <input id="id_for_subject" type="text" name="subject" maxlength="100" /></li>
<li><label for="id_for_message">Message -></label> <input type="text" name="message" id="id_for_message" /></li>
<li><label for="id_for_sender">Sender -></label> <input type="text" name="sender" id="id_for_sender" /></li>
@@ -534,17 +534,17 @@ method you're using::
... 'sender': 'invalid email address',
... 'cc_myself': True}
>>> f = ContactForm(data, auto_id=False)
- >>> print f.as_table()
+ >>> print(f.as_table())
<tr><th>Subject:</th><td><ul class="errorlist"><li>This field is required.</li></ul><input type="text" name="subject" maxlength="100" /></td></tr>
<tr><th>Message:</th><td><input type="text" name="message" value="Hi there" /></td></tr>
<tr><th>Sender:</th><td><ul class="errorlist"><li>Enter a valid e-mail address.</li></ul><input type="text" name="sender" value="invalid email address" /></td></tr>
<tr><th>Cc myself:</th><td><input checked="checked" type="checkbox" name="cc_myself" /></td></tr>
- >>> print f.as_ul()
+ >>> print(f.as_ul())
<li><ul class="errorlist"><li>This field is required.</li></ul>Subject: <input type="text" name="subject" maxlength="100" /></li>
<li>Message: <input type="text" name="message" value="Hi there" /></li>
<li><ul class="errorlist"><li>Enter a valid e-mail address.</li></ul>Sender: <input type="text" name="sender" value="invalid email address" /></li>
<li>Cc myself: <input checked="checked" type="checkbox" name="cc_myself" /></li>
- >>> print f.as_p()
+ >>> print(f.as_p())
<p><ul class="errorlist"><li>This field is required.</li></ul></p>
<p>Subject: <input type="text" name="subject" maxlength="100" /></p>
<p>Message: <input type="text" name="message" value="Hi there" /></p>
@@ -593,13 +593,13 @@ To retrieve a single ``BoundField``, use dictionary lookup syntax on your form
using the field's name as the key::
>>> form = ContactForm()
- >>> print form['subject']
+ >>> print(form['subject'])
<input id="id_subject" type="text" name="subject" maxlength="100" />
To retrieve all ``BoundField`` objects, iterate the form::
>>> form = ContactForm()
- >>> for boundfield in form: print boundfield
+ >>> for boundfield in form: print(boundfield)
<input id="id_subject" type="text" name="subject" maxlength="100" />
<input type="text" name="message" id="id_message" />
<input type="text" name="sender" id="id_sender" />
@@ -608,10 +608,10 @@ To retrieve all ``BoundField`` objects, iterate the form::
The field-specific output honors the form object's ``auto_id`` setting::
>>> f = ContactForm(auto_id=False)
- >>> print f['message']
+ >>> print(f['message'])
<input type="text" name="message" />
>>> f = ContactForm(auto_id='id_%s')
- >>> print f['message']
+ >>> print(f['message'])
<input type="text" name="message" id="id_message" />
For a field's list of errors, access the field's ``errors`` attribute.
@@ -623,15 +623,15 @@ For a field's list of errors, access the field's ``errors`` attribute.
>>> data = {'subject': 'hi', 'message': '', 'sender': '', 'cc_myself': ''}
>>> f = ContactForm(data, auto_id=False)
- >>> print f['message']
+ >>> print(f['message'])
<input type="text" name="message" />
>>> f['message'].errors
[u'This field is required.']
- >>> print f['message'].errors
+ >>> print(f['message'].errors)
<ul class="errorlist"><li>This field is required.</li></ul>
>>> f['subject'].errors
[]
- >>> print f['subject'].errors
+ >>> print(f['subject'].errors)
>>> str(f['subject'].errors)
''
@@ -667,9 +667,9 @@ by a ``Widget``::
>>> initial = {'subject': 'welcome'}
>>> unbound_form = ContactForm(initial=initial)
>>> bound_form = ContactForm(data, initial=initial)
- >>> print unbound_form['subject'].value()
+ >>> print(unbound_form['subject'].value())
welcome
- >>> print bound_form['subject'].value()
+ >>> print(bound_form['subject'].value())
hi
.. _binding-uploaded-files:
@@ -753,7 +753,7 @@ fields are ordered first::
>>> class ContactFormWithPriority(ContactForm):
... priority = forms.CharField()
>>> f = ContactFormWithPriority(auto_id=False)
- >>> print f.as_ul()
+ >>> print(f.as_ul())
<li>Subject: <input type="text" name="subject" maxlength="100" /></li>
<li>Message: <input type="text" name="message" /></li>
<li>Sender: <input type="text" name="sender" /></li>
@@ -773,7 +773,7 @@ classes::
>>> class BeatleForm(PersonForm, InstrumentForm):
... haircut_type = CharField()
>>> b = BeatleForm(auto_id=False)
- >>> print b.as_ul()
+ >>> print(b.as_ul())
<li>First name: <input type="text" name="first_name" /></li>
<li>Last name: <input type="text" name="last_name" /></li>
<li>Instrument: <input type="text" name="instrument" /></li>
@@ -791,9 +791,9 @@ You can put several Django forms inside one ``<form>`` tag. To give each
>>> mother = PersonForm(prefix="mother")
>>> father = PersonForm(prefix="father")
- >>> print mother.as_ul()
+ >>> print(mother.as_ul())
<li><label for="id_mother-first_name">First name:</label> <input type="text" name="mother-first_name" id="id_mother-first_name" /></li>
<li><label for="id_mother-last_name">Last name:</label> <input type="text" name="mother-last_name" id="id_mother-last_name" /></li>
- >>> print father.as_ul()
+ >>> print(father.as_ul())
<li><label for="id_father-first_name">First name:</label> <input type="text" name="father-first_name" id="id_father-first_name" /></li>
<li><label for="id_father-last_name">Last name:</label> <input type="text" name="father-last_name" id="id_father-last_name" /></li>
diff --git a/docs/ref/forms/fields.txt b/docs/ref/forms/fields.txt
index fa5800692f..0da891ec4b 100644
--- a/docs/ref/forms/fields.txt
+++ b/docs/ref/forms/fields.txt
@@ -112,7 +112,7 @@ We've specified ``auto_id=False`` to simplify the output::
... url = forms.URLField(label='Your Web site', required=False)
... comment = forms.CharField()
>>> f = CommentForm(auto_id=False)
- >>> print f
+ >>> print(f)
<tr><th>Your name:</th><td><input type="text" name="name" /></td></tr>
<tr><th>Your Web site:</th><td><input type="text" name="url" /></td></tr>
<tr><th>Comment:</th><td><input type="text" name="comment" /></td></tr>
@@ -135,7 +135,7 @@ field is initialized to a particular value. For example::
... url = forms.URLField(initial='http://')
... comment = forms.CharField()
>>> f = CommentForm(auto_id=False)
- >>> print f
+ >>> print(f)
<tr><th>Name:</th><td><input type="text" name="name" value="Your name" /></td></tr>
<tr><th>Url:</th><td><input type="text" name="url" value="http://" /></td></tr>
<tr><th>Comment:</th><td><input type="text" name="comment" /></td></tr>
@@ -150,7 +150,7 @@ and the HTML output will include any validation errors::
... comment = forms.CharField()
>>> default_data = {'name': 'Your name', 'url': 'http://'}
>>> f = CommentForm(default_data, auto_id=False)
- >>> print f
+ >>> print(f)
<tr><th>Name:</th><td><input type="text" name="name" value="Your name" /></td></tr>
<tr><th>Url:</th><td><ul class="errorlist"><li>Enter a valid URL.</li></ul><input type="text" name="url" value="http://" /></td></tr>
<tr><th>Comment:</th><td><ul class="errorlist"><li>This field is required.</li></ul><input type="text" name="comment" /></td></tr>
@@ -179,7 +179,7 @@ Instead of a constant, you can also pass any callable::
>>> import datetime
>>> class DateForm(forms.Form):
... day = forms.DateField(initial=datetime.date.today)
- >>> print DateForm()
+ >>> print(DateForm())
<tr><th>Day:</th><td><input type="text" name="day" value="12/23/2008" /><td></tr>
The callable will be evaluated only when the unbound form is displayed, not when it is defined.
@@ -211,17 +211,17 @@ fields. We've specified ``auto_id=False`` to simplify the output::
... sender = forms.EmailField(help_text='A valid email address, please.')
... cc_myself = forms.BooleanField(required=False)
>>> f = HelpTextContactForm(auto_id=False)
- >>> print f.as_table()
+ >>> print(f.as_table())
<tr><th>Subject:</th><td><input type="text" name="subject" maxlength="100" /><br /><span class="helptext">100 characters max.</span></td></tr>
<tr><th>Message:</th><td><input type="text" name="message" /></td></tr>
<tr><th>Sender:</th><td><input type="text" name="sender" /><br />A valid email address, please.</td></tr>
<tr><th>Cc myself:</th><td><input type="checkbox" name="cc_myself" /></td></tr>
- >>> print f.as_ul()
+ >>> print(f.as_ul()))
<li>Subject: <input type="text" name="subject" maxlength="100" /> <span class="helptext">100 characters max.</span></li>
<li>Message: <input type="text" name="message" /></li>
<li>Sender: <input type="text" name="sender" /> A valid email address, please.</li>
<li>Cc myself: <input type="checkbox" name="cc_myself" /></li>
- >>> print f.as_p()
+ >>> print(f.as_p())
<p>Subject: <input type="text" name="subject" maxlength="100" /> <span class="helptext">100 characters max.</span></p>
<p>Message: <input type="text" name="message" /></p>
<p>Sender: <input type="text" name="sender" /> A valid email address, please.</p>
diff --git a/docs/ref/models/instances.txt b/docs/ref/models/instances.txt
index 8eaf946825..3c84be50a6 100644
--- a/docs/ref/models/instances.txt
+++ b/docs/ref/models/instances.txt
@@ -327,7 +327,7 @@ Once the object has been saved, you must reload the object in order to access
the actual value that was applied to the updated field::
>>> product = Products.objects.get(pk=product.pk)
- >>> print product.number_sold
+ >>> print(product.number_sold)
42
For more details, see the documentation on :ref:`F() expressions
diff --git a/docs/ref/models/querysets.txt b/docs/ref/models/querysets.txt
index b20c6e34e5..050598a532 100644
--- a/docs/ref/models/querysets.txt
+++ b/docs/ref/models/querysets.txt
@@ -29,7 +29,7 @@ You can evaluate a ``QuerySet`` in the following ways:
the headline of all entries in the database::
for e in Entry.objects.all():
- print e.headline
+ print(e.headline)
* **Slicing.** As explained in :ref:`limiting-querysets`, a ``QuerySet`` can
be sliced, using Python's array-slicing syntax. Slicing an unevaluated
@@ -71,7 +71,7 @@ You can evaluate a ``QuerySet`` in the following ways:
``True``, otherwise ``False``. For example::
if Entry.objects.filter(headline="Test"):
- print "There is at least one Entry with the headline Test"
+ print("There is at least one Entry with the headline Test")
Note: *Don't* use this if all you want to do is determine if at least one
result exists, and don't need the actual objects. It's more efficient to
@@ -1251,7 +1251,7 @@ The :exc:`~django.core.exceptions.DoesNotExist` exception inherits from
e = Entry.objects.get(id=3)
b = Blog.objects.get(id=1)
except ObjectDoesNotExist:
- print "Either the entry or blog doesn't exist."
+ print("Either the entry or blog doesn't exist.")
create
~~~~~~
diff --git a/docs/ref/template-response.txt b/docs/ref/template-response.txt
index a432312fd2..9e09077adc 100644
--- a/docs/ref/template-response.txt
+++ b/docs/ref/template-response.txt
@@ -215,18 +215,18 @@ the content of the response manually::
# Set up a rendered TemplateResponse
>>> t = TemplateResponse(request, 'original.html', {})
>>> t.render()
- >>> print t.content
+ >>> print(t.content)
Original content
# Re-rendering doesn't change content
>>> t.template_name = 'new.html'
>>> t.render()
- >>> print t.content
+ >>> print(t.content)
Original content
# Assigning content does change, no render() call required
>>> t.content = t.rendered_content
- >>> print t.content
+ >>> print(t.content)
New content
Post-render callbacks
diff --git a/docs/ref/templates/api.txt b/docs/ref/templates/api.txt
index 134f90c38c..aece572e07 100644
--- a/docs/ref/templates/api.txt
+++ b/docs/ref/templates/api.txt
@@ -69,7 +69,7 @@ takes one argument -- the raw template code::
>>> from django.template import Template
>>> t = Template("My name is {{ my_name }}.")
- >>> print t
+ >>> print(t)
<django.template.Template instance>
.. admonition:: Behind the scenes
diff --git a/docs/topics/auth.txt b/docs/topics/auth.txt
index 8690b832e2..b067e241ff 100644
--- a/docs/topics/auth.txt
+++ b/docs/topics/auth.txt
@@ -714,11 +714,11 @@ Django provides two functions in :mod:`django.contrib.auth`:
user = authenticate(username='john', password='secret')
if user is not None:
if user.is_active:
- print "You provided a correct username and password!"
+ print("You provided a correct username and password!")
else:
- print "Your account has been disabled!"
+ print("Your account has been disabled!")
else:
- print "Your username and password were incorrect."
+ print("Your username and password were incorrect.")
.. function:: login()
diff --git a/docs/topics/db/examples/many_to_many.txt b/docs/topics/db/examples/many_to_many.txt
index 1ad89e71bf..5a24027894 100644
--- a/docs/topics/db/examples/many_to_many.txt
+++ b/docs/topics/db/examples/many_to_many.txt
@@ -263,14 +263,14 @@ Bulk delete some Publications - references to deleted publications should go::
Bulk delete some articles - references to deleted objects should go::
>>> q = Article.objects.filter(headline__startswith='Django')
- >>> print q
+ >>> print(q)
[<Article: Django lets you build Web apps easily>]
>>> q.delete()
After the delete, the QuerySet cache needs to be cleared, and the referenced
objects should be gone::
- >>> print q
+ >>> print(q)
[]
>>> p1.article_set.all()
[<Article: NASA uses Python>]
diff --git a/docs/topics/db/queries.txt b/docs/topics/db/queries.txt
index 0a67b9b486..7782f1c3ed 100644
--- a/docs/topics/db/queries.txt
+++ b/docs/topics/db/queries.txt
@@ -284,10 +284,10 @@ actually run the query until the :class:`~django.db.models.query.QuerySet` is
>>> q = Entry.objects.filter(headline__startswith="What")
>>> q = q.filter(pub_date__lte=datetime.now())
>>> q = q.exclude(body_text__icontains="food")
- >>> print q
+ >>> print(q)
Though this looks like three database hits, in fact it hits the database only
-once, at the last line (``print q``). In general, the results of a
+once, at the last line (``print(q)``). In general, the results of a
:class:`~django.db.models.query.QuerySet` aren't fetched from the database
until you "ask" for them. When you do, the
:class:`~django.db.models.query.QuerySet` is *evaluated* by accessing the
@@ -720,8 +720,8 @@ your :class:`~django.db.models.query.QuerySet`\s correctly. For example, the
following will create two :class:`~django.db.models.query.QuerySet`\s, evaluate
them, and throw them away::
- >>> print [e.headline for e in Entry.objects.all()]
- >>> print [e.pub_date for e in Entry.objects.all()]
+ >>> print([e.headline for e in Entry.objects.all()])
+ >>> print([e.pub_date for e in Entry.objects.all()])
That means the same database query will be executed twice, effectively doubling
your database load. Also, there's a possibility the two lists may not include
@@ -732,8 +732,8 @@ To avoid this problem, simply save the
:class:`~django.db.models.query.QuerySet` and reuse it::
>>> queryset = Entry.objects.all()
- >>> print [p.headline for p in queryset] # Evaluate the query set.
- >>> print [p.pub_date for p in queryset] # Re-use the cache from the evaluation.
+ >>> print([p.headline for p in queryset]) # Evaluate the query set.
+ >>> print([p.pub_date for p in queryset]) # Re-use the cache from the evaluation.
.. _complex-lookups-with-q:
@@ -1055,16 +1055,16 @@ related object is accessed. Subsequent accesses to the foreign key on the same
object instance are cached. Example::
>>> e = Entry.objects.get(id=2)
- >>> print e.blog # Hits the database to retrieve the associated Blog.
- >>> print e.blog # Doesn't hit the database; uses cached version.
+ >>> print(e.blog) # Hits the database to retrieve the associated Blog.
+ >>> print(e.blog) # Doesn't hit the database; uses cached version.
Note that the :meth:`~django.db.models.query.QuerySet.select_related`
:class:`~django.db.models.query.QuerySet` method recursively prepopulates the
cache of all one-to-many relationships ahead of time. Example::
>>> e = Entry.objects.select_related().get(id=2)
- >>> print e.blog # Doesn't hit the database; uses cached version.
- >>> print e.blog # Doesn't hit the database; uses cached version.
+ >>> print(e.blog) # Doesn't hit the database; uses cached version.
+ >>> print(e.blog) # Doesn't hit the database; uses cached version.
.. _backwards-related-objects:
diff --git a/docs/topics/db/sql.txt b/docs/topics/db/sql.txt
index 658dfdf859..2ac47170aa 100644
--- a/docs/topics/db/sql.txt
+++ b/docs/topics/db/sql.txt
@@ -40,7 +40,7 @@ This is best illustrated with an example. Suppose you've got the following model
You could then execute custom SQL like so::
>>> for p in Person.objects.raw('SELECT * FROM myapp_person'):
- ... print p
+ ... print(p)
John Smith
Jane Jones
@@ -128,8 +128,8 @@ The ``Person`` objects returned by this query will be deferred model instances
fields that are omitted from the query will be loaded on demand. For example::
>>> for p in Person.objects.raw('SELECT id, first_name FROM myapp_person'):
- ... print p.first_name, # This will be retrieved by the original query
- ... print p.last_name # This will be retrieved on demand
+ ... print(p.first_name, # This will be retrieved by the original query
+ ... p.last_name) # This will be retrieved on demand
...
John Smith
Jane Jones
@@ -153,7 +153,7 @@ of people with their ages calculated by the database::
>>> people = Person.objects.raw('SELECT *, age(birth_date) AS age FROM myapp_person')
>>> for p in people:
- ... print "%s is %s." % (p.first_name, p.age)
+ ... print("%s is %s." % (p.first_name, p.age))
John is 37.
Jane is 42.
...
diff --git a/docs/topics/forms/formsets.txt b/docs/topics/forms/formsets.txt
index b524c24ad2..ac45c50aa8 100644
--- a/docs/topics/forms/formsets.txt
+++ b/docs/topics/forms/formsets.txt
@@ -24,7 +24,7 @@ would with a regular form::
>>> formset = ArticleFormSet()
>>> for form in formset:
- ... print form.as_table()
+ ... print(form.as_table())
<tr><th><label for="id_form-0-title">Title:</label></th><td><input type="text" name="form-0-title" id="id_form-0-title" /></td></tr>
<tr><th><label for="id_form-0-pub_date">Pub date:</label></th><td><input type="text" name="form-0-pub_date" id="id_form-0-pub_date" /></td></tr>
@@ -42,7 +42,7 @@ the formset you iterated over the ``forms`` attribute::
>>> formset = ArticleFormSet()
>>> for form in formset.forms:
- ... print form.as_table()
+ ... print(form.as_table())
Iterating over ``formset.forms`` will render the forms in the order
they were created. The default formset iterator also renders the forms
@@ -71,7 +71,7 @@ example::
... ])
>>> for form in formset:
- ... print form.as_table()
+ ... print(form.as_table())
<tr><th><label for="id_form-0-title">Title:</label></th><td><input type="text" name="form-0-title" value="Django is now open source" id="id_form-0-title" /></td></tr>
<tr><th><label for="id_form-0-pub_date">Pub date:</label></th><td><input type="text" name="form-0-pub_date" value="2008-05-12" id="id_form-0-pub_date" /></td></tr>
<tr><th><label for="id_form-1-title">Title:</label></th><td><input type="text" name="form-1-title" id="id_form-1-title" /></td></tr>
@@ -98,7 +98,7 @@ limit the maximum number of empty forms the formset will display::
>>> ArticleFormSet = formset_factory(ArticleForm, extra=2, max_num=1)
>>> formset = ArticleFormset()
>>> for form in formset:
- ... print form.as_table()
+ ... print(form.as_table())
<tr><th><label for="id_form-0-title">Title:</label></th><td><input type="text" name="form-0-title" id="id_form-0-title" /></td></tr>
<tr><th><label for="id_form-0-pub_date">Pub date:</label></th><td><input type="text" name="form-0-pub_date" id="id_form-0-pub_date" /></td></tr>
@@ -283,7 +283,7 @@ Lets you create a formset with the ability to order::
... {'title': u'Article #2', 'pub_date': datetime.date(2008, 5, 11)},
... ])
>>> for form in formset:
- ... print form.as_table()
+ ... print(form.as_table())
<tr><th><label for="id_form-0-title">Title:</label></th><td><input type="text" name="form-0-title" value="Article #1" id="id_form-0-title" /></td></tr>
<tr><th><label for="id_form-0-pub_date">Pub date:</label></th><td><input type="text" name="form-0-pub_date" value="2008-05-10" id="id_form-0-pub_date" /></td></tr>
<tr><th><label for="id_form-0-ORDER">Order:</label></th><td><input type="text" name="form-0-ORDER" value="1" id="id_form-0-ORDER" /></td></tr>
@@ -321,7 +321,7 @@ happen when the user changes these values::
>>> formset.is_valid()
True
>>> for form in formset.ordered_forms:
- ... print form.cleaned_data
+ ... print(form.cleaned_data)
{'pub_date': datetime.date(2008, 5, 1), 'ORDER': 0, 'title': u'Article #3'}
{'pub_date': datetime.date(2008, 5, 11), 'ORDER': 1, 'title': u'Article #2'}
{'pub_date': datetime.date(2008, 5, 10), 'ORDER': 2, 'title': u'Article #1'}
@@ -339,7 +339,7 @@ Lets you create a formset with the ability to delete::
... {'title': u'Article #2', 'pub_date': datetime.date(2008, 5, 11)},
... ])
>>> for form in formset:
- .... print form.as_table()
+ .... print(form.as_table())
<input type="hidden" name="form-TOTAL_FORMS" value="3" id="id_form-TOTAL_FORMS" /><input type="hidden" name="form-INITIAL_FORMS" value="2" id="id_form-INITIAL_FORMS" /><input type="hidden" name="form-MAX_NUM_FORMS" id="id_form-MAX_NUM_FORMS" />
<tr><th><label for="id_form-0-title">Title:</label></th><td><input type="text" name="form-0-title" value="Article #1" id="id_form-0-title" /></td></tr>
<tr><th><label for="id_form-0-pub_date">Pub date:</label></th><td><input type="text" name="form-0-pub_date" value="2008-05-10" id="id_form-0-pub_date" /></td></tr>
@@ -393,7 +393,7 @@ default fields/attributes of the order and deletion fields::
>>> ArticleFormSet = formset_factory(ArticleForm, formset=BaseArticleFormSet)
>>> formset = ArticleFormSet()
>>> for form in formset:
- ... print form.as_table()
+ ... print(form.as_table())
<tr><th><label for="id_form-0-title">Title:</label></th><td><input type="text" name="form-0-title" id="id_form-0-title" /></td></tr>
<tr><th><label for="id_form-0-pub_date">Pub date:</label></th><td><input type="text" name="form-0-pub_date" id="id_form-0-pub_date" /></td></tr>
<tr><th><label for="id_form-0-my_field">My field:</label></th><td><input type="text" name="form-0-my_field" id="id_form-0-my_field" /></td></tr>
diff --git a/docs/topics/forms/media.txt b/docs/topics/forms/media.txt
index 0eb3e91b3a..4399e7572c 100644
--- a/docs/topics/forms/media.txt
+++ b/docs/topics/forms/media.txt
@@ -64,7 +64,7 @@ named ``media``. The media for a CalendarWidget instance can be retrieved
through this property::
>>> w = CalendarWidget()
- >>> print w.media
+ >>> print(w.media)
<link href="http://media.example.com/pretty.css" type="text/css" media="all" rel="stylesheet" />
<script type="text/javascript" src="http://media.example.com/animations.js"></script>
<script type="text/javascript" src="http://media.example.com/actions.js"></script>
@@ -139,7 +139,7 @@ basic Calendar widget from the example above::
... js = ('whizbang.js',)
>>> w = FancyCalendarWidget()
- >>> print w.media
+ >>> print(w.media)
<link href="http://media.example.com/pretty.css" type="text/css" media="all" rel="stylesheet" />
<link href="http://media.example.com/fancy.css" type="text/css" media="all" rel="stylesheet" />
<script type="text/javascript" src="http://media.example.com/animations.js"></script>
@@ -159,7 +159,7 @@ declaration to the media declaration::
... js = ('whizbang.js',)
>>> w = FancyCalendarWidget()
- >>> print w.media
+ >>> print(w.media)
<link href="http://media.example.com/fancy.css" type="text/css" media="all" rel="stylesheet" />
<script type="text/javascript" src="http://media.example.com/whizbang.js"></script>
@@ -221,7 +221,7 @@ was ``None``::
... js = ('animations.js', 'http://othersite.com/actions.js')
>>> w = CalendarWidget()
- >>> print w.media
+ >>> print(w.media)
<link href="/css/pretty.css" type="text/css" media="all" rel="stylesheet" />
<script type="text/javascript" src="http://uploads.example.com/animations.js"></script>
<script type="text/javascript" src="http://othersite.com/actions.js"></script>
@@ -229,7 +229,7 @@ was ``None``::
But if :setting:`STATIC_URL` is ``'http://static.example.com/'``::
>>> w = CalendarWidget()
- >>> print w.media
+ >>> print(w.media)
<link href="/css/pretty.css" type="text/css" media="all" rel="stylesheet" />
<script type="text/javascript" src="http://static.example.com/animations.js"></script>
<script type="text/javascript" src="http://othersite.com/actions.js"></script>
@@ -252,12 +252,12 @@ If you only want media of a particular type, you can use the subscript operator
to filter out a medium of interest. For example::
>>> w = CalendarWidget()
- >>> print w.media
+ >>> print(w.media)
<link href="http://media.example.com/pretty.css" type="text/css" media="all" rel="stylesheet" />
<script type="text/javascript" src="http://media.example.com/animations.js"></script>
<script type="text/javascript" src="http://media.example.com/actions.js"></script>
- >>> print w.media['css']
+ >>> print(w.media)['css']
<link href="http://media.example.com/pretty.css" type="text/css" media="all" rel="stylesheet" />
When you use the subscript operator, the value that is returned is a new
@@ -282,7 +282,7 @@ the resulting Media object contains the union of the media from both files::
>>> w1 = CalendarWidget()
>>> w2 = OtherWidget()
- >>> print w1.media + w2.media
+ >>> print(w1.media + w2.media)
<link href="http://media.example.com/pretty.css" type="text/css" media="all" rel="stylesheet" />
<script type="text/javascript" src="http://media.example.com/animations.js"></script>
<script type="text/javascript" src="http://media.example.com/actions.js"></script>
diff --git a/docs/topics/forms/modelforms.txt b/docs/topics/forms/modelforms.txt
index 6eadf217cc..df76b8094f 100644
--- a/docs/topics/forms/modelforms.txt
+++ b/docs/topics/forms/modelforms.txt
@@ -556,7 +556,7 @@ This will create a formset that is capable of working with the data associated
with the ``Author`` model. It works just like a regular formset::
>>> formset = AuthorFormSet()
- >>> print formset
+ >>> print(formset)
<input type="hidden" name="form-TOTAL_FORMS" value="1" id="id_form-TOTAL_FORMS" /><input type="hidden" name="form-INITIAL_FORMS" value="0" id="id_form-INITIAL_FORMS" /><input type="hidden" name="form-MAX_NUM_FORMS" id="id_form-MAX_NUM_FORMS" />
<tr><th><label for="id_form-0-name">Name:</label></th><td><input id="id_form-0-name" type="text" name="form-0-name" maxlength="100" /></td></tr>
<tr><th><label for="id_form-0-title">Title:</label></th><td><select name="form-0-title" id="id_form-0-title">
@@ -692,7 +692,7 @@ so long as the total number of forms does not exceed ``max_num``::
>>> AuthorFormSet = modelformset_factory(Author, max_num=4, extra=2)
>>> formset = AuthorFormSet(queryset=Author.objects.order_by('name'))
>>> for form in formset:
- ... print form.as_table()
+ ... print(form.as_table())
<tr><th><label for="id_form-0-name">Name:</label></th><td><input id="id_form-0-name" type="text" name="form-0-name" value="Charles Baudelaire" maxlength="100" /><input type="hidden" name="form-0-id" value="1" id="id_form-0-id" /></td></tr>
<tr><th><label for="id_form-1-name">Name:</label></th><td><input id="id_form-1-name" type="text" name="form-1-name" value="Paul Verlaine" maxlength="100" /><input type="hidden" name="form-1-id" value="3" id="id_form-1-id" /></td></tr>
<tr><th><label for="id_form-2-name">Name:</label></th><td><input id="id_form-2-name" type="text" name="form-2-name" value="Walt Whitman" maxlength="100" /><input type="hidden" name="form-2-id" value="2" id="id_form-2-id" /></td></tr>
diff --git a/docs/topics/http/urls.txt b/docs/topics/http/urls.txt
index ee1d4e8616..2f272c5095 100644
--- a/docs/topics/http/urls.txt
+++ b/docs/topics/http/urls.txt
@@ -964,7 +964,7 @@ information about the URL pattern that matches a URL::
# Resolve a URL
match = resolve('/some/path/')
# Print the URL pattern that matches the URL
- print match.url_name
+ print(match.url_name)
A :class:`ResolverMatch` object can also be assigned to a triple::
diff --git a/docs/topics/i18n/translation.txt b/docs/topics/i18n/translation.txt
index 052109b72c..4f56b251cf 100644
--- a/docs/topics/i18n/translation.txt
+++ b/docs/topics/i18n/translation.txt
@@ -436,7 +436,7 @@ languages::
>>> from django.utils.translation import get_language_info
>>> li = get_language_info('de')
- >>> print li['name'], li['name_local'], li['bidi']
+ >>> print(li['name'], li['name_local'], li['bidi'])
German Deutsch False
The ``name`` and ``name_local`` attributes of the dictionary contain the name of
diff --git a/docs/topics/install.txt b/docs/topics/install.txt
index 2955f9d3b1..4fd745d22b 100644
--- a/docs/topics/install.txt
+++ b/docs/topics/install.txt
@@ -172,7 +172,7 @@ This file should also be located in your ``site-packages`` directory.
.. code-block:: bash
- python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"
+ python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"
(Note that this should be run from a shell prompt, not a Python interactive
prompt.)
diff --git a/docs/topics/signals.txt b/docs/topics/signals.txt
index b4f70cf9e1..3ef68316a9 100644
--- a/docs/topics/signals.txt
+++ b/docs/topics/signals.txt
@@ -83,7 +83,7 @@ function or method:
.. code-block:: python
def my_callback(sender, **kwargs):
- print "Request finished!"
+ print("Request finished!")
Notice that the function takes a ``sender`` argument, along with wildcard
keyword arguments (``**kwargs``); all signal handlers must take these arguments.
@@ -125,7 +125,7 @@ receiver:
@receiver(request_finished)
def my_callback(sender, **kwargs):
- print "Request finished!"
+ print("Request finished!")
Now, our ``my_callback`` function will be called each time a request finishes.
diff --git a/docs/topics/signing.txt b/docs/topics/signing.txt
index f2ffd8a20c..07de97e2f3 100644
--- a/docs/topics/signing.txt
+++ b/docs/topics/signing.txt
@@ -64,7 +64,7 @@ If the signature or value have been altered in any way, a
>>> try:
... original = signer.unsign(value)
... except signing.BadSignature:
- ... print "Tampering detected!"
+ ... print("Tampering detected!")
By default, the ``Signer`` class uses the :setting:`SECRET_KEY` setting to
generate signatures. You can use a different secret by passing it to the
diff --git a/extras/csrf_migration_helper.py b/extras/csrf_migration_helper.py
index 0e13163b4f..067580ca81 100755
--- a/extras/csrf_migration_helper.py
+++ b/extras/csrf_migration_helper.py
@@ -319,29 +319,29 @@ def main(pythonpaths):
found = search_python_list(python_code, to_search)
# Display:
- print t.absolute_filename
+ print(t.absolute_filename)
for r in t.relative_filenames:
- print u" AKA %s" % r
- print u" POST forms: %s" % num_post_forms
- print u" With token: %s" % (num_post_forms - len(form_lines_without_token))
+ print(" AKA %s" % r)
+ print(" POST forms: %s" % num_post_forms)
+ print(" With token: %s" % (num_post_forms - len(form_lines_without_token)))
if form_lines_without_token:
- print u" Without token:"
+ print(" Without token:")
for ln in form_lines_without_token:
- print "%s:%d:" % (t.absolute_filename, ln)
- print
- print u" Searching for:"
+ print("%s:%d:" % (t.absolute_filename, ln))
+ print('')
+ print(" Searching for:")
for r in to_search:
- print u" " + r
- print
- print u" Found:"
+ print(" " + r)
+ print('')
+ print(" Found:")
if len(found) == 0:
- print " Nothing"
+ print(" Nothing")
else:
for fn, ln in found:
- print "%s:%d:" % (fn, ln)
+ print("%s:%d:" % (fn, ln))
- print
- print "----"
+ print('')
+ print("----")
parser = OptionParser(usage=USAGE)
@@ -356,7 +356,7 @@ if __name__ == '__main__':
settings = getattr(options, 'settings', None)
if settings is None:
if os.environ.get("DJANGO_SETTINGS_MODULE", None) is None:
- print "You need to set DJANGO_SETTINGS_MODULE or use the '--settings' parameter"
+ print("You need to set DJANGO_SETTINGS_MODULE or use the '--settings' parameter")
sys.exit(1)
else:
os.environ["DJANGO_SETTINGS_MODULE"] = settings
diff --git a/tests/regressiontests/admin_scripts/management/commands/app_command.py b/tests/regressiontests/admin_scripts/management/commands/app_command.py
index 6adab6eafd..d26df12642 100644
--- a/tests/regressiontests/admin_scripts/management/commands/app_command.py
+++ b/tests/regressiontests/admin_scripts/management/commands/app_command.py
@@ -7,5 +7,5 @@ class Command(AppCommand):
args = '[appname ...]'
def handle_app(self, app, **options):
- print 'EXECUTE:AppCommand app=%s, options=%s' % (app, sorted(options.items()))
+ print('EXECUTE:AppCommand app=%s, options=%s' % (app, sorted(options.items())))
diff --git a/tests/regressiontests/admin_scripts/management/commands/base_command.py b/tests/regressiontests/admin_scripts/management/commands/base_command.py
index 05fbcbc9c3..2701f32a05 100644
--- a/tests/regressiontests/admin_scripts/management/commands/base_command.py
+++ b/tests/regressiontests/admin_scripts/management/commands/base_command.py
@@ -14,4 +14,4 @@ class Command(BaseCommand):
args = '[labels ...]'
def handle(self, *labels, **options):
- print 'EXECUTE:BaseCommand labels=%s, options=%s' % (labels, sorted(options.items()))
+ print('EXECUTE:BaseCommand labels=%s, options=%s' % (labels, sorted(options.items())))
diff --git a/tests/regressiontests/admin_scripts/management/commands/label_command.py b/tests/regressiontests/admin_scripts/management/commands/label_command.py
index 74cbd6991d..3bce1305bc 100644
--- a/tests/regressiontests/admin_scripts/management/commands/label_command.py
+++ b/tests/regressiontests/admin_scripts/management/commands/label_command.py
@@ -7,4 +7,4 @@ class Command(LabelCommand):
args = '<label>'
def handle_label(self, label, **options):
- print 'EXECUTE:LabelCommand label=%s, options=%s' % (label, sorted(options.items()))
+ print('EXECUTE:LabelCommand label=%s, options=%s' % (label, sorted(options.items())))
diff --git a/tests/regressiontests/admin_scripts/management/commands/noargs_command.py b/tests/regressiontests/admin_scripts/management/commands/noargs_command.py
index 0c272963b1..9652099f9b 100644
--- a/tests/regressiontests/admin_scripts/management/commands/noargs_command.py
+++ b/tests/regressiontests/admin_scripts/management/commands/noargs_command.py
@@ -7,4 +7,4 @@ class Command(NoArgsCommand):
def handle_noargs(self, **options):
- print 'EXECUTE:NoArgsCommand options=%s' % sorted(options.items())
+ print('EXECUTE:NoArgsCommand options=%s' % sorted(options.items()))
diff --git a/tests/regressiontests/test_runner/tests.py b/tests/regressiontests/test_runner/tests.py
index 9f8085b5b6..27e18ce550 100644
--- a/tests/regressiontests/test_runner/tests.py
+++ b/tests/regressiontests/test_runner/tests.py
@@ -166,7 +166,7 @@ class CustomOptionsTestRunner(simple.DjangoTestSuiteRunner):
self.option_c = option_c
def run_tests(self, test_labels, extra_tests=None, **kwargs):
- print "%s:%s:%s" % (self.option_a, self.option_b, self.option_c)
+ print("%s:%s:%s" % (self.option_a, self.option_b, self.option_c))
class CustomTestRunnerOptionsTests(AdminScriptTestCase):
diff --git a/tests/runtests.py b/tests/runtests.py
index 257aa3083d..5e5c7dcecc 100755
--- a/tests/runtests.py
+++ b/tests/runtests.py
@@ -126,7 +126,7 @@ def setup(verbosity, test_labels):
# this module and add it to the list to test.
if not test_labels or module_name in test_labels_set:
if verbosity >= 2:
- print "Importing application %s" % module_name
+ print("Importing application %s" % module_name)
mod = load_app(module_label)
if mod:
if module_label not in settings.INSTALLED_APPS:
@@ -178,7 +178,7 @@ def bisect_tests(bisection_label, options, test_labels):
from django.db.models.loading import get_apps
test_labels = [app.__name__.split('.')[-2] for app in get_apps()]
- print '***** Bisecting test suite:',' '.join(test_labels)
+ print('***** Bisecting test suite: %s' % ' '.join(test_labels))
# Make sure the bisection point isn't in the test list
# Also remove tests that need to be run in specific combinations
@@ -202,44 +202,44 @@ def bisect_tests(bisection_label, options, test_labels):
midpoint = len(test_labels)/2
test_labels_a = test_labels[:midpoint] + [bisection_label]
test_labels_b = test_labels[midpoint:] + [bisection_label]
- print '***** Pass %da: Running the first half of the test suite' % iteration
- print '***** Test labels:',' '.join(test_labels_a)
+ print('***** Pass %da: Running the first half of the test suite' % iteration)
+ print('***** Test labels: %s' % ' '.join(test_labels_a))
failures_a = subprocess.call(subprocess_args + test_labels_a)
- print '***** Pass %db: Running the second half of the test suite' % iteration
- print '***** Test labels:',' '.join(test_labels_b)
- print
+ print('***** Pass %db: Running the second half of the test suite' % iteration)
+ print('***** Test labels: %s' % ' '.join(test_labels_b))
+ print('')
failures_b = subprocess.call(subprocess_args + test_labels_b)
if failures_a and not failures_b:
- print "***** Problem found in first half. Bisecting again..."
+ print("***** Problem found in first half. Bisecting again...")
iteration = iteration + 1
test_labels = test_labels_a[:-1]
elif failures_b and not failures_a:
- print "***** Problem found in second half. Bisecting again..."
+ print("***** Problem found in second half. Bisecting again...")
iteration = iteration + 1
test_labels = test_labels_b[:-1]
elif failures_a and failures_b:
- print "***** Multiple sources of failure found"
+ print("***** Multiple sources of failure found")
break
else:
- print "***** No source of failure found... try pair execution (--pair)"
+ print("***** No source of failure found... try pair execution (--pair)")
break
if len(test_labels) == 1:
- print "***** Source of error:",test_labels[0]
+ print("***** Source of error: %s" % test_labels[0])
teardown(state)
def paired_tests(paired_test, options, test_labels):
state = setup(int(options.verbosity), test_labels)
if not test_labels:
- print ""
+ print("")
# Get the full list of test labels to use for bisection
from django.db.models.loading import get_apps
test_labels = [app.__name__.split('.')[-2] for app in get_apps()]
- print '***** Trying paired execution'
+ print('***** Trying paired execution')
# Make sure the constant member of the pair isn't in the test list
# Also remove tests that need to be run in specific combinations
@@ -259,14 +259,14 @@ def paired_tests(paired_test, options, test_labels):
subprocess_args.append('--noinput')
for i, label in enumerate(test_labels):
- print '***** %d of %d: Check test pairing with %s' % (
- i+1, len(test_labels), label)
+ print('***** %d of %d: Check test pairing with %s' % (
+ i + 1, len(test_labels), label))
failures = subprocess.call(subprocess_args + [label, paired_test])
if failures:
- print '***** Found problem pair with',label
+ print('***** Found problem pair with %s' % label)
return
- print '***** No problem pair found'
+ print('***** No problem pair found')
teardown(state)
if __name__ == "__main__":