Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
3f8508d
gh-150626: Update Format String Syntax documentation
pyctrl Jul 5, 2026
1e31af6
Update Doc/library/string.rst
pyctrl Jul 5, 2026
bb90f37
gh-150942: Optimize PicklerMemoProxy.copy() with _PyDict_SetItem_Take…
corona10 Jun 18, 2026
1fcd744
docs: Fix indent misalignment in `library/logging.config.rst` (GH-151…
mushitoriami Jun 18, 2026
b9259d8
gh-151623: Improve curses documentation and docstrings (GH-151625)
serhiy-storchaka Jun 18, 2026
9c62e00
gh-151623: Improve curses documentation style (#151635)
hugovk Jun 18, 2026
d946b2b
gh-151623: Add missing curses docstrings and document intrflush() (#1…
serhiy-storchaka Jun 18, 2026
e979a7e
gh-151229: Finalize JIT tracer in test eval-frame stub (gh-151609)
corona10 Jun 18, 2026
f668a47
gh-86726: Document the full public API of tkinter (GH-151579)
serhiy-storchaka Jun 18, 2026
4bc0cdd
gh-141510 Document and test frozendict class matching behaviour (#150…
da-woods Jun 18, 2026
37621c9
gh-86726: Fix "deprecated" directive for wm_attributes (GH-151652)
serhiy-storchaka Jun 18, 2026
cea450b
GH-150516: Reduce the work done to spill and reload the stack around …
markshannon Jun 18, 2026
1823d89
gh-86726: Fix the documented return type of tkinter info_patchlevel()…
serhiy-storchaka Jun 18, 2026
a44e6e4
gh-86726: Add few missing versionadded directives (GH-151662)
serhiy-storchaka Jun 18, 2026
be2d90d
gh-146353: Document `PyBytesWriter_GetData` pointer validity (GH-151418)
harjothkhara Jun 18, 2026
c848333
docs: Fix broken reference of parameter type in `library/logging.rst`…
mushitoriami Jun 18, 2026
0d12f15
gh-151229: Add CI to prevent JIT stress test regression (#151647)
corona10 Jun 18, 2026
c374bc6
gh-145177: Bump Emscripten to 6.0.0 (#151611)
hoodmane Jun 18, 2026
9e19456
gh-101100: Document os.uname_result and os.statvfs_result with relate…
cmaloney Jun 19, 2026
f88bcef
gh-151427: add 'not macOS' and 'not iOS' restrictions on availabili…
YvesDup Jun 19, 2026
f3060e1
gh-151678: Add tests for tkinter.Text (GH-151681)
serhiy-storchaka Jun 19, 2026
696f33c
gh-151695: Fix use-after-free of the curses screen encoding (GH-151696)
serhiy-storchaka Jun 19, 2026
1ff92c0
gh-141510 Add frozendict fast paths to abstract.c (#150692)
da-woods Jun 19, 2026
de60540
gh-151678: Add tests for tkinter.Menu (GH-151685)
serhiy-storchaka Jun 19, 2026
5357a4b
gh-151678: Add tests for tkinter.Listbox (GH-151686)
serhiy-storchaka Jun 19, 2026
5ef9847
gh-151678: Add tests for tkinter.Canvas (GH-151683)
serhiy-storchaka Jun 19, 2026
fb6fdf7
gh-151693: Add curses tests for panels, textpad, and window behavior …
serhiy-storchaka Jun 19, 2026
1e841f7
gh-151678: Add tests for the remaining tkinter widgets (GH-151687)
serhiy-storchaka Jun 19, 2026
831e5dc
gh-151693: Make the curses tests portable to other curses implementat…
serhiy-storchaka Jun 19, 2026
ee6ada6
gh-150836: Mount embedded Tk ZIP in _tkinter on Windows (GH-151562)
jjhelmus Jun 19, 2026
8058cd4
gh-151678: Add tests for tkinter Misc, Wm and geometry manager method…
serhiy-storchaka Jun 19, 2026
8c92884
gh-151678: Add tests for tkinter.ttk methods (GH-151736)
serhiy-storchaka Jun 19, 2026
6664545
gh-151744: Add curses.nofilter() (GH-151747)
serhiy-storchaka Jun 19, 2026
35486b9
gh-151678: Add tests for tkinter font, image, variable, Misc and Wm m…
serhiy-storchaka Jun 19, 2026
082cb0c
gh-151678: Add tests for tkinter.scrolledtext (GH-151753)
serhiy-storchaka Jun 19, 2026
62c5be8
gh-151674: Add tkinter Text.edit_canundo() and Text.edit_canredo() (G…
serhiy-storchaka Jun 20, 2026
1262e4e
gh-151678: Add tests for tkinter.dnd (GH-151780)
serhiy-storchaka Jun 20, 2026
4c52053
gh-151678: Add tests for tkinter.filedialog (GH-151781)
serhiy-storchaka Jun 20, 2026
c28ee2e
gh-151678: Add tests for the remaining tkinter Misc, Wm and Text meth…
serhiy-storchaka Jun 20, 2026
9201e1d
gh-151678: Add interactive tests for tkinter.simpledialog (GH-151794)
serhiy-storchaka Jun 20, 2026
ebc7ca4
gh-151675: Add tkinter Text.sync() and Text.pendingsync() (GH-151677)
serhiy-storchaka Jun 20, 2026
b4fcbc9
gh-151678: Add tests for tkinter widget virtual events (GH-151793)
serhiy-storchaka Jun 20, 2026
a871679
gh-151770: Fix `datetime.fromisoformat()` on an out-of-range month w/…
tonghuaroot Jun 20, 2026
b9b4959
gh-51067: Add `remove()` and `repack()` to `ZipFile` (GH-134627)
danny0838 Jun 20, 2026
2fddd40
gh-84649: Fix unstable test_rollover_at_midnight (GH-151813)
serhiy-storchaka Jun 20, 2026
4400392
gh-150831: docs: clarify generator, generator function, and generator…
Aniketsy Jun 21, 2026
7d4c00c
RTD Previews: Get correct base branch for backports (#150690)
StanFromIreland Jun 21, 2026
ecf9e49
gh-86726: Document tkinter.simpledialog query options and Dialog.resu…
serhiy-storchaka Jun 21, 2026
b4e9d8b
gh-151678: Add tests for tkinter.simpledialog (GH-151856)
serhiy-storchaka Jun 21, 2026
3eb78f4
gh-151845: Fix formatfloat() return-value contract in unicode_format.…
aisk Jun 21, 2026
873ed43
gh-151596: Add missing argument 'size' to pure-Python implementation …
Saber0324 Jun 21, 2026
b96e528
gh-151665: Fix inspect.signature() on type alias and type parameter e…
deadlovelll Jun 21, 2026
2bec6a7
gh-142387: Revert Android testbed to API level 35 (#151816)
mhsmith Jun 21, 2026
be92b29
gh-151042: venv: Pass VIRTUAL_ENV through cygpath inside fish on Wind…
LuNoX Jun 22, 2026
431fc51
gh-151905: fix memory error handling in PyFrame_GetBack (#151906)
prakashsellathurai Jun 22, 2026
c3ea9d6
gh-151914: Copyedit "What's new in Python 3.16" (#151915)
hugovk Jun 22, 2026
b11b26a
gh-144133: Add a warning to the `encodings.punycode` documentation (#…
StanFromIreland Jun 22, 2026
8aab242
gh-151874: Add tkinter wm_stackorder, wm_iconbadge and winfo_isdark (…
serhiy-storchaka Jun 22, 2026
92cbb68
gh-86726: Document tkinter method-name conflicts (GH-151917)
serhiy-storchaka Jun 22, 2026
566c33a
gh-151878: Add tkinter Entry and Spinbox validate methods (GH-151879)
serhiy-storchaka Jun 22, 2026
fafce76
gh-151910: Add tkinter.ttk.Treeview methods for the Tk 9.1 enhanced t…
serhiy-storchaka Jun 22, 2026
805171d
gh-151876: Add tkinter Canvas methods rotate and rchars (GH-151877)
serhiy-storchaka Jun 22, 2026
242af31
gh-151881: Add tkinter Menu.postcascade, Misc.tk_scaling and tk_inact…
serhiy-storchaka Jun 22, 2026
a500291
gh-151126: Fix missing `PyErr_NoMemory` in `getpath.c` (#151590)
ByteFlowing1337 Jun 22, 2026
ceee020
gh-124113: Clarify venv target directory reuse (#151419)
harjothkhara Jun 22, 2026
2b76c73
Correct typos in `runpy.run_path` documentation (#151230)
underscore-andthereitgoes Jun 22, 2026
2f4ea18
gh-151866: Remove unneeded `zlib` dependency in `test_zipfile.test_co…
danny0838 Jun 22, 2026
fb6f6dc
gh-151560: fix `AttributeError` when running `test.test_importlib.res…
ringobanana-3900 Jun 22, 2026
7d2601c
gh-127727: Warn when running a virtual environment created for a diff…
sepehr-rs Jun 22, 2026
dfd3f4a
gh-111501: venv: do not export PS1 in activate (#105279)
rpigott Jun 22, 2026
a068c93
gh-151888: Add tkinter PhotoImage.redither method (GH-151889)
serhiy-storchaka Jun 22, 2026
69a5ca9
gh-140006: Harden fish prompt against shadowed builtins (#150936)
gaborbernat Jun 22, 2026
6ba468e
gh-150162: Fix sysconfig cross-compile impermanence (#150164)
hetmankp Jun 22, 2026
7334b53
gh-151890: Support more photo image options in tkinter.PhotoImage met…
serhiy-storchaka Jun 22, 2026
65995dc
gh-151886: Add tkinter Misc.tk_appname, tk_useinputmethods and tk_car…
serhiy-storchaka Jun 22, 2026
1b63c33
gh-151920: Add the ttk.Style.theme_styles() method (GH-151921)
serhiy-storchaka Jun 22, 2026
654c677
gh-62480: De-personalize docs on using the C API (#151784)
RafaelWO Jun 22, 2026
9d2fe97
GH-150605: use windows-2025 in GitHub Actions (#150606)
chris-eibl Jun 22, 2026
fad3af2
gh-151722: Defer GC tracking of frozendict to end of construction (gh…
corona10 Jun 22, 2026
5cd8419
gh-75666: Fix a reference leak in tkinter event bindings (GH-151808)
serhiy-storchaka Jun 23, 2026
5a23836
gh-151678: Add tests for ttk Menubutton and OptionMenu widget options…
serhiy-storchaka Jun 23, 2026
fea5725
gh-101284: Allow passing Menubutton options to tkinter.OptionMenu (GH…
serhiy-storchaka Jun 23, 2026
1ad2af1
gh-59396: Modernize tkinter.simpledialog (GH-151848)
serhiy-storchaka Jun 23, 2026
d5539a9
gh-151497: Avoid huge pre-allocation for oversized tarfile extended h…
iamsharduld Jun 23, 2026
5e5c257
Clarify `multiprocessing.Queue.get_nowait()` documentation (#150863)
rerpha Jun 23, 2026
024b1bc
gh-151556: Show example CSV file content in the `csv` module docs (#1…
lul-cas Jun 23, 2026
63b21a7
gh-151981: Make tarfile._Stream.seek break at EOF (GH-151982)
encukou Jun 23, 2026
eb8994a
gh-151558: Fix symlink escape via `tarfile` hardlink-extraction fallb…
StanFromIreland Jun 23, 2026
53a06fa
gh-143927: Normalize all line endings (CR, CRLF, and LF) in configpar…
sethmlarson Jun 23, 2026
38f0c51
gh-151773: Fix NULL dereference in `PyContextVar_Set` (#151836)
bhuvi27 Jun 23, 2026
0b25972
gh-151126: Add missing `PyErr_NoMemory()` in `type_from_slots_or_spec…
ByteFlowing1337 Jun 23, 2026
99a79dd
gh-150565: Add additional tests for Lazy Imports (#149739)
brittanyrey Jun 23, 2026
64ebde3
gh-151842: Fix crash upon OOM in `_interpreters.capture_exception` (G…
amruthamodela06 Jun 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions .github/workflows/jit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,10 +64,10 @@ jobs:
include:
- target: i686-pc-windows-msvc/msvc
architecture: Win32
runner: windows-2025-vs2026
runner: windows-2025
- target: x86_64-pc-windows-msvc/msvc
architecture: x64
runner: windows-2025-vs2026
runner: windows-2025
- target: aarch64-pc-windows-msvc/msvc
architecture: ARM64
runner: windows-11-arm
Expand Down Expand Up @@ -183,6 +183,9 @@ jobs:
- name: JIT without optimizations (Debug)
configure_flags: --enable-experimental-jit --with-pydebug
test_env: "PYTHON_UOPS_OPTIMIZE=0"
- name: JIT with stress testing (Debug)
configure_flags: --enable-experimental-jit --with-pydebug
test_env: "PYTHON_JIT_STRESS=1"
- name: JIT with tail calling interpreter
configure_flags: --enable-experimental-jit --with-tail-call-interp --with-pydebug
use_clang: true
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/reusable-windows-msi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ env:
jobs:
build:
name: installer for ${{ inputs.arch }}
runs-on: ${{ inputs.arch == 'arm64' && 'windows-11-arm' || 'windows-2025-vs2026' }}
runs-on: ${{ inputs.arch == 'arm64' && 'windows-11-arm' || 'windows-2025' }}
timeout-minutes: 60
env:
ARCH: ${{ inputs.arch }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/reusable-windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ env:
jobs:
build:
name: Build and test (${{ inputs.arch }}, ${{ inputs.interpreter }})
runs-on: ${{ inputs.arch == 'arm64' && 'windows-11-arm' || 'windows-2025-vs2026' }}
runs-on: ${{ inputs.arch == 'arm64' && 'windows-11-arm' || 'windows-2025' }}
timeout-minutes: 60
env:
ARCH: ${{ inputs.arch }}
Expand Down
8 changes: 5 additions & 3 deletions .readthedocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,21 @@ build:
os: ubuntu-24.04
tools:
python: "3"
apt_packages:
- jq

jobs:
post_checkout:
post_system_dependencies:
# https://docs.readthedocs.com/platform/stable/guides/build/skip-build.html#skip-builds-based-on-conditions
#
# Cancel building pull requests when there aren't changes in the Doc
# Cancel building pull requests when there are no changes in the Doc
# directory or RTD configuration, or if we can't cleanly merge the base
# branch.
- |
set -eEux;
if [ "$READTHEDOCS_VERSION_TYPE" = "external" ];
then
base_branch=main;
base_branch=$(wget -qO- "https://api.github.com/repos/python/cpython/pulls/$READTHEDOCS_VERSION" | jq -er ".base.ref");
git fetch --depth=50 origin $base_branch:origin-$base_branch;
for attempt in $(seq 10);
do
Expand Down
8 changes: 6 additions & 2 deletions Doc/c-api/bytes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -384,14 +384,18 @@ Getters

Get the writer size.

The function does not invalidate pointers returned by
:c:func:`PyBytesWriter_GetData`.

The function cannot fail.

.. c:function:: void* PyBytesWriter_GetData(PyBytesWriter *writer)

Get the writer data: start of the internal buffer.

The pointer is valid until :c:func:`PyBytesWriter_Finish` or
:c:func:`PyBytesWriter_Discard` is called on *writer*.
The pointer remains valid until a :c:type:`PyBytesWriter` function other
than :c:func:`PyBytesWriter_GetData` or :c:func:`PyBytesWriter_GetSize` is
called on *writer*.

The function cannot fail.

Expand Down
4 changes: 0 additions & 4 deletions Doc/deprecations/index.rst
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
Deprecations
============

.. include:: pending-removal-in-3.16.rst

.. include:: pending-removal-in-3.17.rst

.. include:: pending-removal-in-3.18.rst
Expand All @@ -20,8 +18,6 @@ Deprecations
C API deprecations
------------------

.. include:: c-api-pending-removal-in-3.16.rst

.. include:: c-api-pending-removal-in-3.18.rst

.. include:: c-api-pending-removal-in-3.19.rst
Expand Down
8 changes: 3 additions & 5 deletions Doc/extending/extending.rst
Original file line number Diff line number Diff line change
Expand Up @@ -231,10 +231,8 @@ calling the Python callback functions from a C callback. Other uses are also
imaginable.

Fortunately, the Python interpreter is easily called recursively, and there is a
standard interface to call a Python function. (I won't dwell on how to call the
Python parser with a particular string as input --- if you're interested, have a
look at the implementation of the :option:`-c` command line option in
:file:`Modules/main.c` from the Python source code.)
standard interface to call a Python function. (If you're interested in how to call the
Python parser with a particular string as input, see :ref:`veryhigh`.)

Calling a Python function is easy. First, the Python program must somehow pass
you the Python function object. You should provide a function (or some other
Expand Down Expand Up @@ -641,7 +639,7 @@ and the object is freed.

An alternative strategy is called :dfn:`automatic garbage collection`.
(Sometimes, reference counting is also referred to as a garbage collection
strategy, hence my use of "automatic" to distinguish the two.) The big
strategy, hence the use of "automatic" to distinguish the two.) The big
advantage of automatic garbage collection is that the user doesn't need to call
:c:func:`free` explicitly. (Another claimed advantage is an improvement in speed
or memory usage --- this is no hard fact however.) The disadvantage is that for
Expand Down
55 changes: 34 additions & 21 deletions Doc/glossary.rst
Original file line number Diff line number Diff line change
Expand Up @@ -96,21 +96,24 @@ Glossary
:meth:`~object.__aexit__` methods. Introduced by :pep:`492`.

asynchronous generator
A function which returns an :term:`asynchronous generator iterator`. It
looks like a coroutine function defined with :keyword:`async def` except
that it contains :keyword:`yield` expressions for producing a series of
values usable in an :keyword:`async for` loop.

Usually refers to an asynchronous generator function, but may refer to an
*asynchronous generator iterator* in some contexts. In cases where the
intended meaning isn't clear, using the full terms avoids ambiguity.
Informally used to mean either an :term:`asynchronous generator
function` or an :term:`asynchronous generator iterator`, depending on
context. The formal terms :term:`asynchronous generator function` and
:term:`asynchronous generator iterator` are uncommon in practice;
"asynchronous generator" alone is almost always sufficient.

asynchronous generator function
A function which returns an :term:`asynchronous generator iterator`.
It looks like a coroutine function defined with :keyword:`async def`
except that it contains :keyword:`yield` expressions for producing a
series of values usable in an :keyword:`async for` loop. See :pep:`525`.

An asynchronous generator function may contain :keyword:`await`
expressions as well as :keyword:`async for`, and :keyword:`async with`
statements.

asynchronous generator iterator
An object created by an :term:`asynchronous generator` function.
An object created by an :term:`asynchronous generator function`.

This is an :term:`asynchronous iterator` which when called using the
:meth:`~object.__anext__` method returns an awaitable object which will execute
Expand Down Expand Up @@ -641,23 +644,33 @@ Glossary
.. index:: single: generator

generator
A function which returns a :term:`generator iterator`. It looks like a
normal function except that it contains :keyword:`yield` expressions
for producing a series of values usable in a for-loop or that can be
retrieved one at a time with the :func:`next` function.
Informally used to mean either a :term:`generator function` or a
:term:`generator iterator`, depending on context. The formal terms
:term:`generator function` and :term:`generator iterator` are uncommon
in practice; "generator" alone is almost always sufficient.

Usually refers to a generator function, but may refer to a
*generator iterator* in some contexts. In cases where the intended
meaning isn't clear, using the full terms avoids ambiguity.
.. index:: single: generator function

generator function
A function which returns a :term:`generator` object. It looks like a
normal function except that it contains :keyword:`yield` expressions
for producing a series of values usable in a :keyword:`for`\-loop or
that can be retrieved one at a time with the :func:`next` function.
See :ref:`yieldexpr`.

generator iterator
An object created by a :term:`generator` function.
An object created by a :term:`generator function` or a
:term:`generator expression`.

Each :keyword:`yield` temporarily suspends processing, remembering the
execution state (including local variables and pending
try-statements). When the *generator iterator* resumes, it picks up where
it left off (in contrast to functions which start fresh on every
invocation).
execution state (including local variables and pending try-statements).
When the *generator iterator* resumes, it picks up where it left off
(in contrast to functions which start fresh on every invocation).

Generator iterators also implement the :meth:`~generator.send` method
to send a value into the suspended generator, and the
:meth:`~generator.throw` method to raise an exception at the point
where the generator was paused. See :ref:`generator-methods`.

.. index:: single: generator expression

Expand Down
8 changes: 8 additions & 0 deletions Doc/library/codecs.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1399,6 +1399,14 @@ encodings.
| punycode | | Implement :rfc:`3492`. |
| | | Stateful codecs are not |
| | | supported. |
| | | |
| | | .. warning:: |
| | | |
| | | The decoding and |
| | | encoding algorithms |
| | | scale poorly, so |
| | | limit the length of |
| | | untrusted input. |
+--------------------+---------+---------------------------+
| raw_unicode_escape | | Latin-1 encoding with |
| | | :samp:`\\u{XXXX}` and |
Expand Down
31 changes: 31 additions & 0 deletions Doc/library/csv.rst
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,13 @@ The :mod:`!csv` module defines the following functions:
Spam, Spam, Spam, Spam, Spam, Baked Beans
Spam, Lovely Spam, Wonderful Spam

where :file:`eggs.csv` contains:

.. code-block:: text

Spam Spam Spam Spam Spam |Baked Beans|
Spam |Lovely Spam| |Wonderful Spam|


.. function:: writer(csvfile, /, dialect='excel', **fmtparams)

Expand Down Expand Up @@ -110,6 +117,13 @@ The :mod:`!csv` module defines the following functions:
spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])

which writes :file:`eggs.csv` containing:

.. code-block:: text

Spam Spam Spam Spam Spam |Baked Beans|
Spam |Lovely Spam| |Wonderful Spam|


.. function:: register_dialect(name, /, dialect='excel', **fmtparams)

Expand Down Expand Up @@ -191,6 +205,14 @@ The :mod:`!csv` module defines the following classes:
>>> print(row)
{'first_name': 'John', 'last_name': 'Cleese'}

where :file:`names.csv` contains:

.. code-block:: text

first_name,last_name
Eric,Idle
John,Cleese


.. class:: DictWriter(f, fieldnames, restval='', extrasaction='raise', \
dialect='excel', *args, **kwds)
Expand Down Expand Up @@ -228,6 +250,15 @@ The :mod:`!csv` module defines the following classes:
writer.writerow({'first_name': 'Lovely', 'last_name': 'Spam'})
writer.writerow({'first_name': 'Wonderful', 'last_name': 'Spam'})

which writes :file:`names.csv` containing:

.. code-block:: text

first_name,last_name
Baked,Beans
Lovely,Spam
Wonderful,Spam


.. class:: Dialect

Expand Down
5 changes: 3 additions & 2 deletions Doc/library/curses.ascii.rst
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ C library:

.. function:: isblank(c)

Checks for an ASCII whitespace character; space or horizontal tab.
Checks for an ASCII blank character; space or horizontal tab.


.. function:: iscntrl(c)
Expand Down Expand Up @@ -168,7 +168,8 @@ C library:

.. function:: isctrl(c)

Checks for an ASCII control character (ordinal values 0 to 31).
Checks for an ASCII control character (ordinal values 0 to 31). Unlike
:func:`iscntrl`, this does not include the delete character (0x7f).


.. function:: ismeta(c)
Expand Down
8 changes: 5 additions & 3 deletions Doc/library/curses.panel.rst
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ The module :mod:`!curses.panel` defines the following functions:

.. function:: new_panel(win)

Returns a panel object, associating it with the given window *win*. Be aware
Returns a panel object, associating it with the given window *win* and
placing the new panel on top of the panel stack. Be aware
that you need to keep the returned panel object referenced explicitly. If you
don't, the panel object is garbage collected and removed from the panel stack.

Expand All @@ -44,7 +45,7 @@ The module :mod:`!curses.panel` defines the following functions:

.. _curses-panel-objects:

Panel Objects
Panel objects
-------------

Panel objects, as returned by :func:`new_panel` above, are windows with a
Expand Down Expand Up @@ -99,7 +100,8 @@ Panel objects have the following methods:

.. method:: Panel.show()

Display the panel (which might have been hidden).
Display the panel (which might have been hidden), placing it on top of
the panel stack.


.. method:: Panel.top()
Expand Down
Loading