https://github.com/python/cpython/commit/3a61ddf2d3725932777444e844ad281088589ee0
commit: 3a61ddf2d3725932777444e844ad281088589ee0
branch: 3.13
author: Miss Islington (bot) <[email protected]>
committer: AA-Turner <[email protected]>
date: 2025-08-05T22:17:12+01:00
summary:

[3.13] gh-81325: Support path-like objects with streaming TarFile (GH-137188) 
(#137366)

Co-authored-by: Alexander Urieles <[email protected]>
Co-authored-by: Emma Smith <[email protected]>

files:
A Misc/NEWS.d/next/Library/2025-07-28-23-11-29.gh-issue-81325.jMJFBe.rst
M Lib/tarfile.py
M Lib/test/test_tarfile.py

diff --git a/Lib/tarfile.py b/Lib/tarfile.py
index 9ff9df696de68c..4867735dd95e05 100755
--- a/Lib/tarfile.py
+++ b/Lib/tarfile.py
@@ -354,7 +354,7 @@ def __init__(self, name, mode, comptype, fileobj, bufsize,
             fileobj = _StreamProxy(fileobj)
             comptype = fileobj.getcomptype()
 
-        self.name     = name or ""
+        self.name     = os.fspath(name) if name is not None else ""
         self.mode     = mode
         self.comptype = comptype
         self.fileobj  = fileobj
diff --git a/Lib/test/test_tarfile.py b/Lib/test/test_tarfile.py
index 7024be46de59c9..c31842cf523712 100644
--- a/Lib/test/test_tarfile.py
+++ b/Lib/test/test_tarfile.py
@@ -1717,6 +1717,16 @@ def test_file_mode(self):
         finally:
             os.umask(original_umask)
 
+    def test_pathlike_name(self):
+        expected_name = os.path.abspath(tmpname)
+        tarpath = os_helper.FakePath(tmpname)
+
+        for func in (tarfile.open, tarfile.TarFile.open):
+            with self.subTest():
+                with func(tarpath, self.mode) as tar:
+                    self.assertEqual(tar.name, expected_name)
+                os_helper.unlink(tmpname)
+
 
 class GzipStreamWriteTest(GzipTest, StreamWriteTest):
     def test_source_directory_not_leaked(self):
diff --git 
a/Misc/NEWS.d/next/Library/2025-07-28-23-11-29.gh-issue-81325.jMJFBe.rst 
b/Misc/NEWS.d/next/Library/2025-07-28-23-11-29.gh-issue-81325.jMJFBe.rst
new file mode 100644
index 00000000000000..3d89b6eb92a0d6
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2025-07-28-23-11-29.gh-issue-81325.jMJFBe.rst
@@ -0,0 +1,2 @@
+:class:`tarfile.TarFile` now accepts a :term:`path-like <path-like object>` 
when working on a tar archive.
+(Contributed by Alexander Enrique Urieles Nieto in :gh:`81325`.)

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]

Reply via email to