Skip to content

Error parsing relative path in {glue} role with subcommand #628

@rossbar

Description

@rossbar

Describe the bug

If I use the {glue} role with a specific subcommand (e.g. {glue:text}), I get a warning that the key is not found, even when the path is specified correctly. For example, this: {glue:text}demographics.md::num_respondents` gives the following warning:

WARNING: No key 'demographics.md:' found in glue data for this document. (use `path::key`, to glue from another document) [mystnb.glue] [mystnb.glue]

The structure of the warning to me implies that there is a problem with the parsing of colons here, as the demographics.md: part of the warning is very suspicious.

Indeed when I remove the :text subcommand from the {glue} directive, the warning disappears: {glue}demographics.md::num_respondents`.

Possibly related to #591

Reproduce the bug

For ease of reproduction, I recommend creating two new dummy files in the same directory of an existing myst-nb project:

  1. Create foo.md with the following contents:
---                                                                             
jupytext:                                                                       
  formats: md:myst                                                              
  text_representation:                                                          
    format_name: myst                                                           
kernelspec:                                                                     
  display_name: Python 3                                                        
  name: python3                                                                 
---                                                                             
                                                                                
# FOO                                                                           
                                                                                
```{code-cell} ipython3                                                         
---                                                                             
tags: [hide-input]                                                              
---                                                                             
from myst_nb import glue                                                        
glue("answer", 42, display=False)                                               
```
  1. Create bar.md with the following contents:
---                                                                             
jupytext:                                                                       
  formats: md:myst                                                              
  text_representation:                                                          
    format_name: myst                                                           
kernelspec:                                                                     
  display_name: Python 3                                                        
  name: python3                                                                 
---                                                                             
                                                                                
# BAR                                                                           
                                                                                
This line warns and fails to link: {glue:text}`foo.md::answer`.                 
                                                                                
This line is fine: {glue}`foo.md::answer`.
  1. Add foo and bar to the toctree
  2. Then build the project: make html. This should give the warning:
<path/to>/bar.md:13: WARNING: No key 'foo.md:' found in glue data for this document. (use `path::key`, to glue from another document) [mystnb.glue] [mystnb.glue]

List your environment

I'm using myst-nb via sphinx directly without the jupyter-book CLI, so hopefully relevant info:

myst-nb                       1.1.1
myst-parser                   4.0.0
Sphinx                        8.0.2

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions