sphinx-codeautolink improvements#281
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.
@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.
Would setting __module__ fix this? (pydata/xarray#4279)
There was a problem hiding this comment.
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.
Can you try adding it to xarrays init.py?
There was a problem hiding this comment.
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.
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.
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.
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.
@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.
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?
| }, | ||
| "outputs": [], | ||
| "source": [ | ||
| "da: xr.DataArray = xr.tutorial.load_dataset(\"air_temperature\", engine=\"netcdf4\").air\n", |
There was a problem hiding this comment.
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.
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.resampleandda.iselbelow because it doesn't realize that da is a DataAarray:Even so, I think the underline and hover color are nice additions