D7702: pyoxidizer: don't expect `fp.name` to exist on object from `resources`

martinvonz (Martin von Zweigbergk) phabricator at mercurial-scm.org
Wed Dec 18 22:30:58 UTC 2019


martinvonz created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  `importlib.resources.open_resource()` in pyoxidizer returns a
  `_io.BytesIO`, which does not have a `name` attribute.

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D7702

AFFECTED FILES
  mercurial/rcutil.py

CHANGE DETAILS

diff --git a/mercurial/rcutil.py b/mercurial/rcutil.py
--- a/mercurial/rcutil.py
+++ b/mercurial/rcutil.py
@@ -91,7 +91,8 @@
                 continue
             with resourceutil.open_resource(b'defaultrc', name) as fp:
                 cfg = config.config()
-                cfg.read(pycompat.sysbytes(fp.name), fp=fp)
+                source = util.getattr(fp, 'name', b'<internal>/' + name)
+                cfg.read(pycompat.sysbytes(source), fp=fp)
                 for section in cfg:
                     for name, value in cfg.items(section):
                         source = cfg.source(section, name)



To: martinvonz, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list