classification
Title: Automate update of doc references to UCD version when it changes.
Type: enhancement Stage: patch review
Components: Documentation Versions: Python 3.9
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: docs@python Nosy List: BTaskaya, docs@python, mdk, nmassman, r.david.murray
Priority: normal Keywords: easy, patch

Created on 2014-10-10 01:11 by r.david.murray, last changed 2019-12-30 07:44 by ned.deily.

Pull Requests
URL Status Linked Edit
PR 17748 open nmassman, 2019-12-30 03:57
Messages (4)
msg228935 - (view) Author: R. David Murray (r.david.murray) * (Python committer) Date: 2014-10-10 01:11
As noted by Alexander in issue 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.
msg356923 - (view) Author: Batuhan Taskaya (BTaskaya) * (Python committer) Date: 2019-11-18 22:33
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
msg358895 - (view) Author: Noah Massman-Hall (nmassman) * Date: 2019-12-27 02:19
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.
msg359017 - (view) Author: Noah Massman-Hall (nmassman) * Date: 2019-12-30 04:04
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. :)
History
Date User Action Args
2019-12-30 07:44:23ned.deilysetnosy: + docs@python, mdk

assignee: docs@python
components: + Documentation
versions: + Python 3.9, - Python 3.5
2019-12-30 04:04:40nmassmansetmessages: + msg359017
2019-12-30 03:57:24nmassmansetpull_requests: + pull_request17186
2019-12-27 02:48:31nmassmansetpull_requests: - pull_request17155
2019-12-27 02:42:49nmassmansetkeywords: + patch
stage: needs patch -> patch review
pull_requests: + pull_request17155
2019-12-27 02:19:03nmassmansetnosy: + nmassman
messages: + msg358895
2019-11-18 22:33:46BTaskayasetnosy: + BTaskaya
messages: + msg356923
2014-10-10 01:11:38r.david.murraycreate