refactor: Add env parameter to UnresolvedContext.resolve()#14
Merged
Conversation
UnresolvedContext implementations may need access to the Sphinx build environment during resolution. For example, PendingObject in sphinxnotes-any requires env.get_domain() to look up the object domain without storing an unpicklable domain reference. Co-Authored-By: DeepSeek V4 Pro <service@deepseek.com>
SilverRainZ
added a commit
to sphinx-notes/any
that referenced
this pull request
May 12, 2026
Storing ObjDomain directly in the PendingObject dataclass causes pickle failures during doctree serialization because the domain contains unpicklable local functions (XRefRole closures in _role_cache). Store the domain name (str) instead of the domain instance, and look up the domain at resolve time via env.get_domain(). This depends on sphinx-notes/render#14 which adds the env parameter to UnresolvedContext.resolve(). Co-Authored-By: DeepSeek V4 Pro <service@deepseek.com>
2d53f3b to
a11f4f4
Compare
SilverRainZ
added a commit
to sphinx-notes/any
that referenced
this pull request
May 12, 2026
* fix: Prevent PendingObject from pickling ObjDomain reference Storing ObjDomain directly in the PendingObject dataclass causes pickle failures during doctree serialization because the domain contains unpicklable local functions (XRefRole closures in _role_cache). Store the domain name (str) instead of the domain instance, and look up the domain at resolve time via env.get_domain(). This depends on sphinx-notes/render#14 which adds the env parameter to UnresolvedContext.resolve(). Co-Authored-By: DeepSeek V4 Pro <service@deepseek.com> * chore: domain_name -> domain --------- Co-authored-by: DeepSeek V4 Pro <service@deepseek.com>
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
env: BuildEnvironmentparameter toUnresolvedContext.resolve()abstract methodhost.envfrompending_node.render()toresolve()UnparsedData.resolve()signature and tests accordinglyMotivation
PendingObjectin sphinxnotes-any stores anObjDomainreference which contains unpicklable objects (XRefRole closures in_role_cache), causing the Sphinx doctree serialization to fail. By providingenvtoresolve(), implementations can look up domain data at runtime rather than storing unpicklable references.