Skip to content

Commit

Permalink
docs: Remove empty testoutput blocks
Browse files Browse the repository at this point in the history
These were once needed (I think) to get the tests to run at all, even
though they triggered warnings from sphinx. Now it works without them.
  • Loading branch information
bdarnell committed Jun 12, 2024
1 parent 149f941 commit 9844c67
Show file tree
Hide file tree
Showing 13 changed files with 2 additions and 103 deletions.
9 changes: 0 additions & 9 deletions docs/guide/async.rst
Original file line number Diff line number Diff line change
Expand Up @@ -73,9 +73,6 @@ Here is a sample synchronous function:
response = http_client.fetch(url)
return response.body

.. testoutput::
:hide:

And here is the same function rewritten asynchronously as a native coroutine:

.. testcode::
Expand All @@ -87,9 +84,6 @@ And here is the same function rewritten asynchronously as a native coroutine:
response = await http_client.fetch(url)
return response.body

.. testoutput::
:hide:

Or for compatibility with older versions of Python, using the `tornado.gen` module:

.. testcode::
Expand Down Expand Up @@ -118,9 +112,6 @@ Coroutines are a little magical, but what they do internally is something like t
fetch_future.add_done_callback(on_fetch)
return my_future

.. testoutput::
:hide:

Notice that the coroutine returns its `.Future` before the fetch is
done. This is what makes coroutines *asynchronous*.

Expand Down
9 changes: 0 additions & 9 deletions docs/guide/coroutines.rst
Original file line number Diff line number Diff line change
Expand Up @@ -207,9 +207,6 @@ The `.multi` function accepts lists and dicts whose values are
for url in urls})
# responses is a dict {url: HTTPResponse}

.. testoutput::
:hide:

In decorated coroutines, it is possible to ``yield`` the list or dict directly::

@gen.coroutine
Expand Down Expand Up @@ -238,9 +235,6 @@ immediately, so you can start another operation before waiting.
fetch_future = convert_yielded(self.fetch_next_chunk())
await self.flush()

.. testoutput::
:hide:

This is a little easier to do with decorated coroutines, because they
start immediately when called:

Expand All @@ -256,9 +250,6 @@ start immediately when called:
fetch_future = self.fetch_next_chunk()
yield self.flush()

.. testoutput::
:hide:

Looping
^^^^^^^

Expand Down
6 changes: 0 additions & 6 deletions docs/guide/running.rst
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,6 @@ configuring a WSGI container to find your application, you write a
if __name__ == '__main__':
asyncio.run(main())

.. testoutput::
:hide:

Configure your operating system or process manager to run this program to
start the server. Please note that it may be necessary to increase the number
of open files per process (to avoid "Too many open files"-Error).
Expand Down Expand Up @@ -53,9 +50,6 @@ alterations to application startup.
await asyncio.Event().wait()
asyncio.run(post_fork_main())

.. testoutput::
:hide:

This is another way to start multiple processes and have them all
share the same port, although it has some limitations. First, each
child process will have its own ``IOLoop``, so it is important that
Expand Down
21 changes: 0 additions & 21 deletions docs/guide/security.rst
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,6 @@ method:
else:
self.write("Your cookie was set!")

.. testoutput::
:hide:

Cookies are not secure and can easily be modified by clients. If you
need to set cookies to, e.g., identify the currently logged in user,
you need to sign your cookies to prevent forgery. Tornado supports
Expand All @@ -39,9 +36,6 @@ keyword arguments to your application:
(r"/", MainHandler),
], cookie_secret="__TODO:_GENERATE_YOUR_OWN_RANDOM_VALUE_HERE__")

.. testoutput::
:hide:

Signed cookies contain the encoded value of the cookie in addition to a
timestamp and an `HMAC <http://en.wikipedia.org/wiki/HMAC>`_ signature.
If the cookie is old or if the signature doesn't match,
Expand All @@ -58,9 +52,6 @@ set. The secure version of the example above:
else:
self.write("Your cookie was set!")

.. testoutput::
:hide:

Tornado's signed cookies guarantee integrity but not confidentiality.
That is, the cookie cannot be modified but its contents can be seen by the
user. The ``cookie_secret`` is a symmetric key and must be kept secret --
Expand Down Expand Up @@ -129,9 +120,6 @@ specifying a nickname, which is then saved in a cookie:
(r"/login", LoginHandler),
], cookie_secret="__TODO:_GENERATE_YOUR_OWN_RANDOM_VALUE_HERE__")

.. testoutput::
:hide:

You can require that the user be logged in using the `Python
decorator <http://www.python.org/dev/peps/pep-0318/>`_
`tornado.web.authenticated`. If a request goes to a method with this
Expand All @@ -156,9 +144,6 @@ rewritten:
(r"/login", LoginHandler),
], **settings)
.. testoutput::
:hide:

If you decorate ``post()`` methods with the ``authenticated``
decorator, and the user is not logged in, the server will send a
``403`` response. The ``@authenticated`` decorator is simply
Expand Down Expand Up @@ -202,9 +187,6 @@ the Google credentials in a cookie for later access:
response_type='code',
extra_params={'approval_prompt': 'auto'})

.. testoutput::
:hide:

See the `tornado.auth` module documentation for more details.

.. _xsrf:
Expand Down Expand Up @@ -237,9 +219,6 @@ include the application setting ``xsrf_cookies``:
(r"/login", LoginHandler),
], **settings)
.. testoutput::
:hide:

If ``xsrf_cookies`` is set, the Tornado web application will set the
``_xsrf`` cookie for all users and reject all ``POST``, ``PUT``, and
``DELETE`` requests that do not contain a correct ``_xsrf`` value. If
Expand Down
9 changes: 0 additions & 9 deletions docs/guide/structure.rst
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,6 @@ A minimal "hello world" example looks something like this:
if __name__ == "__main__":
asyncio.run(main())

.. testoutput::
:hide:

The ``main`` coroutine
~~~~~~~~~~~~~~~~~~~~~~

Expand Down Expand Up @@ -153,9 +150,6 @@ and `~.RequestHandler.get_body_argument`.
self.set_header("Content-Type", "text/plain")
self.write("You wrote " + self.get_body_argument("message"))

.. testoutput::
:hide:

Since the HTML form encoding is ambiguous as to whether an argument is
a single value or a list with one element, `.RequestHandler` has
distinct methods to allow the application to indicate whether or not
Expand Down Expand Up @@ -332,9 +326,6 @@ For example, here is a simple handler using a coroutine:
self.write("Fetched " + str(len(json["entries"])) + " entries "
"from the FriendFeed API")

.. testoutput::
:hide:

For a more advanced asynchronous example, take a look at the `chat
example application
<https://github.com/tornadoweb/tornado/tree/stable/demos/chat>`_, which
Expand Down
6 changes: 0 additions & 6 deletions docs/guide/templates.rst
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,6 @@ directory as your Python file, you could render this template with:
items = ["Item 1", "Item 2", "Item 3"]
self.render("template.html", title="My title", items=items)

.. testoutput::
:hide:

Tornado templates support *control statements* and *expressions*.
Control statements are surrounded by ``{%`` and ``%}``, e.g.
``{% if len(items) > 2 %}``. Expressions are surrounded by ``{{`` and
Expand Down Expand Up @@ -202,9 +199,6 @@ by overriding `.RequestHandler.get_user_locale`:
return None
return self.current_user.prefs["locale"]

.. testoutput::
:hide:

If ``get_user_locale`` returns ``None``, we fall back on the
``Accept-Language`` header.

Expand Down
21 changes: 0 additions & 21 deletions tornado/auth.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,6 @@ async def get(self):
response_type='code',
extra_params={'approval_prompt': 'auto'})
.. testoutput::
:hide:
"""

import base64
Expand Down Expand Up @@ -661,9 +658,6 @@ async def get(self):
return
self.finish("Posted a message!")
.. testoutput::
:hide:
.. versionadded:: 4.3
.. versionchanged::: 6.0
Expand Down Expand Up @@ -721,9 +715,6 @@ async def get(self):
else:
await self.authorize_redirect()
.. testoutput::
:hide:
The user object returned by `~OAuthMixin.get_authenticated_user`
includes the attributes ``username``, ``name``, ``access_token``,
and all of the custom Twitter user attributes described at
Expand Down Expand Up @@ -805,9 +796,6 @@ async def get(self):
return
self.finish("Posted a message!")
.. testoutput::
:hide:
.. versionchanged:: 6.0
The ``callback`` argument was removed. Use the returned
Expand Down Expand Up @@ -959,9 +947,6 @@ async def get(self):
response_type='code',
extra_params={'approval_prompt': 'auto'})
.. testoutput::
:hide:
.. versionchanged:: 6.0
The ``callback`` argument was removed. Use the returned awaitable object instead.
Expand Down Expand Up @@ -1034,9 +1019,6 @@ async def get(self):
client_id=self.settings["facebook_api_key"],
extra_params={"scope": "user_posts"})
.. testoutput::
:hide:
This method returns a dictionary which may contain the following fields:
* ``access_token``, a string which may be passed to `facebook_request`
Expand Down Expand Up @@ -1151,9 +1133,6 @@ async def get(self):
return
self.finish("Posted a message!")
.. testoutput::
:hide:
The given path is relative to ``self._FACEBOOK_BASE_URL``,
by default "https://graph.facebook.com".
Expand Down
6 changes: 0 additions & 6 deletions tornado/gen.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,6 @@ def get(self):
do_something_with_response(response)
self.render("template.html")
.. testoutput::
:hide:
Asynchronous functions in Tornado return an ``Awaitable`` or `.Future`;
yielding this object returns its result.
Expand All @@ -51,9 +48,6 @@ def get(self):
response3 = response_dict['response3']
response4 = response_dict['response4']
.. testoutput::
:hide:
If ``tornado.platform.twisted`` is imported, it is also possible to
yield Twisted's ``Deferred`` objects. See the `convert_yielded`
function to extend this mechanism.
Expand Down
3 changes: 0 additions & 3 deletions tornado/ioloop.py
Original file line number Diff line number Diff line change
Expand Up @@ -116,9 +116,6 @@ async def main():
if __name__ == "__main__":
asyncio.run(main())
.. testoutput::
:hide:
Most applications should not attempt to construct an `IOLoop` directly,
and instead initialize the `asyncio` event loop and use `IOLoop.current()`.
In some cases, such as in test frameworks when initializing an `IOLoop`
Expand Down
3 changes: 0 additions & 3 deletions tornado/iostream.py
Original file line number Diff line number Diff line change
Expand Up @@ -1090,9 +1090,6 @@ async def main():
if __name__ == '__main__':
asyncio.run(main())
.. testoutput::
:hide:
"""

def __init__(self, socket: socket.socket, *args: Any, **kwargs: Any) -> None:
Expand Down
4 changes: 0 additions & 4 deletions tornado/web.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,6 @@ async def main():
if __name__ == "__main__":
asyncio.run(main())
.. testoutput::
:hide:
See the :doc:`guide` for additional information.
Thread-safety notes
Expand Down
3 changes: 0 additions & 3 deletions tornado/websocket.py
Original file line number Diff line number Diff line change
Expand Up @@ -160,9 +160,6 @@ def on_message(self, message):
def on_close(self):
print("WebSocket closed")
.. testoutput::
:hide:
WebSockets are not standard HTTP connections. The "handshake" is
HTTP, but after the handshake, the protocol is
message-based. Consequently, most of the Tornado HTTP facilities
Expand Down
5 changes: 2 additions & 3 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -103,9 +103,8 @@ commands =
sphinx-build -q -E -n -W -b html . {envtmpdir}/html
# Ensure that everything is either documented or ignored in conf.py
sphinx-build -q -E -n -W -b coverage . {envtmpdir}/coverage
# Run the doctests. No -W for doctests because that disallows tests
# with empty output.
sphinx-build -q -E -n -b doctest . {envtmpdir}/doctest
# Run the doctests
sphinx-build -q -E -n -W -b doctest . {envtmpdir}/doctest

[testenv:lint]
commands =
Expand Down

0 comments on commit 9844c67

Please sign in to comment.