-
Notifications
You must be signed in to change notification settings - Fork 110
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
sphinx-codeautolink improvements #281
base: main
Are you sure you want to change the base?
Conversation
🎊 PR Preview 2e3e0f5 has been successfully built and deployed to https://xarray-contrib-xarray-tutorial-preview-pr-281.surge.sh 🕐 Build time: 0.01s 🤖 By surge-preview |
Check out this pull request on See visual diffs & provide feedback on Jupyter Notebooks. Powered by ReviewNB |
codeautolink_inventory_map: { | ||
# unfortunately mapping the top level doesn't work, need all methods | ||
#"xarray.core.dataarray.DataArray": "xarray.DataArray", | ||
"xarray.core.accessor_dt.DatetimeAccessor": "xarray.DataArray.dt", | ||
"xarray.core.dataarray.DataArray.coarsen": "xarray.DataArray.coarsen", | ||
"xarray.core.dataarray.DataArray.groupby": "xarray.DataArray.groupby", | ||
"xarray.core.dataarray.DataArray.groupby_bins": "xarray.DataArray.groupby_bins", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@felix-hilden, I realize this issue (felix-hilden/sphinx-codeautolink#131 (comment) ) has been closed for a while, but curious based on your comment if it does seems straightforward to implement a simplification of ("xarray.core.dataarray.DataArray": "xarray.DataArray"
) to avoid having to enumerate every method?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would setting __module__
fix this? (pydata/xarray#4279)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Based on the above issue, if I add
import xarray
xarray.DataArray.__module__ = "xarray"
to conf.py
before building I'm getting Handler <bound method SphinxCodeAutoLink.create_references of <sphinx_codeautolink.extension.SphinxCodeAutoLink object at 0x145730710>> for event 'env-updated' threw an exception (exception: maximum recursion depth exceeded)
...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you try adding it to xarrays init.py?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi! Yeah I'm not at all opposed to having the feature that was discussed in the issue, I've just been out of the game for a while focusing on other things and I have personally no need for that. But I'm very open to contributions 👌
Personally I've opted for changing module attributes like so and it's worked well for me.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
actually it does look like chaning either conf.py
or xarray/__init__.py
works, I think the recursion error was coming from some issue with my local settings/cache...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
kind of a pain to modify conf.py via jupyter book (jupyter-book/jupyter-book#858,
jupyter-book/jupyter-book#1673 (comment)) but that is probably the way to go...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's do it upstream? I think we'd like this in Xarray too.
.sphinx-codeautolink-a:link { | ||
border-bottom-color: lightgray; | ||
border-bottom-style: dotted; | ||
border-bottom-width: 1px; | ||
} | ||
|
||
.sphinx-codeautolink-a:hover { | ||
border-bottom-color: rgb(255, 139, 139); | ||
border-bottom-style: dotted; | ||
border-bottom-width: 1px; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@dcherian @zmoon I think a subtle dotted underline is nice, personally I think the thick underlines (https://scikit-image.org/docs/stable/auto_examples/segmentation/plot_regionprops.html) are a bit distracting and distinct from the jupyterlab experience, but open to other opinions!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I concur!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A little darker would be nicer to me. It's also convention that solid lines are clickable links, so perhaps just a thin darker line?
@@ -141,13 +138,26 @@ | |||
}, | |||
"outputs": [], | |||
"source": [ | |||
"da: xr.DataArray = xr.tutorial.load_dataset(\"air_temperature\", engine=\"netcdf4\").air\n", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Need a type hint on da in order for subsequent methods to be picked up (da.resample
). Also, if chaining methods only the first is picked up da.isel(time=0).plot()
links to isel
but not plot
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Opened discussion for clarification on this felix-hilden/sphinx-codeautolink#146.
Edit: method chaining links would need some work felix-hilden/sphinx-codeautolink#147
Based on discussion in #82
Lots of warnings! Would need to add lots of manual mappings for completeness... and even then it doesn't pick up things like
da.resample
andda.isel
below because it doesn't realize that da is a DataAarray:Even so, I think the underline and hover color are nice additions