Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
assignee=Noneclosed_at=Nonecreated_at=<Date2014-10-10.01:11:38.378>labels= ['easy', 'type-feature', '3.9', 'docs']
title='Automate update of doc references to UCD version when it changes.'updated_at=<Date2019-12-30.07:44:23.371>user='https://github.com/bitdancer'
As noted by Alexander in bpo-18176, we often forget to update the UCD references in the docs when we switch to a new version. That issue added notes to the makeunicodedata script to list the places that need to be changed; however, it would be even better if makeunicodedata could somehow do the update automatically.
One possible way to do this easily might be to leverage sphinx 'substitutions' (I couldn't make that work in a short experiment, so it might not be feasible). If not, it should be simple enough to write something to automate the editing of the lines in the rst files (probably using a hardcoded list of locations, but possibly by grepping for the URL pattern).
Alexander also discussed the possibility of auto-generating tables to insert into the documentation, in the context of the PropList.txt file. I don't know if this is practical or desirable.
I want to work on this. What do you think about using include directive and include a static file like UCD_VERSION.txt in the documents?
makeunicodedata.py can write the current version every run to UCD_VERSION.txt
nmassman commented on Dec 27, 2019
nmassmanmannequin
Mannequin
More actions
I took a crack at the rst side of this, to see if I could reduce it to just one easy to parse for line in each file that needs to be modified.
Yeah, not so easy.
Substituting text in rst isn't hard, you just insert '|ucd_version|' where the version string should go and then include the following line somewhere below.
.. |ucd_version| replace:: 12.1.0
The problem is that I cant find any combination that makes this work for substituting the version string inside of a hyperlink. I've tried multiple combinations and every time the hyperlink gets broken.
The sub inside a sub works fine, but no combination I tried could get it to work in the hyperlink itself.
Near as I can tell, the only way to accomplish this would require adding or possibly creating a plugin for sphinx.
nmassman commented on Dec 30, 2019
nmassmanmannequin
Mannequin
More actions
I ended up doing exactly what I said would probably be needed, and wrote a small sphinx extension that handles this. I kept the same reST substitution syntax, but I'm parsing for '|ucd_version|' as the source files are read in and just replacing it with the version number.
Feedback is much appreciated. This is my first really involved PR. :)
Activity
bitdancer commented on Oct 10, 2014
As noted by Alexander in bpo-18176, we often forget to update the UCD references in the docs when we switch to a new version. That issue added notes to the makeunicodedata script to list the places that need to be changed; however, it would be even better if makeunicodedata could somehow do the update automatically.
One possible way to do this easily might be to leverage sphinx 'substitutions' (I couldn't make that work in a short experiment, so it might not be feasible). If not, it should be simple enough to write something to automate the editing of the lines in the rst files (probably using a hardcoded list of locations, but possibly by grepping for the URL pattern).
Alexander also discussed the possibility of auto-generating tables to insert into the documentation, in the context of the PropList.txt file. I don't know if this is practical or desirable.
isidentical commented on Nov 18, 2019
I want to work on this. What do you think about using include directive and include a static file like UCD_VERSION.txt in the documents?
makeunicodedata.py can write the current version every run to UCD_VERSION.txt
nmassman commented on Dec 27, 2019
I took a crack at the rst side of this, to see if I could reduce it to just one easy to parse for line in each file that needs to be modified.
Yeah, not so easy.
Substituting text in rst isn't hard, you just insert '|ucd_version|' where the version string should go and then include the following line somewhere below.
.. |ucd_version| replace:: 12.1.0
The problem is that I cant find any combination that makes this work for substituting the version string inside of a hyperlink. I've tried multiple combinations and every time the hyperlink gets broken.
So this, inside Doc/library/stdtypes.rst:
See http://www.unicode.org/Public/\\ |ucd_version|\ /ucd/extracted/DerivedNumericType.txt
Becomes this in the html:
See <a class="reference external" href="http://www.unicode.org/Public/"\>http://www.unicode.org/Public/\</a>12.1.0/ucd/extracted/DerivedNumericType.txt
It does in fact do the substitution, but the substituted text onward doesn't get included in the hyperlink.
It gets worse if you try to hyperlink text instead of just the url.
In Doc/library/unicodedata.rst I tried this:
compiled from the |ucd_link|_.
.. |ucd_link| replace:: UCD version |ucd_version|
.. _ucd_link: http://www.unicode.org/Public/|ucd_version|/ucd
and got:
compiled from the <a class="reference external" href="http://www.unicode.org/Public/|ucd_version|/ucd"\>UCD version 12.1.0</a>
The sub inside a sub works fine, but no combination I tried could get it to work in the hyperlink itself.
Near as I can tell, the only way to accomplish this would require adding or possibly creating a plugin for sphinx.
nmassman commented on Dec 30, 2019
I ended up doing exactly what I said would probably be needed, and wrote a small sphinx extension that handles this. I kept the same reST substitution syntax, but I'm parsing for '|ucd_version|' as the source files are read in and just replacing it with the version number.
Feedback is much appreciated. This is my first really involved PR. :)
AA-Turner commented on Jan 12, 2024
We've managed thus far without such an extension -- having reviewed the PR I think this doesn't meet the bar for complexity/benefit.
A