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 <6ny...@nottheoilrig.com> 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 >>><webmas...@jbfavre.org> 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 >>