Jack, can you put up a pull request? I'm internally debating whether we want
the auto TS-XXXX linkage or not, so I think it would be good to have a PR on
which to discuss it. Thanks.
On Friday, January 6, 2017 10:39 AM, Jack Bates <[email protected]>
wrote:
Thanks for fixing this Jean Baptiste!
I'd like to maintain the custom autolinker,
would you mind if I restored that code and applied the fix below?
After this fix, it works with Docutils 1.3 and 1.2.
I realize it would've been much better if I'd had this ready at the
beginning of the week ...
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -166,9 +166,11 @@ pygments_style = 'sphinx'
nitpicky=1
# Autolink issue references
+# See Customizing the Parser in the docutils.parsers.rst module.
from docutils import nodes
from docutils.parsers.rst import states
+from docutils.utils import punctuation_chars
from docutils.utils import unescape
# Customize parser.inliner in the only way that Sphinx supports.
@@ -180,9 +182,34 @@ from docutils.utils import unescape
BaseInliner = states.Inliner
class Inliner(BaseInliner):
+ if hasattr(states.Inliner, 'init_customizations'):
+ def init_customizations(self, settings):
+ self.__class__ = BaseInliner
+ BaseInliner.init_customizations(self, settings)
+ self.__class__ = Inliner
+
+ # Copied from states.Inliner.init_customizations().
+ if settings.character_level_inline_markup:
+ self.start_string_prefix = u'(^|(?<!\x00))'
+ self.end_string_suffix = u''
+ else:
+ self.start_string_prefix = (u'(^|(?<=\\s|[%s%s]))' %
+ (punctuation_chars.openers,
+ punctuation_chars.delimiters))
+ self.end_string_suffix = (u'($|(?=\\s|[\x00%s%s%s]))' %
+ (punctuation_chars.closing_delimiters,
+ punctuation_chars.delimiters,
+ punctuation_chars.closers))
+
+ self.init()
+ else:
def __init__(self):
BaseInliner.__init__(self)
+ self.init()
+ # Called from __init__() in Docutils < 1.3, otherwise from
+ # init_customizations(), which was added in Docutils 1.3.
+ def init(self):
issue_pattern = re.compile(u'''
{start_string_prefix}
TS-\d+
On 04/01/17 08:08 AM, Jean Baptiste Favre wrote:
> Hello,
> I've updated my PR on github.
> We can now manage both Jira issues with ":ts:jira:`XXXX`" syntax, as
> well as github issues with ":ts:github:`XXXX`" syntax.
>
> Now, Trafficserver build succeed with doctuils 0.13.1.
> Please note that I did not test yet build against docutils 0.12.
> I'll in the coming days (docutils 0.12 is in Debian stable only).
>
> Cheers,
> Jean Baptiste
>
>
> On 03/01/2017 15:11, Jean Baptiste Favre wrote:
>> Hello Alan,
>> Thanks for the info.
>> I had a look in traffic_server.py, but to quick to notice about :ts:cv: :-/
>>
>> given the Jira to Github transition announced by Brian at the end of
>> decembre, I only suggest we use :ts:issue:, more generic, instead on
>> :ts:jira:
>>
>> I'll update my pull request accordingly.
>>
>> Cheers,
>> Jean Baptiste Favre
>>
>> On 03/01/2017 15:07, Alan Carroll wrote:
>>> Please take a look at doc/ext/traffic-server.py (which I would think you've
>>> done, if you did this patch). There are already :ts: roles defined (e.g.
>>> :ts:cv: for configuration variables). Something like :ts:jira:`3612` might
>>> be a good choice. I think the goal of this patch was so that normal usage
>>> of "TS-3612" would get converted to a JIRA link, which may be a step too
>>> far.
>>>
>>> On Tuesday, January 3, 2017 4:32 AM, Jean Baptiste Favre
>>><[email protected]> wrote:
>>>
>>>
>>> Hello,
>>> I've had a discussion on docutils mailing list about this issue.
>>>
>>> Short story: we currently use docutils Inliner monkey patching which is
>>> likely to break things whenever docutils changes its API.
>>> This change happenned in 0.13.0
>>>
>>> A more stable way of building ATS doc would be to use classic docutils
>>> roles, ie writing TS issues like ":TS: XXXX" instead of "(TS-XXXX)"and
>>> define a custom role which is supported, whereas our current way of
>>> monkey patching docutils Inliner isn't.
>>>
>>> I managed to build trafficserver against docutils 0.13.1, but this
>>> require a patch for both trafficserver & docutils.
>>> Discussion is still ongoing to know wether the new behaviour is buggy or
>>> not, and wether docutils patch should be included in next release or not.
>>>
>>> In the mean time, I'll work on implementing the docutils custom role.
>>> I'll open a github PR as soon as the doc refacto is completed.
>>>
>>> Trafficserver is about to be removed from Debian within 2 weeks (stable
>>> freeze is coming and Trafficserver build currently fails because of the
>>> doc) and I'm not sure docutils will be updated until then.
>>>
>>> Cheers,
>>> Jean Baptiste
>>>
>>>> The exception I get comes from code introduced 2 years and half ago
>>>> (commit 8ec35f2c7).
>>>>
>>>> Python docutils 0.13.1, which entrered Debian unstable on 2016-12-11,
>>>> breaks this piece of code.
>>>>
>>>> Trafficserver entered Debian unstable on 2016-11-29, which means build
>>>> was OK.
>>>>
>>>> I can't find any commit modifying doc/conf.py since the one you
>>>> mentionned which fix anything.
>>>>
>>>> Cheers,
>>>> Jean Baptiste Favre
>>