summaryrefslogtreecommitdiff
path: root/gi
diff options
context:
space:
mode:
authorAndrej Shadura <andrew.shadura@collabora.co.uk>2022-01-30 17:57:14 +0100
committerAndrej Shadura <andrew.shadura@collabora.co.uk>2022-03-27 10:41:25 +0200
commitfaa5c29f135ca8b70696b0a225542e0e7bd94416 (patch)
tree1b70a0d788c8c03e050af0b818ee3b515e0dbd0b /gi
parentad2e90f62d930433e7a28f08edd99ef85579393f (diff)
downloadpygobject-faa5c29f135ca8b70696b0a225542e0e7bd94416.tar.gz
Gtk.Template: Accept PathLike objects as a filename
An attempt to pass a Path object as a filename results in a TypeError: "Must be bytes, not PosixPath". A simple way to accept Path objects would be unconditionally turning them into strings, but since native paths may be bytes as well, this might break applications relying on being able to bytes-based filename. Instead, convert the path into an appropriate representation (string or bytes) using os.fspath(). It internally tests whether the path is a PathLike object and does the right thing. Signed-off-by: Andrej Shadura <andrew.shadura@collabora.co.uk>
Diffstat (limited to 'gi')
-rw-r--r--gi/_gtktemplate.py3
1 files changed, 2 insertions, 1 deletions
diff --git a/gi/_gtktemplate.py b/gi/_gtktemplate.py
index 925aa0dd..f253887e 100644
--- a/gi/_gtktemplate.py
+++ b/gi/_gtktemplate.py
@@ -17,6 +17,7 @@
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
# USA
+import os
from collections import abc
from functools import partial
@@ -296,7 +297,7 @@ class Template(object):
return cls
else:
assert self.filename is not None
- file_ = Gio.File.new_for_path(self.filename)
+ file_ = Gio.File.new_for_path(os.fspath(self.filename))
bytes_ = GLib.Bytes.new(file_.load_contents()[1])
cls.set_template(bytes_)
register_template(cls)