@@ -198,7 +198,7 @@ def tokenize_open(filename):
198198}
199199
200200
201- def code_mapping (level , msg , default = 99 ):
201+ def code_mapping (level , msg , extra_directives , extra_roles , default = 99 ):
202202 """Return an error code between 0 and 99."""
203203 try :
204204 return code_mappings_by_level [level ][msg ]
@@ -212,6 +212,11 @@ def code_mapping(level, msg, default=99):
212212 # ---> 'Unknown interpreted text role'
213213 if msg .count ('"' ) == 2 and ' "' in msg and msg .endswith ('".' ):
214214 txt = msg [: msg .index (' "' )]
215+ value = msg .split ('"' , 2 )[1 ]
216+ if txt == "Unknown directive type" and value in extra_directives :
217+ return 0
218+ if txt == "Unknown interpreted text role" and value in extra_roles :
219+ return 0
215220 return code_mappings_by_level [level ].get (txt , default )
216221 return default
217222
@@ -1069,8 +1074,13 @@ def run(self):
10691074 #
10701075 # Map the string to a unique code:
10711076 msg = rst_error .message .split ("\n " , 1 )[0 ]
1072- code = code_mapping (rst_error .level , msg )
1073- assert code < 100 , code
1077+ code = code_mapping (
1078+ rst_error .level , msg , self .extra_directives , self .extra_roles
1079+ )
1080+ if not code :
1081+ # We ignored it, e.g. a known Sphinx role
1082+ continue
1083+ assert 0 < code < 100 , code
10741084 code += 100 * rst_error .level
10751085 msg = "%s%03i %s" % (rst_prefix , code , msg )
10761086
0 commit comments