Matt Culbreth
Matt Culbreth

Reputation: 3265

How do I output a config value in a Sphinx .rst file?

I've got the following in conf.py:

def setup(app):
    app.add_config_value('base_url','http://localhost:2000', True)

How do I get this into my .rst files? I wrote this:

:base_url:/my_app/api/application/

But it only prints :base_url: instead of the actual URL.

How do I get the actual config value to be emitted?

Upvotes: 21

Views: 7720

Answers (3)

Nand0san
Nand0san

Reputation: 511

You can insert any conf.py existing variable (just with version is working) in any .rst file:

conf.py:

version = "0.0.1"

rst file text:

Version: |version|

result:

enter image description here

EDIT: As @zakariya said, this is only working with version, no other variables.

Upvotes: 0

Matt Culbreth
Matt Culbreth

Reputation: 3265

Ah hah!

Take a look at the sphinx.ext.extlinks module.

So I have code in my conf.py that does this:

extlinks = {'api_url' : (settings.BASE_URL + '%s', settings.BASE_URL)}

And in my .rst file, I have this:

:api_url:`/myapp/api/application/`

which produces the nicely formatted link as such:

http://localhost:8000/myapp/api/application/

Upvotes: 3

bmu
bmu

Reputation: 36184

For the substitution of links extlinks is fine, for including arbitrary config values as asked in your question you can use rst_epilog for substitutions (or rst_prolog for text, that should be added on top of your .rst files):

In your conf.py:

my_config_value = 42
rst_epilog = '.. |my_conf_val| replace:: %d' % my_config_value

In your .rst source:

My config value is |my_conf_val|!

In your output:

My config value is 42!

Upvotes: 27

Related Questions