FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

gh-152638: Deprecate tkinter.filedialog.askopenfiles() by serhiy-storchaka · Pull Request #152647 · python/cpython · GitHub

Repository navigation

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension .py  (2) .rst  (4) All 2 file types selected
Viewed files
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Unified
Split
Hide whitespace
Diff view
Unified
Split
Hide whitespace
8 changes: 8 additions & 0 deletions Doc/deprecations/pending-removal-in-3.19.rst
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -40,3 +40,11 @@ Pending removal in Python 3.19
Before Python 3.14, this property was used to implement the corresponding
``read()`` and ``readline()`` methods for :class:`~imaplib.IMAP4` but this
is no longer the case since then.

* :mod:`tkinter`:

* :func:`tkinter.filedialog.askopenfiles` has been deprecated since Python
3.16. Iterate over the names returned by
:func:`~tkinter.filedialog.askopenfilenames` and open them one by one
instead.
(Contributed by Serhiy Storchaka in :gh:`152638`.)
20 changes: 14 additions & 6 deletions Doc/library/dialog.rst
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -163,15 +163,23 @@ cancelled it is the empty value documented for that function -- an empty
string, an empty tuple, an empty list or ``None``.

.. function:: askopenfile(mode="r", **options)
askopenfiles(mode="r", **options)

Create an :class:`Open` dialog.
:func:`askopenfile` returns the opened file object, or ``None`` if the
dialog is cancelled.
:func:`askopenfiles` returns a list of the opened file objects, or an empty
list if cancelled.
Create an :class:`Open` dialog and return the opened file object,
or ``None`` if the dialog is cancelled.
The file is opened in mode *mode* (read-only ``'r'`` by default).

.. function:: askopenfiles(mode="r", **options)

Create an :class:`Open` dialog and return a list of the opened file objects,
or an empty list if cancelled.
The files are opened in mode *mode* (read-only ``'r'`` by default).

.. deprecated-removed:: next 3.19
Opening several files at once is error-prone,
and the returned list cannot be used in a :keyword:`with` statement.
Iterate over the names returned by :func:`askopenfilenames`
and open them one by one instead.

.. function:: asksaveasfile(mode="w", **options)

Create a :class:`SaveAs` dialog and return the opened file object, or
Expand Down
9 changes: 9 additions & 0 deletions Doc/whatsnew/3.16.rst
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -655,6 +655,15 @@ New deprecations
Use the new public :class:`tempfile.TemporaryFileWrapper` instead,
which is the return type of :func:`tempfile.NamedTemporaryFile`.

* :mod:`tkinter`:

* :func:`tkinter.filedialog.askopenfiles` is deprecated and slated for
removal in Python 3.19. Opening several files at once is error-prone, and
the returned list cannot be used in a :keyword:`with` statement. Iterate
over the names returned by :func:`~tkinter.filedialog.askopenfilenames` and
open them one by one instead.
(Contributed by Serhiy Storchaka in :gh:`152638`.)

.. Add deprecations above alphabetically, not here at the end.

.. include:: ../deprecations/pending-removal-in-3.17.rst
Expand Down
8 changes: 8 additions & 0 deletions Lib/test/test_tkinter/test_filedialog.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -203,5 +203,13 @@ def test_type_ahead(self):
self.assertEqual([d.files.get(i) for i in sel], ['charlie'])


class DeprecationTest(unittest.TestCase):

def test_askopenfiles_deprecated(self):
with swap_attr(filedialog, 'askopenfilenames', lambda **kw: ()):
with self.assertWarns(DeprecationWarning):
filedialog.askopenfiles()


if __name__ == "__main__":
unittest.main()
6 changes: 6 additions & 0 deletions Lib/tkinter/filedialog.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -575,6 +575,12 @@ def askopenfiles(mode = "r", **options):
returns a list of open file objects or an empty list if
cancel selected
"""
import warnings
warnings._deprecated(
"tkinter.filedialog.askopenfiles",
message=f"{warnings._DEPRECATED_MSG}; iterate over the names returned "
"by askopenfilenames() and open them instead",
remove=(3, 19))

files = askopenfilenames(**options)
return [open(filename, mode) for filename in files]
Expand Down
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Deprecate :func:`tkinter.filedialog.askopenfiles`. Opening several files at
once is error-prone and the returned list cannot be used in a :keyword:`with`
statement; iterate over the names returned by
:func:`tkinter.filedialog.askopenfilenames` and open them one by one instead.
Loading

Back | FazBrowse Home | New Git URL