Browse Source

[5.0.x] Added missing pycon directives in various docs.

Backport of 718b32c6918037cfc746d7867333d79a3c887a8c from main
Mariusz Felisiak 1 year ago
parent
commit
415ef34c4c

+ 112 - 48
docs/ref/contrib/gis/gdal.txt

@@ -1246,25 +1246,31 @@ blue.
     sources (using the sample data from the GeoDjango tests; see also the
     sources (using the sample data from the GeoDjango tests; see also the
     :ref:`gdal_sample_data` section).
     :ref:`gdal_sample_data` section).
 
 
+    .. code-block:: pycon
+
         >>> from django.contrib.gis.gdal import GDALRaster
         >>> from django.contrib.gis.gdal import GDALRaster
-        >>> rst = GDALRaster('/path/to/your/raster.tif', write=False)
+        >>> rst = GDALRaster("/path/to/your/raster.tif", write=False)
         >>> rst.name
         >>> rst.name
         '/path/to/your/raster.tif'
         '/path/to/your/raster.tif'
         >>> rst.width, rst.height  # This file has 163 x 174 pixels
         >>> rst.width, rst.height  # This file has 163 x 174 pixels
         (163, 174)
         (163, 174)
-        >>> rst = GDALRaster({  # Creates an in-memory raster
-        ...     'srid': 4326,
-        ...     'width': 4,
-        ...     'height': 4,
-        ...     'datatype': 1,
-        ...     'bands': [{
-        ...         'data': (2, 3),
-        ...         'offset': (1, 1),
-        ...         'size': (2, 2),
-        ...         'shape': (2, 1),
-        ...         'nodata_value': 5,
-        ...     }]
-        ... })
+        >>> rst = GDALRaster(
+        ...     {  # Creates an in-memory raster
+        ...         "srid": 4326,
+        ...         "width": 4,
+        ...         "height": 4,
+        ...         "datatype": 1,
+        ...         "bands": [
+        ...             {
+        ...                 "data": (2, 3),
+        ...                 "offset": (1, 1),
+        ...                 "size": (2, 2),
+        ...                 "shape": (2, 1),
+        ...                 "nodata_value": 5,
+        ...             }
+        ...         ],
+        ...     }
+        ... )
         >>> rst.srs.srid
         >>> rst.srs.srid
         4326
         4326
         >>> rst.width, rst.height
         >>> rst.width, rst.height
@@ -1274,7 +1280,7 @@ blue.
                [5, 2, 3, 5],
                [5, 2, 3, 5],
                [5, 2, 3, 5],
                [5, 2, 3, 5],
                [5, 5, 5, 5]], dtype=uint8)
                [5, 5, 5, 5]], dtype=uint8)
-        >>> rst_file = open('/path/to/your/raster.tif', 'rb')
+        >>> rst_file = open("/path/to/your/raster.tif", "rb")
         >>> rst_bytes = rst_file.read()
         >>> rst_bytes = rst_file.read()
         >>> rst = GDALRaster(rst_bytes)
         >>> rst = GDALRaster(rst_bytes)
         >>> rst.is_vsi_based
         >>> rst.is_vsi_based
@@ -1291,7 +1297,9 @@ blue.
         The name of the source which is equivalent to the input file path or the name
         The name of the source which is equivalent to the input file path or the name
         provided upon instantiation.
         provided upon instantiation.
 
 
-            >>> GDALRaster({'width': 10, 'height': 10, 'name': 'myraster', 'srid': 4326}).name
+        .. code-block:: pycon
+
+            >>> GDALRaster({"width": 10, "height": 10, "name": "myraster", "srid": 4326}).name
             'myraster'
             'myraster'
 
 
     .. attribute:: driver
     .. attribute:: driver
@@ -1306,15 +1314,27 @@ blue.
 
 
         An in-memory raster is created through the following example:
         An in-memory raster is created through the following example:
 
 
-            >>> GDALRaster({'width': 10, 'height': 10, 'srid': 4326}).driver.name
+        .. code-block:: pycon
+
+            >>> GDALRaster({"width": 10, "height": 10, "srid": 4326}).driver.name
             'MEM'
             'MEM'
 
 
         A file based GeoTiff raster is created through the following example:
         A file based GeoTiff raster is created through the following example:
 
 
+        .. code-block:: pycon
+
             >>> import tempfile
             >>> import tempfile
-            >>> rstfile = tempfile.NamedTemporaryFile(suffix='.tif')
-            >>> rst = GDALRaster({'driver': 'GTiff', 'name': rstfile.name, 'srid': 4326,
-            ...                   'width': 255, 'height': 255, 'nr_of_bands': 1})
+            >>> rstfile = tempfile.NamedTemporaryFile(suffix=".tif")
+            >>> rst = GDALRaster(
+            ...     {
+            ...         "driver": "GTiff",
+            ...         "name": rstfile.name,
+            ...         "srid": 4326,
+            ...         "width": 255,
+            ...         "height": 255,
+            ...         "nr_of_bands": 1,
+            ...     }
+            ... )
             >>> rst.name
             >>> rst.name
             '/tmp/tmp7x9H4J.tif'           # The exact filename will be different on your computer
             '/tmp/tmp7x9H4J.tif'           # The exact filename will be different on your computer
             >>> rst.driver.name
             >>> rst.driver.name
@@ -1324,14 +1344,18 @@ blue.
 
 
         The width of the source in pixels (X-axis).
         The width of the source in pixels (X-axis).
 
 
-            >>> GDALRaster({'width': 10, 'height': 20, 'srid': 4326}).width
+        .. code-block:: pycon
+
+            >>> GDALRaster({"width": 10, "height": 20, "srid": 4326}).width
             10
             10
 
 
     .. attribute:: height
     .. attribute:: height
 
 
         The height of the source in pixels (Y-axis).
         The height of the source in pixels (Y-axis).
 
 
-            >>> GDALRaster({'width': 10, 'height': 20, 'srid': 4326}).height
+        .. code-block:: pycon
+
+            >>> GDALRaster({"width": 10, "height": 20, "srid": 4326}).height
             20
             20
 
 
     .. attribute:: srs
     .. attribute:: srs
@@ -1341,7 +1365,9 @@ blue.
         setting it to an other :class:`SpatialReference` or providing any input
         setting it to an other :class:`SpatialReference` or providing any input
         that is accepted by the :class:`SpatialReference` constructor.
         that is accepted by the :class:`SpatialReference` constructor.
 
 
-            >>> rst = GDALRaster({'width': 10, 'height': 20, 'srid': 4326})
+        .. code-block:: pycon
+
+            >>> rst = GDALRaster({"width": 10, "height": 20, "srid": 4326})
             >>> rst.srs.srid
             >>> rst.srs.srid
             4326
             4326
             >>> rst.srs = 3086
             >>> rst.srs = 3086
@@ -1354,7 +1380,9 @@ blue.
         property is a shortcut to getting or setting the SRID through the
         property is a shortcut to getting or setting the SRID through the
         :attr:`srs` attribute.
         :attr:`srs` attribute.
 
 
-            >>> rst = GDALRaster({'width': 10, 'height': 20, 'srid': 4326})
+        .. code-block:: pycon
+
+            >>> rst = GDALRaster({"width": 10, "height": 20, "srid": 4326})
             >>> rst.srid
             >>> rst.srid
             4326
             4326
             >>> rst.srid = 3086
             >>> rst.srid = 3086
@@ -1378,7 +1406,9 @@ blue.
 
 
         The default is ``[0.0, 1.0, 0.0, 0.0, 0.0, -1.0]``.
         The default is ``[0.0, 1.0, 0.0, 0.0, 0.0, -1.0]``.
 
 
-            >>> rst = GDALRaster({'width': 10, 'height': 20, 'srid': 4326})
+        .. code-block:: pycon
+
+            >>> rst = GDALRaster({"width": 10, "height": 20, "srid": 4326})
             >>> rst.geotransform
             >>> rst.geotransform
             [0.0, 1.0, 0.0, 0.0, 0.0, -1.0]
             [0.0, 1.0, 0.0, 0.0, 0.0, -1.0]
 
 
@@ -1388,7 +1418,9 @@ blue.
         reference system of the source, as a point object with ``x`` and ``y``
         reference system of the source, as a point object with ``x`` and ``y``
         members.
         members.
 
 
-            >>> rst = GDALRaster({'width': 10, 'height': 20, 'srid': 4326})
+        .. code-block:: pycon
+
+            >>> rst = GDALRaster({"width": 10, "height": 20, "srid": 4326})
             >>> rst.origin
             >>> rst.origin
             [0.0, 0.0]
             [0.0, 0.0]
             >>> rst.origin.x = 1
             >>> rst.origin.x = 1
@@ -1401,7 +1433,9 @@ blue.
         object with ``x`` and ``y``  members. See :attr:`geotransform` for more
         object with ``x`` and ``y``  members. See :attr:`geotransform` for more
         information.
         information.
 
 
-            >>> rst = GDALRaster({'width': 10, 'height': 20, 'srid': 4326})
+        .. code-block:: pycon
+
+            >>> rst = GDALRaster({"width": 10, "height": 20, "srid": 4326})
             >>> rst.scale
             >>> rst.scale
             [1.0, -1.0]
             [1.0, -1.0]
             >>> rst.scale.x = 2
             >>> rst.scale.x = 2
@@ -1414,7 +1448,9 @@ blue.
         with ``x`` and ``y``  members. In case of north up images, these
         with ``x`` and ``y``  members. In case of north up images, these
         coefficients are both ``0``.
         coefficients are both ``0``.
 
 
-            >>> rst = GDALRaster({'width': 10, 'height': 20, 'srid': 4326})
+        .. code-block:: pycon
+
+            >>> rst = GDALRaster({"width": 10, "height": 20, "srid": 4326})
             >>> rst.skew
             >>> rst.skew
             [0.0, 0.0]
             [0.0, 0.0]
             >>> rst.skew.x = 3
             >>> rst.skew.x = 3
@@ -1427,7 +1463,9 @@ blue.
         ``(xmin, ymin, xmax, ymax)`` in the spatial reference system of the
         ``(xmin, ymin, xmax, ymax)`` in the spatial reference system of the
         source.
         source.
 
 
-            >>> rst = GDALRaster({'width': 10, 'height': 20, 'srid': 4326})
+        .. code-block:: pycon
+
+            >>> rst = GDALRaster({"width": 10, "height": 20, "srid": 4326})
             >>> rst.extent
             >>> rst.extent
             (0.0, -20.0, 10.0, 0.0)
             (0.0, -20.0, 10.0, 0.0)
             >>> rst.origin.x = 100
             >>> rst.origin.x = 100
@@ -1438,8 +1476,16 @@ blue.
 
 
         List of all bands of the source, as :class:`GDALBand` instances.
         List of all bands of the source, as :class:`GDALBand` instances.
 
 
-            >>> rst = GDALRaster({"width": 1, "height": 2, 'srid': 4326,
-            ...                   "bands": [{"data": [0, 1]}, {"data": [2, 3]}]})
+        .. code-block:: pycon
+
+            >>> rst = GDALRaster(
+            ...     {
+            ...         "width": 1,
+            ...         "height": 2,
+            ...         "srid": 4326,
+            ...         "bands": [{"data": [0, 1]}, {"data": [2, 3]}],
+            ...     }
+            ... )
             >>> len(rst.bands)
             >>> len(rst.bands)
             2
             2
             >>> rst.bands[1].data()
             >>> rst.bands[1].data()
@@ -1482,12 +1528,18 @@ blue.
         For example, the warp function can be used for aggregating a raster to
         For example, the warp function can be used for aggregating a raster to
         the double of its original pixel scale:
         the double of its original pixel scale:
 
 
-            >>> rst = GDALRaster({
-            ...     "width": 6, "height": 6, "srid": 3086,
-            ...     "origin": [500000, 400000],
-            ...     "scale": [100, -100],
-            ...     "bands": [{"data": range(36), "nodata_value": 99}]
-            ... })
+        .. code-block:: pycon
+
+            >>> rst = GDALRaster(
+            ...     {
+            ...         "width": 6,
+            ...         "height": 6,
+            ...         "srid": 3086,
+            ...         "origin": [500000, 400000],
+            ...         "scale": [100, -100],
+            ...         "bands": [{"data": range(36), "nodata_value": 99}],
+            ...     }
+            ... )
             >>> target = rst.warp({"scale": [200, -200], "width": 3, "height": 3})
             >>> target = rst.warp({"scale": [200, -200], "width": 3, "height": 3})
             >>> target.bands[0].data()
             >>> target.bands[0].data()
             array([[  7.,   9.,  11.],
             array([[  7.,   9.,  11.],
@@ -1516,12 +1568,18 @@ blue.
         argument. Consult the :attr:`~GDALRaster.warp` documentation for detail
         argument. Consult the :attr:`~GDALRaster.warp` documentation for detail
         on those arguments.
         on those arguments.
 
 
-            >>> rst = GDALRaster({
-            ...     "width": 6, "height": 6, "srid": 3086,
-            ...     "origin": [500000, 400000],
-            ...     "scale": [100, -100],
-            ...     "bands": [{"data": range(36), "nodata_value": 99}]
-            ... })
+        .. code-block:: pycon
+
+            >>> rst = GDALRaster(
+            ...     {
+            ...         "width": 6,
+            ...         "height": 6,
+            ...         "srid": 3086,
+            ...         "origin": [500000, 400000],
+            ...         "scale": [100, -100],
+            ...         "bands": [{"data": range(36), "nodata_value": 99}],
+            ...     }
+            ... )
             >>> target_srs = SpatialReference(4326)
             >>> target_srs = SpatialReference(4326)
             >>> target = rst.transform(target_srs)
             >>> target = rst.transform(target_srs)
             >>> target.origin
             >>> target.origin
@@ -1547,13 +1605,15 @@ blue.
 
 
         To remove a metadata item, use ``None`` as the metadata value.
         To remove a metadata item, use ``None`` as the metadata value.
 
 
-            >>> rst = GDALRaster({'width': 10, 'height': 20, 'srid': 4326})
+        .. code-block:: pycon
+
+            >>> rst = GDALRaster({"width": 10, "height": 20, "srid": 4326})
             >>> rst.metadata
             >>> rst.metadata
             {}
             {}
-            >>> rst.metadata = {'DEFAULT': {'OWNER': 'Django', 'VERSION': '1.0'}}
+            >>> rst.metadata = {"DEFAULT": {"OWNER": "Django", "VERSION": "1.0"}}
             >>> rst.metadata
             >>> rst.metadata
             {'DEFAULT': {'OWNER': 'Django', 'VERSION': '1.0'}}
             {'DEFAULT': {'OWNER': 'Django', 'VERSION': '1.0'}}
-            >>> rst.metadata = {'DEFAULT': {'OWNER': None, 'VERSION': '2.0'}}
+            >>> rst.metadata = {"DEFAULT": {"OWNER": None, "VERSION": "2.0"}}
             >>> rst.metadata
             >>> rst.metadata
             {'DEFAULT': {'VERSION': '2.0'}}
             {'DEFAULT': {'VERSION': '2.0'}}
 
 
@@ -1691,7 +1751,11 @@ blue.
 
 
         For example:
         For example:
 
 
-            >>> rst = GDALRaster({'width': 4, 'height': 4, 'srid': 4326, 'datatype': 1, 'nr_of_bands': 1})
+        .. code-block:: pycon
+
+            >>> rst = GDALRaster(
+            ...     {"width": 4, "height": 4, "srid": 4326, "datatype": 1, "nr_of_bands": 1}
+            ... )
             >>> bnd = rst.bands[0]
             >>> bnd = rst.bands[0]
             >>> bnd.data(range(16))
             >>> bnd.data(range(16))
             >>> bnd.data()
             >>> bnd.data()
@@ -1708,7 +1772,7 @@ blue.
                    [ 4, -1, -2,  7],
                    [ 4, -1, -2,  7],
                    [ 8, -3, -4, 11],
                    [ 8, -3, -4, 11],
                    [12, 13, 14, 15]], dtype=int8)
                    [12, 13, 14, 15]], dtype=int8)
-            >>> bnd.data(data='\x9d\xa8\xb3\xbe', offset=(1, 1), size=(2, 2))
+            >>> bnd.data(data="\x9d\xa8\xb3\xbe", offset=(1, 1), size=(2, 2))
             >>> bnd.data()
             >>> bnd.data()
             array([[  0,   1,   2,   3],
             array([[  0,   1,   2,   3],
                    [  4, -99, -88,   7],
                    [  4, -99, -88,   7],

+ 10 - 6
docs/ref/contrib/postgres/search.txt

@@ -94,13 +94,17 @@ Examples:
 
 
 .. _Full Text Search docs: https://www.postgresql.org/docs/current/textsearch-controls.html#TEXTSEARCH-PARSING-QUERIES
 .. _Full Text Search docs: https://www.postgresql.org/docs/current/textsearch-controls.html#TEXTSEARCH-PARSING-QUERIES
 
 
+.. code-block:: pycon
+
     >>> from django.contrib.postgres.search import SearchQuery
     >>> from django.contrib.postgres.search import SearchQuery
-    >>> SearchQuery('red tomato')  # two keywords
-    >>> SearchQuery('tomato red')  # same results as above
-    >>> SearchQuery('red tomato', search_type='phrase')  # a phrase
-    >>> SearchQuery('tomato red', search_type='phrase')  # a different phrase
-    >>> SearchQuery("'tomato' & ('red' | 'green')", search_type='raw')  # boolean operators
-    >>> SearchQuery("'tomato' ('red' OR 'green')", search_type='websearch')  # websearch operators
+    >>> SearchQuery("red tomato")  # two keywords
+    >>> SearchQuery("tomato red")  # same results as above
+    >>> SearchQuery("red tomato", search_type="phrase")  # a phrase
+    >>> SearchQuery("tomato red", search_type="phrase")  # a different phrase
+    >>> SearchQuery("'tomato' & ('red' | 'green')", search_type="raw")  # boolean operators
+    >>> SearchQuery(
+    ...     "'tomato' ('red' OR 'green')", search_type="websearch"
+    ... )  # websearch operators
 
 
 ``SearchQuery`` terms can be combined logically to provide more flexibility:
 ``SearchQuery`` terms can be combined logically to provide more flexibility:
 
 

+ 17 - 4
docs/ref/forms/api.txt

@@ -148,6 +148,8 @@ if validation has side effects, those side effects will only be triggered once.
 Returns a ``dict`` that maps fields to their original ``ValidationError``
 Returns a ``dict`` that maps fields to their original ``ValidationError``
 instances.
 instances.
 
 
+.. code-block:: pycon
+
     >>> f.errors.as_data()
     >>> f.errors.as_data()
     {'sender': [ValidationError(['Enter a valid email address.'])],
     {'sender': [ValidationError(['Enter a valid email address.'])],
     'subject': [ValidationError(['This field is required.'])]}
     'subject': [ValidationError(['This field is required.'])]}
@@ -170,6 +172,8 @@ messages in ``Form.errors``.
 
 
 Returns the errors serialized as JSON.
 Returns the errors serialized as JSON.
 
 
+.. code-block:: pycon
+
     >>> f.errors.as_json()
     >>> f.errors.as_json()
     {"sender": [{"message": "Enter a valid email address.", "code": "invalid"}],
     {"sender": [{"message": "Enter a valid email address.", "code": "invalid"}],
     "subject": [{"message": "This field is required.", "code": "required"}]}
     "subject": [{"message": "This field is required.", "code": "required"}]}
@@ -325,10 +329,14 @@ Checking which form data has changed
 Use the ``has_changed()`` method on your ``Form`` when you need to check if the
 Use the ``has_changed()`` method on your ``Form`` when you need to check if the
 form data has been changed from the initial data.
 form data has been changed from the initial data.
 
 
-    >>> data = {'subject': 'hello',
-    ...         'message': 'Hi there',
-    ...         'sender': 'foo@example.com',
-    ...         'cc_myself': True}
+.. code-block:: pycon
+
+    >>> data = {
+    ...     "subject": "hello",
+    ...     "message": "Hi there",
+    ...     "sender": "foo@example.com",
+    ...     "cc_myself": True,
+    ... }
     >>> f = ContactForm(data, initial=data)
     >>> f = ContactForm(data, initial=data)
     >>> f.has_changed()
     >>> f.has_changed()
     False
     False
@@ -336,6 +344,8 @@ form data has been changed from the initial data.
 When the form is submitted, we reconstruct it and provide the original data
 When the form is submitted, we reconstruct it and provide the original data
 so that the comparison can be done:
 so that the comparison can be done:
 
 
+.. code-block:: pycon
+
     >>> f = ContactForm(request.POST, initial=data)
     >>> f = ContactForm(request.POST, initial=data)
     >>> f.has_changed()
     >>> f.has_changed()
 
 
@@ -350,9 +360,12 @@ The ``changed_data`` attribute returns a list of the names of the fields whose
 values in the form's bound data (usually ``request.POST``) differ from what was
 values in the form's bound data (usually ``request.POST``) differ from what was
 provided in :attr:`~Form.initial`. It returns an empty list if no data differs.
 provided in :attr:`~Form.initial`. It returns an empty list if no data differs.
 
 
+.. code-block:: pycon
+
     >>> f = ContactForm(request.POST, initial=data)
     >>> f = ContactForm(request.POST, initial=data)
     >>> if f.has_changed():
     >>> if f.has_changed():
     ...     print("The following fields changed: %s" % ", ".join(f.changed_data))
     ...     print("The following fields changed: %s" % ", ".join(f.changed_data))
+    ...
     >>> f.changed_data
     >>> f.changed_data
     ['subject', 'message']
     ['subject', 'message']
 
 

+ 4 - 2
docs/ref/forms/fields.txt

@@ -1187,11 +1187,13 @@ Slightly complex built-in ``Field`` classes
         The list of fields that should be used to validate the field's value (in
         The list of fields that should be used to validate the field's value (in
         the order in which they are provided).
         the order in which they are provided).
 
 
+        .. code-block:: pycon
+
             >>> from django.forms import ComboField
             >>> from django.forms import ComboField
             >>> f = ComboField(fields=[CharField(max_length=20), EmailField()])
             >>> f = ComboField(fields=[CharField(max_length=20), EmailField()])
-            >>> f.clean('test@example.com')
+            >>> f.clean("test@example.com")
             'test@example.com'
             'test@example.com'
-            >>> f.clean('longemailaddress@example.com')
+            >>> f.clean("longemailaddress@example.com")
             Traceback (most recent call last):
             Traceback (most recent call last):
             ...
             ...
             ValidationError: ['Ensure this value has at most 20 characters (it has 28).']
             ValidationError: ['Ensure this value has at most 20 characters (it has 28).']

+ 7 - 5
docs/ref/models/database-functions.txt

@@ -89,11 +89,13 @@ Usage examples:
     A Python value passed to ``Coalesce`` on MySQL may be converted to an
     A Python value passed to ``Coalesce`` on MySQL may be converted to an
     incorrect type unless explicitly cast to the correct database type:
     incorrect type unless explicitly cast to the correct database type:
 
 
-    >>> from django.db.models import DateTimeField
-    >>> from django.db.models.functions import Cast, Coalesce
-    >>> from django.utils import timezone
-    >>> now = timezone.now()
-    >>> Coalesce('updated', Cast(now, DateTimeField()))
+    .. code-block:: pycon
+
+        >>> from django.db.models import DateTimeField
+        >>> from django.db.models.functions import Cast, Coalesce
+        >>> from django.utils import timezone
+        >>> now = timezone.now()
+        >>> Coalesce("updated", Cast(now, DateTimeField()))
 
 
 ``Collate``
 ``Collate``
 -----------
 -----------

+ 62 - 21
docs/ref/models/querysets.txt

@@ -997,6 +997,8 @@ databases don't allow ``LIMIT`` or ``OFFSET`` in the combined queries.
 Uses SQL's ``INTERSECT`` operator to return the shared elements of two or more
 Uses SQL's ``INTERSECT`` operator to return the shared elements of two or more
 ``QuerySet``\s. For example:
 ``QuerySet``\s. For example:
 
 
+.. code-block:: pycon
+
     >>> qs1.intersection(qs2, qs3)
     >>> qs1.intersection(qs2, qs3)
 
 
 See :meth:`union` for some restrictions.
 See :meth:`union` for some restrictions.
@@ -1197,7 +1199,9 @@ item in the Pizza ``QuerySet``.
 
 
 We can reduce to just two queries using ``prefetch_related``:
 We can reduce to just two queries using ``prefetch_related``:
 
 
-    >>> Pizza.objects.prefetch_related('toppings')
+.. code-block:: pycon
+
+    >>> Pizza.objects.prefetch_related("toppings")
 
 
 This implies a ``self.toppings.all()`` for each ``Pizza``; now each time
 This implies a ``self.toppings.all()`` for each ``Pizza``; now each time
 ``self.toppings.all()`` is called, instead of having to go to the database for
 ``self.toppings.all()`` is called, instead of having to go to the database for
@@ -1241,7 +1245,9 @@ database.
     results, and retrieve data using a fresh database query. So, if you write
     results, and retrieve data using a fresh database query. So, if you write
     the following:
     the following:
 
 
-        >>> pizzas = Pizza.objects.prefetch_related('toppings')
+    .. code-block:: pycon
+
+        >>> pizzas = Pizza.objects.prefetch_related("toppings")
         >>> [list(pizza.toppings.filter(spicy=True)) for pizza in pizzas]
         >>> [list(pizza.toppings.filter(spicy=True)) for pizza in pizzas]
 
 
     ...then the fact that ``pizza.toppings.all()`` has been prefetched will not
     ...then the fact that ``pizza.toppings.all()`` has been prefetched will not
@@ -1301,7 +1307,9 @@ Chaining ``prefetch_related`` calls will accumulate the lookups that are
 prefetched. To clear any ``prefetch_related`` behavior, pass ``None`` as a
 prefetched. To clear any ``prefetch_related`` behavior, pass ``None`` as a
 parameter:
 parameter:
 
 
-   >>> non_prefetched = qs.prefetch_related(None)
+.. code-block:: pycon
+
+    >>> non_prefetched = qs.prefetch_related(None)
 
 
 One difference to note when using ``prefetch_related`` is that objects created
 One difference to note when using ``prefetch_related`` is that objects created
 by a query can be shared between the different objects that they are related to
 by a query can be shared between the different objects that they are related to
@@ -1332,20 +1340,28 @@ the prefetch operation.
 In its simplest form ``Prefetch`` is equivalent to the traditional string based
 In its simplest form ``Prefetch`` is equivalent to the traditional string based
 lookups:
 lookups:
 
 
+.. code-block:: pycon
+
     >>> from django.db.models import Prefetch
     >>> from django.db.models import Prefetch
-    >>> Restaurant.objects.prefetch_related(Prefetch('pizzas__toppings'))
+    >>> Restaurant.objects.prefetch_related(Prefetch("pizzas__toppings"))
 
 
 You can provide a custom queryset with the optional ``queryset`` argument.
 You can provide a custom queryset with the optional ``queryset`` argument.
 This can be used to change the default ordering of the queryset:
 This can be used to change the default ordering of the queryset:
 
 
+.. code-block:: pycon
+
     >>> Restaurant.objects.prefetch_related(
     >>> Restaurant.objects.prefetch_related(
-    ...     Prefetch('pizzas__toppings', queryset=Toppings.objects.order_by('name')))
+    ...     Prefetch("pizzas__toppings", queryset=Toppings.objects.order_by("name"))
+    ... )
 
 
 Or to call :meth:`~django.db.models.query.QuerySet.select_related()` when
 Or to call :meth:`~django.db.models.query.QuerySet.select_related()` when
 applicable to reduce the number of queries even further:
 applicable to reduce the number of queries even further:
 
 
+.. code-block:: pycon
+
     >>> Pizza.objects.prefetch_related(
     >>> Pizza.objects.prefetch_related(
-    ...     Prefetch('restaurants', queryset=Restaurant.objects.select_related('best_pizza')))
+    ...     Prefetch("restaurants", queryset=Restaurant.objects.select_related("best_pizza"))
+    ... )
 
 
 You can also assign the prefetched result to a custom attribute with the optional
 You can also assign the prefetched result to a custom attribute with the optional
 ``to_attr`` argument. The result will be stored directly in a list.
 ``to_attr`` argument. The result will be stored directly in a list.
@@ -1353,32 +1369,42 @@ You can also assign the prefetched result to a custom attribute with the optiona
 This allows prefetching the same relation multiple times with a different
 This allows prefetching the same relation multiple times with a different
 ``QuerySet``; for instance:
 ``QuerySet``; for instance:
 
 
+.. code-block:: pycon
+
     >>> vegetarian_pizzas = Pizza.objects.filter(vegetarian=True)
     >>> vegetarian_pizzas = Pizza.objects.filter(vegetarian=True)
     >>> Restaurant.objects.prefetch_related(
     >>> Restaurant.objects.prefetch_related(
-    ...     Prefetch('pizzas', to_attr='menu'),
-    ...     Prefetch('pizzas', queryset=vegetarian_pizzas, to_attr='vegetarian_menu'))
+    ...     Prefetch("pizzas", to_attr="menu"),
+    ...     Prefetch("pizzas", queryset=vegetarian_pizzas, to_attr="vegetarian_menu"),
+    ... )
 
 
 Lookups created with custom ``to_attr`` can still be traversed as usual by other
 Lookups created with custom ``to_attr`` can still be traversed as usual by other
 lookups:
 lookups:
 
 
+.. code-block:: pycon
+
     >>> vegetarian_pizzas = Pizza.objects.filter(vegetarian=True)
     >>> vegetarian_pizzas = Pizza.objects.filter(vegetarian=True)
     >>> Restaurant.objects.prefetch_related(
     >>> Restaurant.objects.prefetch_related(
-    ...     Prefetch('pizzas', queryset=vegetarian_pizzas, to_attr='vegetarian_menu'),
-    ...     'vegetarian_menu__toppings')
+    ...     Prefetch("pizzas", queryset=vegetarian_pizzas, to_attr="vegetarian_menu"),
+    ...     "vegetarian_menu__toppings",
+    ... )
 
 
 Using ``to_attr`` is recommended when filtering down the prefetch result as it is
 Using ``to_attr`` is recommended when filtering down the prefetch result as it is
 less ambiguous than storing a filtered result in the related manager's cache:
 less ambiguous than storing a filtered result in the related manager's cache:
 
 
+.. code-block:: pycon
+
     >>> queryset = Pizza.objects.filter(vegetarian=True)
     >>> queryset = Pizza.objects.filter(vegetarian=True)
     >>>
     >>>
     >>> # Recommended:
     >>> # Recommended:
     >>> restaurants = Restaurant.objects.prefetch_related(
     >>> restaurants = Restaurant.objects.prefetch_related(
-    ...     Prefetch('pizzas', queryset=queryset, to_attr='vegetarian_pizzas'))
+    ...     Prefetch("pizzas", queryset=queryset, to_attr="vegetarian_pizzas")
+    ... )
     >>> vegetarian_pizzas = restaurants[0].vegetarian_pizzas
     >>> vegetarian_pizzas = restaurants[0].vegetarian_pizzas
     >>>
     >>>
     >>> # Not recommended:
     >>> # Not recommended:
     >>> restaurants = Restaurant.objects.prefetch_related(
     >>> restaurants = Restaurant.objects.prefetch_related(
-    ...     Prefetch('pizzas', queryset=queryset))
+    ...     Prefetch("pizzas", queryset=queryset),
+    ... )
     >>> vegetarian_pizzas = restaurants[0].pizzas.all()
     >>> vegetarian_pizzas = restaurants[0].pizzas.all()
 
 
 Custom prefetching also works with single related relations like
 Custom prefetching also works with single related relations like
@@ -1394,10 +1420,13 @@ where prefetching with a custom ``QuerySet`` is useful:
 * You want to use performance optimization techniques like
 * You want to use performance optimization techniques like
   :meth:`deferred fields <defer()>`:
   :meth:`deferred fields <defer()>`:
 
 
-    >>> queryset = Pizza.objects.only('name')
+  .. code-block:: pycon
+
+    >>> queryset = Pizza.objects.only("name")
     >>>
     >>>
     >>> restaurants = Restaurant.objects.prefetch_related(
     >>> restaurants = Restaurant.objects.prefetch_related(
-    ...     Prefetch('best_pizza', queryset=queryset))
+    ...     Prefetch("best_pizza", queryset=queryset)
+    ... )
 
 
 When using multiple databases, ``Prefetch`` will respect your choice of
 When using multiple databases, ``Prefetch`` will respect your choice of
 database. If the inner query does not specify a database, it will use the
 database. If the inner query does not specify a database, it will use the
@@ -1427,20 +1456,26 @@ database selected by the outer query. All of the following are valid:
 
 
     Take the following examples:
     Take the following examples:
 
 
-       >>> prefetch_related('pizzas__toppings', 'pizzas')
+    .. code-block:: pycon
+
+       >>> prefetch_related("pizzas__toppings", "pizzas")
 
 
     This works even though it's unordered because ``'pizzas__toppings'``
     This works even though it's unordered because ``'pizzas__toppings'``
     already contains all the needed information, therefore the second argument
     already contains all the needed information, therefore the second argument
     ``'pizzas'`` is actually redundant.
     ``'pizzas'`` is actually redundant.
 
 
-        >>> prefetch_related('pizzas__toppings', Prefetch('pizzas', queryset=Pizza.objects.all()))
+    .. code-block:: pycon
+
+        >>> prefetch_related("pizzas__toppings", Prefetch("pizzas", queryset=Pizza.objects.all()))
 
 
     This will raise a ``ValueError`` because of the attempt to redefine the
     This will raise a ``ValueError`` because of the attempt to redefine the
     queryset of a previously seen lookup. Note that an implicit queryset was
     queryset of a previously seen lookup. Note that an implicit queryset was
     created to traverse ``'pizzas'`` as part of the ``'pizzas__toppings'``
     created to traverse ``'pizzas'`` as part of the ``'pizzas__toppings'``
     lookup.
     lookup.
 
 
-        >>> prefetch_related('pizza_list__toppings', Prefetch('pizzas', to_attr='pizza_list'))
+    .. code-block:: pycon
+
+        >>> prefetch_related("pizza_list__toppings", Prefetch("pizzas", to_attr="pizza_list"))
 
 
     This will trigger an ``AttributeError`` because ``'pizza_list'`` doesn't exist yet
     This will trigger an ``AttributeError`` because ``'pizza_list'`` doesn't exist yet
     when ``'pizza_list__toppings'`` is being processed.
     when ``'pizza_list__toppings'`` is being processed.
@@ -4059,12 +4094,14 @@ The ``lookup`` argument describes the relations to follow and works the same
 as the string based lookups passed to
 as the string based lookups passed to
 :meth:`~django.db.models.query.QuerySet.prefetch_related()`. For example:
 :meth:`~django.db.models.query.QuerySet.prefetch_related()`. For example:
 
 
+.. code-block:: pycon
+
     >>> from django.db.models import Prefetch
     >>> from django.db.models import Prefetch
-    >>> Question.objects.prefetch_related(Prefetch('choice_set')).get().choice_set.all()
+    >>> Question.objects.prefetch_related(Prefetch("choice_set")).get().choice_set.all()
     <QuerySet [<Choice: Not much>, <Choice: The sky>, <Choice: Just hacking again>]>
     <QuerySet [<Choice: Not much>, <Choice: The sky>, <Choice: Just hacking again>]>
     # This will only execute two queries regardless of the number of Question
     # This will only execute two queries regardless of the number of Question
     # and Choice objects.
     # and Choice objects.
-    >>> Question.objects.prefetch_related(Prefetch('choice_set'))
+    >>> Question.objects.prefetch_related(Prefetch("choice_set"))
     <QuerySet [<Question: What's up?>]>
     <QuerySet [<Question: What's up?>]>
 
 
 The ``queryset`` argument supplies a base ``QuerySet`` for the given lookup.
 The ``queryset`` argument supplies a base ``QuerySet`` for the given lookup.
@@ -4072,17 +4109,21 @@ This is useful to further filter down the prefetch operation, or to call
 :meth:`~django.db.models.query.QuerySet.select_related()` from the prefetched
 :meth:`~django.db.models.query.QuerySet.select_related()` from the prefetched
 relation, hence reducing the number of queries even further:
 relation, hence reducing the number of queries even further:
 
 
+.. code-block:: pycon
+
     >>> voted_choices = Choice.objects.filter(votes__gt=0)
     >>> voted_choices = Choice.objects.filter(votes__gt=0)
     >>> voted_choices
     >>> voted_choices
     <QuerySet [<Choice: The sky>]>
     <QuerySet [<Choice: The sky>]>
-    >>> prefetch = Prefetch('choice_set', queryset=voted_choices)
+    >>> prefetch = Prefetch("choice_set", queryset=voted_choices)
     >>> Question.objects.prefetch_related(prefetch).get().choice_set.all()
     >>> Question.objects.prefetch_related(prefetch).get().choice_set.all()
     <QuerySet [<Choice: The sky>]>
     <QuerySet [<Choice: The sky>]>
 
 
 The ``to_attr`` argument sets the result of the prefetch operation to a custom
 The ``to_attr`` argument sets the result of the prefetch operation to a custom
 attribute:
 attribute:
 
 
-    >>> prefetch = Prefetch('choice_set', queryset=voted_choices, to_attr='voted_choices')
+.. code-block:: pycon
+
+    >>> prefetch = Prefetch("choice_set", queryset=voted_choices, to_attr="voted_choices")
     >>> Question.objects.prefetch_related(prefetch).get().voted_choices
     >>> Question.objects.prefetch_related(prefetch).get().voted_choices
     [<Choice: The sky>]
     [<Choice: The sky>]
     >>> Question.objects.prefetch_related(prefetch).get().choice_set.all()
     >>> Question.objects.prefetch_related(prefetch).get().choice_set.all()

+ 12 - 8
docs/ref/request-response.txt

@@ -371,12 +371,14 @@ Methods
     Otherwise the absolute URI is built using the server variables available in
     Otherwise the absolute URI is built using the server variables available in
     this request. For example:
     this request. For example:
 
 
-    >>> request.build_absolute_uri()
-    'https://example.com/music/bands/the_beatles/?print=true'
-    >>> request.build_absolute_uri('/bands/')
-    'https://example.com/bands/'
-    >>> request.build_absolute_uri('https://example2.com/bands/')
-    'https://example2.com/bands/'
+    .. code-block:: pycon
+
+        >>> request.build_absolute_uri()
+        'https://example.com/music/bands/the_beatles/?print=true'
+        >>> request.build_absolute_uri("/bands/")
+        'https://example.com/bands/'
+        >>> request.build_absolute_uri("https://example2.com/bands/")
+        'https://example2.com/bands/'
 
 
     .. note::
     .. note::
 
 
@@ -494,8 +496,10 @@ a subclass of dictionary. Exceptions are outlined here:
 
 
     Instantiates a ``QueryDict`` object based on ``query_string``.
     Instantiates a ``QueryDict`` object based on ``query_string``.
 
 
-    >>> QueryDict('a=1&a=2&c=3')
-    <QueryDict: {'a': ['1', '2'], 'c': ['3']}>
+    .. code-block:: pycon
+
+        >>> QueryDict("a=1&a=2&c=3")
+        <QueryDict: {'a': ['1', '2'], 'c': ['3']}>
 
 
     If ``query_string`` is not passed in, the resulting ``QueryDict`` will be
     If ``query_string`` is not passed in, the resulting ``QueryDict`` will be
     empty (it will have no keys or values).
     empty (it will have no keys or values).

+ 36 - 21
docs/ref/templates/api.txt

@@ -498,24 +498,30 @@ If you ``pop()`` too much, it'll raise
 You can also use ``push()`` as a context manager to ensure a matching ``pop()``
 You can also use ``push()`` as a context manager to ensure a matching ``pop()``
 is called.
 is called.
 
 
+.. code-block:: pycon
+
     >>> c = Context()
     >>> c = Context()
-    >>> c['foo'] = 'first level'
+    >>> c["foo"] = "first level"
     >>> with c.push():
     >>> with c.push():
-    ...     c['foo'] = 'second level'
-    ...     c['foo']
+    ...     c["foo"] = "second level"
+    ...     c["foo"]
+    ...
     'second level'
     'second level'
-    >>> c['foo']
+    >>> c["foo"]
     'first level'
     'first level'
 
 
 All arguments passed to ``push()`` will be passed to the ``dict`` constructor
 All arguments passed to ``push()`` will be passed to the ``dict`` constructor
 used to build the new context level.
 used to build the new context level.
 
 
+.. code-block:: pycon
+
     >>> c = Context()
     >>> c = Context()
-    >>> c['foo'] = 'first level'
-    >>> with c.push(foo='second level'):
-    ...     c['foo']
+    >>> c["foo"] = "first level"
+    >>> with c.push(foo="second level"):
+    ...     c["foo"]
+    ...
     'second level'
     'second level'
-    >>> c['foo']
+    >>> c["foo"]
     'first level'
     'first level'
 
 
 .. method:: Context.update(other_dict)
 .. method:: Context.update(other_dict)
@@ -525,26 +531,31 @@ object also defines an ``update()`` method. This works like ``push()``
 but takes a dictionary as an argument and pushes that dictionary onto
 but takes a dictionary as an argument and pushes that dictionary onto
 the stack instead of an empty one.
 the stack instead of an empty one.
 
 
+.. code-block:: pycon
+
     >>> c = Context()
     >>> c = Context()
-    >>> c['foo'] = 'first level'
-    >>> c.update({'foo': 'updated'})
+    >>> c["foo"] = "first level"
+    >>> c.update({"foo": "updated"})
     {'foo': 'updated'}
     {'foo': 'updated'}
-    >>> c['foo']
+    >>> c["foo"]
     'updated'
     'updated'
     >>> c.pop()
     >>> c.pop()
     {'foo': 'updated'}
     {'foo': 'updated'}
-    >>> c['foo']
+    >>> c["foo"]
     'first level'
     'first level'
 
 
 Like ``push()``, you can use ``update()`` as a context manager to ensure a
 Like ``push()``, you can use ``update()`` as a context manager to ensure a
 matching ``pop()`` is called.
 matching ``pop()`` is called.
 
 
+.. code-block:: pycon
+
     >>> c = Context()
     >>> c = Context()
-    >>> c['foo'] = 'first level'
-    >>> with c.update({'foo': 'second level'}):
-    ...     c['foo']
+    >>> c["foo"] = "first level"
+    >>> with c.update({"foo": "second level"}):
+    ...     c["foo"]
+    ...
     'second level'
     'second level'
-    >>> c['foo']
+    >>> c["foo"]
     'first level'
     'first level'
 
 
 Using a ``Context`` as a stack comes in handy in :ref:`some custom template
 Using a ``Context`` as a stack comes in handy in :ref:`some custom template
@@ -555,20 +566,24 @@ tags <howto-writing-custom-template-tags>`.
 Using ``flatten()`` method you can get whole ``Context`` stack as one dictionary
 Using ``flatten()`` method you can get whole ``Context`` stack as one dictionary
 including builtin variables.
 including builtin variables.
 
 
+.. code-block:: pycon
+
     >>> c = Context()
     >>> c = Context()
-    >>> c['foo'] = 'first level'
-    >>> c.update({'bar': 'second level'})
+    >>> c["foo"] = "first level"
+    >>> c.update({"bar": "second level"})
     {'bar': 'second level'}
     {'bar': 'second level'}
     >>> c.flatten()
     >>> c.flatten()
     {'True': True, 'None': None, 'foo': 'first level', 'False': False, 'bar': 'second level'}
     {'True': True, 'None': None, 'foo': 'first level', 'False': False, 'bar': 'second level'}
 
 
 A ``flatten()`` method is also internally used to make ``Context`` objects comparable.
 A ``flatten()`` method is also internally used to make ``Context`` objects comparable.
 
 
+.. code-block:: pycon
+
     >>> c1 = Context()
     >>> c1 = Context()
-    >>> c1['foo'] = 'first level'
-    >>> c1['bar'] = 'second level'
+    >>> c1["foo"] = "first level"
+    >>> c1["bar"] = "second level"
     >>> c2 = Context()
     >>> c2 = Context()
-    >>> c2.update({'bar': 'second level', 'foo': 'first level'})
+    >>> c2.update({"bar": "second level", "foo": "first level"})
     {'foo': 'first level', 'bar': 'second level'}
     {'foo': 'first level', 'bar': 'second level'}
     >>> c1 == c2
     >>> c1 == c2
     True
     True

+ 12 - 4
docs/topics/cache.txt

@@ -872,9 +872,11 @@ Accessing the cache
     requests for the same alias in the same thread will return the same
     requests for the same alias in the same thread will return the same
     object.
     object.
 
 
+    .. code-block:: pycon
+
         >>> from django.core.cache import caches
         >>> from django.core.cache import caches
-        >>> cache1 = caches['myalias']
-        >>> cache2 = caches['myalias']
+        >>> cache1 = caches["myalias"]
+        >>> cache2 = caches["myalias"]
         >>> cache1 is cache2
         >>> cache1 is cache2
         True
         True
 
 
@@ -906,11 +908,15 @@ The basic interface is:
 
 
 .. method:: cache.set(key, value, timeout=DEFAULT_TIMEOUT, version=None)
 .. method:: cache.set(key, value, timeout=DEFAULT_TIMEOUT, version=None)
 
 
-    >>> cache.set('my_key', 'hello, world!', 30)
+.. code-block:: pycon
+
+    >>> cache.set("my_key", "hello, world!", 30)
 
 
 .. method:: cache.get(key, default=None, version=None)
 .. method:: cache.get(key, default=None, version=None)
 
 
-    >>> cache.get('my_key')
+.. code-block:: pycon
+
+    >>> cache.get("my_key")
     'hello, world!'
     'hello, world!'
 
 
 ``key`` should be a ``str``, and ``value`` can be any picklable Python object.
 ``key`` should be a ``str``, and ``value`` can be any picklable Python object.
@@ -1100,6 +1106,8 @@ nonexistent cache key:
 You can close the connection to your cache with ``close()`` if implemented by
 You can close the connection to your cache with ``close()`` if implemented by
 the cache backend.
 the cache backend.
 
 
+.. code-block:: pycon
+
     >>> cache.close()
     >>> cache.close()
 
 
 .. note::
 .. note::

+ 11 - 3
docs/topics/db/aggregation.txt

@@ -222,12 +222,14 @@ Combining multiple aggregations
 Combining multiple aggregations with ``annotate()`` will :ticket:`yield the
 Combining multiple aggregations with ``annotate()`` will :ticket:`yield the
 wrong results <10060>` because joins are used instead of subqueries:
 wrong results <10060>` because joins are used instead of subqueries:
 
 
+.. code-block:: pycon
+
     >>> book = Book.objects.first()
     >>> book = Book.objects.first()
     >>> book.authors.count()
     >>> book.authors.count()
     2
     2
     >>> book.store_set.count()
     >>> book.store_set.count()
     3
     3
-    >>> q = Book.objects.annotate(Count('authors'), Count('store'))
+    >>> q = Book.objects.annotate(Count("authors"), Count("store"))
     >>> q[0].authors__count
     >>> q[0].authors__count
     6
     6
     >>> q[0].store__count
     >>> q[0].store__count
@@ -237,7 +239,11 @@ For most aggregates, there is no way to avoid this problem, however, the
 :class:`~django.db.models.Count` aggregate has a ``distinct`` parameter that
 :class:`~django.db.models.Count` aggregate has a ``distinct`` parameter that
 may help:
 may help:
 
 
-    >>> q = Book.objects.annotate(Count('authors', distinct=True), Count('store', distinct=True))
+.. code-block:: pycon
+
+    >>> q = Book.objects.annotate(
+    ...     Count("authors", distinct=True), Count("store", distinct=True)
+    ... )
     >>> q[0].authors__count
     >>> q[0].authors__count
     2
     2
     >>> q[0].store__count
     >>> q[0].store__count
@@ -514,7 +520,9 @@ the annotation is computed over all members of the group.
 For example, consider an author query that attempts to find out the average
 For example, consider an author query that attempts to find out the average
 rating of books written by each author:
 rating of books written by each author:
 
 
-    >>> Author.objects.annotate(average_rating=Avg('book__rating'))
+.. code-block:: pycon
+
+    >>> Author.objects.annotate(average_rating=Avg("book__rating"))
 
 
 This will return one result for each author in the database, annotated with
 This will return one result for each author in the database, annotated with
 their average book rating.
 their average book rating.

+ 12 - 8
docs/topics/db/queries.txt

@@ -448,6 +448,8 @@ can specify the field name suffixed with ``_id``. In this case, the value
 parameter is expected to contain the raw value of the foreign model's primary
 parameter is expected to contain the raw value of the foreign model's primary
 key. For example:
 key. For example:
 
 
+.. code-block:: pycon
+
     >>> Entry.objects.filter(blog_id=4)
     >>> Entry.objects.filter(blog_id=4)
 
 
 If you pass an invalid keyword argument, a lookup function will raise
 If you pass an invalid keyword argument, a lookup function will raise
@@ -610,40 +612,42 @@ contained in a single :meth:`~django.db.models.query.QuerySet.filter` call.
     As the second (more permissive) query chains multiple filters, it performs
     As the second (more permissive) query chains multiple filters, it performs
     multiple joins to the primary model, potentially yielding duplicates.
     multiple joins to the primary model, potentially yielding duplicates.
 
 
+    .. code-block:: pycon
+
         >>> from datetime import date
         >>> from datetime import date
-        >>> beatles = Blog.objects.create(name='Beatles Blog')
-        >>> pop = Blog.objects.create(name='Pop Music Blog')
+        >>> beatles = Blog.objects.create(name="Beatles Blog")
+        >>> pop = Blog.objects.create(name="Pop Music Blog")
         >>> Entry.objects.create(
         >>> Entry.objects.create(
         ...     blog=beatles,
         ...     blog=beatles,
-        ...     headline='New Lennon Biography',
+        ...     headline="New Lennon Biography",
         ...     pub_date=date(2008, 6, 1),
         ...     pub_date=date(2008, 6, 1),
         ... )
         ... )
         <Entry: New Lennon Biography>
         <Entry: New Lennon Biography>
         >>> Entry.objects.create(
         >>> Entry.objects.create(
         ...     blog=beatles,
         ...     blog=beatles,
-        ...     headline='New Lennon Biography in Paperback',
+        ...     headline="New Lennon Biography in Paperback",
         ...     pub_date=date(2009, 6, 1),
         ...     pub_date=date(2009, 6, 1),
         ... )
         ... )
         <Entry: New Lennon Biography in Paperback>
         <Entry: New Lennon Biography in Paperback>
         >>> Entry.objects.create(
         >>> Entry.objects.create(
         ...     blog=pop,
         ...     blog=pop,
-        ...     headline='Best Albums of 2008',
+        ...     headline="Best Albums of 2008",
         ...     pub_date=date(2008, 12, 15),
         ...     pub_date=date(2008, 12, 15),
         ... )
         ... )
         <Entry: Best Albums of 2008>
         <Entry: Best Albums of 2008>
         >>> Entry.objects.create(
         >>> Entry.objects.create(
         ...     blog=pop,
         ...     blog=pop,
-        ...     headline='Lennon Would Have Loved Hip Hop',
+        ...     headline="Lennon Would Have Loved Hip Hop",
         ...     pub_date=date(2020, 4, 1),
         ...     pub_date=date(2020, 4, 1),
         ... )
         ... )
         <Entry: Lennon Would Have Loved Hip Hop>
         <Entry: Lennon Would Have Loved Hip Hop>
         >>> Blog.objects.filter(
         >>> Blog.objects.filter(
-        ...     entry__headline__contains='Lennon',
+        ...     entry__headline__contains="Lennon",
         ...     entry__pub_date__year=2008,
         ...     entry__pub_date__year=2008,
         ... )
         ... )
         <QuerySet [<Blog: Beatles Blog>]>
         <QuerySet [<Blog: Beatles Blog>]>
         >>> Blog.objects.filter(
         >>> Blog.objects.filter(
-        ...     entry__headline__contains='Lennon',
+        ...     entry__headline__contains="Lennon",
         ... ).filter(
         ... ).filter(
         ...     entry__pub_date__year=2008,
         ...     entry__pub_date__year=2008,
         ... )
         ... )