pygments.rb 2.3.1 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (324) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +1 -1
  3. data/.rubocop.yml +7 -0
  4. data/CHANGELOG.adoc +4 -0
  5. data/README.adoc +1 -1
  6. data/bench.rb +1 -1
  7. data/lib/pygments/popen.rb +3 -7
  8. data/lib/pygments/version.rb +1 -1
  9. data/pygments.rb.gemspec +2 -2
  10. data/test/test_pygments.rb +0 -19
  11. data/vendor/pygments-main/{Pygments-2.10.0.dist-info → Pygments-2.15.1.dist-info}/AUTHORS +21 -1
  12. data/vendor/pygments-main/{Pygments-2.10.0.dist-info → Pygments-2.15.1.dist-info}/LICENSE +1 -1
  13. data/vendor/pygments-main/{Pygments-2.10.0.dist-info → Pygments-2.15.1.dist-info}/METADATA +19 -11
  14. data/vendor/pygments-main/Pygments-2.15.1.dist-info/RECORD +614 -0
  15. data/vendor/pygments-main/{Pygments-2.10.0.dist-info → Pygments-2.15.1.dist-info}/WHEEL +1 -1
  16. data/vendor/pygments-main/{Pygments-2.10.0.dist-info → Pygments-2.15.1.dist-info}/entry_points.txt +0 -1
  17. data/vendor/pygments-main/bin/pygmentize +1 -1
  18. data/vendor/pygments-main/pygments/__init__.py +20 -22
  19. data/vendor/pygments-main/pygments/__main__.py +1 -1
  20. data/vendor/pygments-main/pygments/cmdline.py +74 -8
  21. data/vendor/pygments-main/pygments/console.py +1 -1
  22. data/vendor/pygments-main/pygments/filter.py +1 -1
  23. data/vendor/pygments-main/pygments/filters/__init__.py +6 -3
  24. data/vendor/pygments-main/pygments/formatter.py +41 -11
  25. data/vendor/pygments-main/pygments/formatters/__init__.py +21 -16
  26. data/vendor/pygments-main/pygments/formatters/_mapping.py +5 -65
  27. data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -1
  28. data/vendor/pygments-main/pygments/formatters/groff.py +170 -0
  29. data/vendor/pygments-main/pygments/formatters/html.py +54 -32
  30. data/vendor/pygments-main/pygments/formatters/img.py +9 -5
  31. data/vendor/pygments-main/pygments/formatters/irc.py +6 -33
  32. data/vendor/pygments-main/pygments/formatters/latex.py +24 -14
  33. data/vendor/pygments-main/pygments/formatters/other.py +1 -1
  34. data/vendor/pygments-main/pygments/formatters/pangomarkup.py +1 -1
  35. data/vendor/pygments-main/pygments/formatters/rtf.py +1 -1
  36. data/vendor/pygments-main/pygments/formatters/svg.py +1 -1
  37. data/vendor/pygments-main/pygments/formatters/terminal.py +1 -3
  38. data/vendor/pygments-main/pygments/formatters/terminal256.py +2 -4
  39. data/vendor/pygments-main/pygments/lexer.py +101 -32
  40. data/vendor/pygments-main/pygments/lexers/__init__.py +50 -29
  41. data/vendor/pygments-main/pygments/lexers/_ada_builtins.py +103 -0
  42. data/vendor/pygments-main/pygments/lexers/_asy_builtins.py +1 -1
  43. data/vendor/pygments-main/pygments/lexers/_cl_builtins.py +1 -1
  44. data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +2 -2
  45. data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +21 -6
  46. data/vendor/pygments-main/pygments/lexers/_css_builtins.py +558 -0
  47. data/vendor/pygments-main/pygments/lexers/_julia_builtins.py +10 -0
  48. data/vendor/pygments-main/pygments/lexers/_lasso_builtins.py +1 -1
  49. data/vendor/pygments-main/pygments/lexers/_lilypond_builtins.py +4932 -0
  50. data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +11 -18
  51. data/vendor/pygments-main/pygments/lexers/_mapping.py +71 -82
  52. data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +1 -1
  53. data/vendor/pygments-main/pygments/lexers/_mysql_builtins.py +58 -4
  54. data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +1 -1
  55. data/vendor/pygments-main/pygments/lexers/_php_builtins.py +408 -1835
  56. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +70 -8
  57. data/vendor/pygments-main/pygments/lexers/_qlik_builtins.py +666 -0
  58. data/vendor/pygments-main/pygments/lexers/_scheme_builtins.py +1609 -0
  59. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +3 -3
  60. data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +9 -18
  61. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +185 -94
  62. data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +1 -1
  63. data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1 -1
  64. data/vendor/pygments-main/pygments/lexers/_usd_builtins.py +1 -1
  65. data/vendor/pygments-main/pygments/lexers/_vbscript_builtins.py +1 -1
  66. data/vendor/pygments-main/pygments/lexers/_vim_builtins.py +1 -1
  67. data/vendor/pygments-main/pygments/lexers/actionscript.py +15 -14
  68. data/vendor/pygments-main/pygments/lexers/ada.py +144 -0
  69. data/vendor/pygments-main/pygments/lexers/agile.py +1 -1
  70. data/vendor/pygments-main/pygments/lexers/algebra.py +72 -9
  71. data/vendor/pygments-main/pygments/lexers/ambient.py +8 -7
  72. data/vendor/pygments-main/pygments/lexers/amdgpu.py +4 -3
  73. data/vendor/pygments-main/pygments/lexers/ampl.py +10 -8
  74. data/vendor/pygments-main/pygments/lexers/apdlexer.py +164 -20
  75. data/vendor/pygments-main/pygments/lexers/apl.py +6 -5
  76. data/vendor/pygments-main/pygments/lexers/archetype.py +23 -21
  77. data/vendor/pygments-main/pygments/lexers/arrow.py +10 -9
  78. data/vendor/pygments-main/pygments/lexers/arturo.py +250 -0
  79. data/vendor/pygments-main/pygments/lexers/asc.py +9 -5
  80. data/vendor/pygments-main/pygments/lexers/asm.py +68 -63
  81. data/vendor/pygments-main/pygments/lexers/automation.py +7 -5
  82. data/vendor/pygments-main/pygments/lexers/bare.py +20 -21
  83. data/vendor/pygments-main/pygments/lexers/basic.py +45 -41
  84. data/vendor/pygments-main/pygments/lexers/bdd.py +58 -0
  85. data/vendor/pygments-main/pygments/lexers/berry.py +99 -0
  86. data/vendor/pygments-main/pygments/lexers/bibtex.py +6 -6
  87. data/vendor/pygments-main/pygments/lexers/boa.py +4 -8
  88. data/vendor/pygments-main/pygments/lexers/business.py +18 -18
  89. data/vendor/pygments-main/pygments/lexers/c_cpp.py +80 -40
  90. data/vendor/pygments-main/pygments/lexers/c_like.py +21 -19
  91. data/vendor/pygments-main/pygments/lexers/capnproto.py +6 -8
  92. data/vendor/pygments-main/pygments/lexers/carbon.py +96 -0
  93. data/vendor/pygments-main/pygments/lexers/cddl.py +16 -33
  94. data/vendor/pygments-main/pygments/lexers/chapel.py +14 -9
  95. data/vendor/pygments-main/pygments/lexers/clean.py +3 -2
  96. data/vendor/pygments-main/pygments/lexers/comal.py +80 -0
  97. data/vendor/pygments-main/pygments/lexers/compiled.py +3 -2
  98. data/vendor/pygments-main/pygments/lexers/configs.py +235 -120
  99. data/vendor/pygments-main/pygments/lexers/console.py +5 -4
  100. data/vendor/pygments-main/pygments/lexers/cplint.py +44 -0
  101. data/vendor/pygments-main/pygments/lexers/crystal.py +22 -23
  102. data/vendor/pygments-main/pygments/lexers/csound.py +19 -17
  103. data/vendor/pygments-main/pygments/lexers/css.py +67 -159
  104. data/vendor/pygments-main/pygments/lexers/d.py +15 -12
  105. data/vendor/pygments-main/pygments/lexers/dalvik.py +14 -11
  106. data/vendor/pygments-main/pygments/lexers/data.py +119 -49
  107. data/vendor/pygments-main/pygments/lexers/dax.py +136 -0
  108. data/vendor/pygments-main/pygments/lexers/devicetree.py +9 -8
  109. data/vendor/pygments-main/pygments/lexers/diff.py +23 -19
  110. data/vendor/pygments-main/pygments/lexers/dotnet.py +216 -81
  111. data/vendor/pygments-main/pygments/lexers/dsls.py +86 -64
  112. data/vendor/pygments-main/pygments/lexers/dylan.py +16 -15
  113. data/vendor/pygments-main/pygments/lexers/ecl.py +46 -38
  114. data/vendor/pygments-main/pygments/lexers/eiffel.py +15 -10
  115. data/vendor/pygments-main/pygments/lexers/elm.py +12 -8
  116. data/vendor/pygments-main/pygments/lexers/elpi.py +165 -0
  117. data/vendor/pygments-main/pygments/lexers/email.py +21 -39
  118. data/vendor/pygments-main/pygments/lexers/erlang.py +21 -22
  119. data/vendor/pygments-main/pygments/lexers/esoteric.py +28 -30
  120. data/vendor/pygments-main/pygments/lexers/ezhil.py +10 -9
  121. data/vendor/pygments-main/pygments/lexers/factor.py +104 -83
  122. data/vendor/pygments-main/pygments/lexers/fantom.py +31 -29
  123. data/vendor/pygments-main/pygments/lexers/felix.py +18 -14
  124. data/vendor/pygments-main/pygments/lexers/fift.py +67 -0
  125. data/vendor/pygments-main/pygments/lexers/floscript.py +7 -7
  126. data/vendor/pygments-main/pygments/lexers/forth.py +8 -6
  127. data/vendor/pygments-main/pygments/lexers/fortran.py +16 -11
  128. data/vendor/pygments-main/pygments/lexers/foxpro.py +2 -2
  129. data/vendor/pygments-main/pygments/lexers/freefem.py +7 -10
  130. data/vendor/pygments-main/pygments/lexers/func.py +108 -0
  131. data/vendor/pygments-main/pygments/lexers/functional.py +1 -1
  132. data/vendor/pygments-main/pygments/lexers/futhark.py +12 -17
  133. data/vendor/pygments-main/pygments/lexers/gcodelexer.py +1 -2
  134. data/vendor/pygments-main/pygments/lexers/gdscript.py +76 -233
  135. data/vendor/pygments-main/pygments/lexers/go.py +12 -14
  136. data/vendor/pygments-main/pygments/lexers/grammar_notation.py +22 -26
  137. data/vendor/pygments-main/pygments/lexers/graph.py +36 -15
  138. data/vendor/pygments-main/pygments/lexers/graphics.py +37 -38
  139. data/vendor/pygments-main/pygments/lexers/graphviz.py +2 -1
  140. data/vendor/pygments-main/pygments/lexers/gsql.py +39 -27
  141. data/vendor/pygments-main/pygments/lexers/haskell.py +73 -71
  142. data/vendor/pygments-main/pygments/lexers/haxe.py +13 -11
  143. data/vendor/pygments-main/pygments/lexers/hdl.py +31 -34
  144. data/vendor/pygments-main/pygments/lexers/hexdump.py +21 -21
  145. data/vendor/pygments-main/pygments/lexers/html.py +11 -19
  146. data/vendor/pygments-main/pygments/lexers/idl.py +10 -5
  147. data/vendor/pygments-main/pygments/lexers/igor.py +3 -2
  148. data/vendor/pygments-main/pygments/lexers/inferno.py +9 -8
  149. data/vendor/pygments-main/pygments/lexers/installers.py +39 -33
  150. data/vendor/pygments-main/pygments/lexers/int_fiction.py +35 -20
  151. data/vendor/pygments-main/pygments/lexers/iolang.py +9 -9
  152. data/vendor/pygments-main/pygments/lexers/j.py +20 -13
  153. data/vendor/pygments-main/pygments/lexers/javascript.py +183 -149
  154. data/vendor/pygments-main/pygments/lexers/jmespath.py +68 -0
  155. data/vendor/pygments-main/pygments/lexers/jslt.py +4 -3
  156. data/vendor/pygments-main/pygments/lexers/jsonnet.py +168 -0
  157. data/vendor/pygments-main/pygments/lexers/julia.py +44 -32
  158. data/vendor/pygments-main/pygments/lexers/jvm.py +161 -140
  159. data/vendor/pygments-main/pygments/lexers/kuin.py +93 -59
  160. data/vendor/pygments-main/pygments/lexers/lilypond.py +226 -0
  161. data/vendor/pygments-main/pygments/lexers/lisp.py +244 -107
  162. data/vendor/pygments-main/pygments/lexers/macaulay2.py +1739 -0
  163. data/vendor/pygments-main/pygments/lexers/make.py +21 -16
  164. data/vendor/pygments-main/pygments/lexers/markup.py +752 -11
  165. data/vendor/pygments-main/pygments/lexers/math.py +1 -1
  166. data/vendor/pygments-main/pygments/lexers/matlab.py +18 -3
  167. data/vendor/pygments-main/pygments/lexers/maxima.py +85 -0
  168. data/vendor/pygments-main/pygments/lexers/meson.py +10 -25
  169. data/vendor/pygments-main/pygments/lexers/mime.py +2 -2
  170. data/vendor/pygments-main/pygments/lexers/minecraft.py +394 -0
  171. data/vendor/pygments-main/pygments/lexers/mips.py +128 -0
  172. data/vendor/pygments-main/pygments/lexers/ml.py +9 -6
  173. data/vendor/pygments-main/pygments/lexers/modeling.py +12 -8
  174. data/vendor/pygments-main/pygments/lexers/modula2.py +3 -2
  175. data/vendor/pygments-main/pygments/lexers/monte.py +3 -2
  176. data/vendor/pygments-main/pygments/lexers/mosel.py +1 -1
  177. data/vendor/pygments-main/pygments/lexers/ncl.py +1 -1
  178. data/vendor/pygments-main/pygments/lexers/nimrod.py +62 -20
  179. data/vendor/pygments-main/pygments/lexers/nit.py +3 -2
  180. data/vendor/pygments-main/pygments/lexers/nix.py +5 -5
  181. data/vendor/pygments-main/pygments/lexers/oberon.py +2 -2
  182. data/vendor/pygments-main/pygments/lexers/objective.py +6 -4
  183. data/vendor/pygments-main/pygments/lexers/ooc.py +3 -2
  184. data/vendor/pygments-main/pygments/lexers/other.py +1 -1
  185. data/vendor/pygments-main/pygments/lexers/parasail.py +3 -2
  186. data/vendor/pygments-main/pygments/lexers/parsers.py +23 -21
  187. data/vendor/pygments-main/pygments/lexers/pascal.py +196 -198
  188. data/vendor/pygments-main/pygments/lexers/pawn.py +1 -1
  189. data/vendor/pygments-main/pygments/lexers/perl.py +17 -15
  190. data/vendor/pygments-main/pygments/lexers/phix.py +364 -0
  191. data/vendor/pygments-main/pygments/lexers/php.py +35 -20
  192. data/vendor/pygments-main/pygments/lexers/pointless.py +3 -2
  193. data/vendor/pygments-main/pygments/lexers/pony.py +1 -1
  194. data/vendor/pygments-main/pygments/lexers/praat.py +41 -38
  195. data/vendor/pygments-main/pygments/lexers/procfile.py +2 -3
  196. data/vendor/pygments-main/pygments/lexers/prolog.py +7 -8
  197. data/vendor/pygments-main/pygments/lexers/promql.py +5 -12
  198. data/vendor/pygments-main/pygments/lexers/python.py +145 -119
  199. data/vendor/pygments-main/pygments/lexers/q.py +188 -0
  200. data/vendor/pygments-main/pygments/lexers/qlik.py +117 -0
  201. data/vendor/pygments-main/pygments/lexers/qvt.py +1 -1
  202. data/vendor/pygments-main/pygments/lexers/r.py +4 -4
  203. data/vendor/pygments-main/pygments/lexers/rdf.py +3 -3
  204. data/vendor/pygments-main/pygments/lexers/rebol.py +1 -12
  205. data/vendor/pygments-main/pygments/lexers/resource.py +1 -1
  206. data/vendor/pygments-main/pygments/lexers/ride.py +3 -2
  207. data/vendor/pygments-main/pygments/lexers/rita.py +43 -0
  208. data/vendor/pygments-main/pygments/lexers/rnc.py +3 -2
  209. data/vendor/pygments-main/pygments/lexers/roboconf.py +3 -3
  210. data/vendor/pygments-main/pygments/lexers/robotframework.py +6 -5
  211. data/vendor/pygments-main/pygments/lexers/ruby.py +24 -24
  212. data/vendor/pygments-main/pygments/lexers/rust.py +3 -2
  213. data/vendor/pygments-main/pygments/lexers/sas.py +2 -2
  214. data/vendor/pygments-main/pygments/lexers/savi.py +170 -0
  215. data/vendor/pygments-main/pygments/lexers/scdoc.py +4 -7
  216. data/vendor/pygments-main/pygments/lexers/scripting.py +24 -21
  217. data/vendor/pygments-main/pygments/lexers/sgf.py +6 -6
  218. data/vendor/pygments-main/pygments/lexers/shell.py +29 -21
  219. data/vendor/pygments-main/pygments/lexers/sieve.py +14 -4
  220. data/vendor/pygments-main/pygments/lexers/slash.py +1 -1
  221. data/vendor/pygments-main/pygments/lexers/smalltalk.py +5 -3
  222. data/vendor/pygments-main/pygments/lexers/smithy.py +5 -6
  223. data/vendor/pygments-main/pygments/lexers/smv.py +1 -1
  224. data/vendor/pygments-main/pygments/lexers/snobol.py +1 -1
  225. data/vendor/pygments-main/pygments/lexers/solidity.py +3 -7
  226. data/vendor/pygments-main/pygments/lexers/sophia.py +103 -0
  227. data/vendor/pygments-main/pygments/lexers/special.py +2 -5
  228. data/vendor/pygments-main/pygments/lexers/spice.py +71 -0
  229. data/vendor/pygments-main/pygments/lexers/sql.py +212 -17
  230. data/vendor/pygments-main/pygments/lexers/srcinfo.py +62 -0
  231. data/vendor/pygments-main/pygments/lexers/stata.py +4 -3
  232. data/vendor/pygments-main/pygments/lexers/supercollider.py +4 -3
  233. data/vendor/pygments-main/pygments/lexers/tal.py +74 -0
  234. data/vendor/pygments-main/pygments/lexers/tcl.py +21 -16
  235. data/vendor/pygments-main/pygments/lexers/teal.py +9 -8
  236. data/vendor/pygments-main/pygments/lexers/templates.py +62 -29
  237. data/vendor/pygments-main/pygments/lexers/teraterm.py +12 -20
  238. data/vendor/pygments-main/pygments/lexers/testing.py +6 -2
  239. data/vendor/pygments-main/pygments/lexers/text.py +3 -2
  240. data/vendor/pygments-main/pygments/lexers/textedit.py +41 -7
  241. data/vendor/pygments-main/pygments/lexers/textfmts.py +7 -5
  242. data/vendor/pygments-main/pygments/lexers/theorem.py +42 -36
  243. data/vendor/pygments-main/pygments/lexers/thingsdb.py +2 -4
  244. data/vendor/pygments-main/pygments/lexers/tlb.py +57 -0
  245. data/vendor/pygments-main/pygments/lexers/tnt.py +3 -4
  246. data/vendor/pygments-main/pygments/lexers/trafficscript.py +2 -4
  247. data/vendor/pygments-main/pygments/lexers/typoscript.py +2 -3
  248. data/vendor/pygments-main/pygments/lexers/ul4.py +267 -0
  249. data/vendor/pygments-main/pygments/lexers/unicon.py +1 -1
  250. data/vendor/pygments-main/pygments/lexers/urbi.py +4 -4
  251. data/vendor/pygments-main/pygments/lexers/usd.py +2 -1
  252. data/vendor/pygments-main/pygments/lexers/varnish.py +5 -5
  253. data/vendor/pygments-main/pygments/lexers/verification.py +4 -3
  254. data/vendor/pygments-main/pygments/lexers/web.py +1 -1
  255. data/vendor/pygments-main/pygments/lexers/webassembly.py +5 -5
  256. data/vendor/pygments-main/pygments/lexers/webidl.py +2 -1
  257. data/vendor/pygments-main/pygments/lexers/webmisc.py +90 -71
  258. data/vendor/pygments-main/pygments/lexers/wgsl.py +407 -0
  259. data/vendor/pygments-main/pygments/lexers/whiley.py +2 -1
  260. data/vendor/pygments-main/pygments/lexers/wowtoc.py +120 -0
  261. data/vendor/pygments-main/pygments/lexers/wren.py +99 -0
  262. data/vendor/pygments-main/pygments/lexers/x10.py +5 -6
  263. data/vendor/pygments-main/pygments/lexers/xorg.py +3 -2
  264. data/vendor/pygments-main/pygments/lexers/yang.py +6 -5
  265. data/vendor/pygments-main/pygments/lexers/zig.py +3 -2
  266. data/vendor/pygments-main/pygments/modeline.py +1 -1
  267. data/vendor/pygments-main/pygments/plugin.py +28 -9
  268. data/vendor/pygments-main/pygments/regexopt.py +1 -1
  269. data/vendor/pygments-main/pygments/scanner.py +2 -2
  270. data/vendor/pygments-main/pygments/sphinxext.py +63 -1
  271. data/vendor/pygments-main/pygments/style.py +7 -1
  272. data/vendor/pygments-main/pygments/styles/__init__.py +19 -5
  273. data/vendor/pygments-main/pygments/styles/abap.py +2 -2
  274. data/vendor/pygments-main/pygments/styles/algol.py +1 -2
  275. data/vendor/pygments-main/pygments/styles/algol_nu.py +1 -2
  276. data/vendor/pygments-main/pygments/styles/arduino.py +2 -3
  277. data/vendor/pygments-main/pygments/styles/autumn.py +1 -3
  278. data/vendor/pygments-main/pygments/styles/borland.py +1 -3
  279. data/vendor/pygments-main/pygments/styles/bw.py +1 -2
  280. data/vendor/pygments-main/pygments/styles/colorful.py +1 -3
  281. data/vendor/pygments-main/pygments/styles/default.py +13 -14
  282. data/vendor/pygments-main/pygments/styles/dracula.py +102 -0
  283. data/vendor/pygments-main/pygments/styles/emacs.py +1 -2
  284. data/vendor/pygments-main/pygments/styles/friendly.py +1 -2
  285. data/vendor/pygments-main/pygments/styles/friendly_grayscale.py +75 -0
  286. data/vendor/pygments-main/pygments/styles/fruity.py +1 -1
  287. data/vendor/pygments-main/pygments/styles/gh_dark.py +107 -0
  288. data/vendor/pygments-main/pygments/styles/gruvbox.py +4 -2
  289. data/vendor/pygments-main/pygments/styles/igor.py +1 -2
  290. data/vendor/pygments-main/pygments/styles/inkpot.py +3 -2
  291. data/vendor/pygments-main/pygments/styles/lilypond.py +56 -0
  292. data/vendor/pygments-main/pygments/styles/lovelace.py +1 -3
  293. data/vendor/pygments-main/pygments/styles/manni.py +1 -1
  294. data/vendor/pygments-main/pygments/styles/material.py +1 -2
  295. data/vendor/pygments-main/pygments/styles/monokai.py +3 -3
  296. data/vendor/pygments-main/pygments/styles/murphy.py +1 -3
  297. data/vendor/pygments-main/pygments/styles/native.py +11 -11
  298. data/vendor/pygments-main/pygments/styles/nord.py +150 -0
  299. data/vendor/pygments-main/pygments/styles/onedark.py +59 -0
  300. data/vendor/pygments-main/pygments/styles/paraiso_dark.py +1 -6
  301. data/vendor/pygments-main/pygments/styles/paraiso_light.py +1 -6
  302. data/vendor/pygments-main/pygments/styles/pastie.py +1 -3
  303. data/vendor/pygments-main/pygments/styles/perldoc.py +1 -2
  304. data/vendor/pygments-main/pygments/styles/rainbow_dash.py +3 -3
  305. data/vendor/pygments-main/pygments/styles/rrt.py +3 -2
  306. data/vendor/pygments-main/pygments/styles/sas.py +2 -4
  307. data/vendor/pygments-main/pygments/styles/solarized.py +1 -1
  308. data/vendor/pygments-main/pygments/styles/staroffice.py +26 -0
  309. data/vendor/pygments-main/pygments/styles/stata_dark.py +4 -6
  310. data/vendor/pygments-main/pygments/styles/stata_light.py +1 -2
  311. data/vendor/pygments-main/pygments/styles/tango.py +2 -3
  312. data/vendor/pygments-main/pygments/styles/trac.py +1 -3
  313. data/vendor/pygments-main/pygments/styles/vim.py +1 -2
  314. data/vendor/pygments-main/pygments/styles/vs.py +1 -2
  315. data/vendor/pygments-main/pygments/styles/xcode.py +1 -3
  316. data/vendor/pygments-main/pygments/styles/zenburn.py +4 -6
  317. data/vendor/pygments-main/pygments/token.py +2 -1
  318. data/vendor/pygments-main/pygments/unistring.py +4 -6
  319. data/vendor/pygments-main/pygments/util.py +27 -5
  320. metadata +59 -14
  321. data/vendor/pygments-main/Pygments-2.10.0.dist-info/RECORD +0 -524
  322. /data/vendor/pygments-main/{Pygments-2.10.0.dist-info → Pygments-2.15.1.dist-info}/INSTALLER +0 -0
  323. /data/vendor/pygments-main/{Pygments-2.10.0.dist-info → Pygments-2.15.1.dist-info}/REQUESTED +0 -0
  324. /data/vendor/pygments-main/{Pygments-2.10.0.dist-info → Pygments-2.15.1.dist-info}/top_level.txt +0 -0
@@ -4,29 +4,28 @@
4
4
 
5
5
  Lexers for Python and related languages.
6
6
 
7
- :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
7
+ :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
8
8
  :license: BSD, see LICENSE for details.
9
9
  """
10
10
 
11
11
  import re
12
+ import keyword
12
13
 
13
- from pygments.lexer import Lexer, RegexLexer, include, bygroups, using, \
14
- default, words, combined, do_insertions
14
+ from pygments.lexer import DelegatingLexer, Lexer, RegexLexer, include, \
15
+ bygroups, using, default, words, combined, do_insertions, this, line_re
15
16
  from pygments.util import get_bool_opt, shebang_matches
16
17
  from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
17
- Number, Punctuation, Generic, Other, Error
18
+ Number, Punctuation, Generic, Other, Error, Whitespace
18
19
  from pygments import unistring as uni
19
20
 
20
21
  __all__ = ['PythonLexer', 'PythonConsoleLexer', 'PythonTracebackLexer',
21
22
  'Python2Lexer', 'Python2TracebackLexer',
22
23
  'CythonLexer', 'DgLexer', 'NumPyLexer']
23
24
 
24
- line_re = re.compile('.*?\n')
25
-
26
25
 
27
26
  class PythonLexer(RegexLexer):
28
27
  """
29
- For `Python <http://www.python.org>`_ source code (version 3.x).
28
+ For Python source code (version 3.x).
30
29
 
31
30
  .. versionadded:: 0.10
32
31
 
@@ -36,10 +35,13 @@ class PythonLexer(RegexLexer):
36
35
  """
37
36
 
38
37
  name = 'Python'
38
+ url = 'http://www.python.org'
39
39
  aliases = ['python', 'py', 'sage', 'python3', 'py3']
40
40
  filenames = [
41
41
  '*.py',
42
42
  '*.pyw',
43
+ # Type stubs
44
+ '*.pyi',
43
45
  # Jython
44
46
  '*.jy',
45
47
  # Sage
@@ -60,8 +62,6 @@ class PythonLexer(RegexLexer):
60
62
  mimetypes = ['text/x-python', 'application/x-python',
61
63
  'text/x-python3', 'application/x-python3']
62
64
 
63
- flags = re.MULTILINE | re.UNICODE
64
-
65
65
  uni_name = "[%s][%s]*" % (uni.xid_start, uni.xid_continue)
66
66
 
67
67
  def innerstring_rules(ttype):
@@ -100,16 +100,17 @@ class PythonLexer(RegexLexer):
100
100
 
101
101
  tokens = {
102
102
  'root': [
103
- (r'\n', Text),
103
+ (r'\n', Whitespace),
104
104
  (r'^(\s*)([rRuUbB]{,2})("""(?:.|\n)*?""")',
105
- bygroups(Text, String.Affix, String.Doc)),
105
+ bygroups(Whitespace, String.Affix, String.Doc)),
106
106
  (r"^(\s*)([rRuUbB]{,2})('''(?:.|\n)*?''')",
107
- bygroups(Text, String.Affix, String.Doc)),
107
+ bygroups(Whitespace, String.Affix, String.Doc)),
108
108
  (r'\A#!.+$', Comment.Hashbang),
109
109
  (r'#.*$', Comment.Single),
110
110
  (r'\\\n', Text),
111
111
  (r'\\', Text),
112
112
  include('keywords'),
113
+ include('soft-keywords'),
113
114
  (r'(def)((?:\s|\\\s)+)', bygroups(Keyword, Text), 'funcname'),
114
115
  (r'(class)((?:\s|\\\s)+)', bygroups(Keyword, Text), 'classname'),
115
116
  (r'(from)((?:\s|\\\s)+)', bygroups(Keyword.Namespace, Text),
@@ -141,7 +142,7 @@ class PythonLexer(RegexLexer):
141
142
  combined('fstringescape', 'dqf')),
142
143
  ("([fF])(')", bygroups(String.Affix, String.Single),
143
144
  combined('fstringescape', 'sqf')),
144
- # raw strings
145
+ # raw bytes and strings
145
146
  ('(?i)(rb|br|r)(""")',
146
147
  bygroups(String.Affix, String.Double), 'tdqs'),
147
148
  ("(?i)(rb|br|r)(''')",
@@ -151,14 +152,24 @@ class PythonLexer(RegexLexer):
151
152
  ("(?i)(rb|br|r)(')",
152
153
  bygroups(String.Affix, String.Single), 'sqs'),
153
154
  # non-raw strings
154
- ('([uUbB]?)(""")', bygroups(String.Affix, String.Double),
155
+ ('([uU]?)(""")', bygroups(String.Affix, String.Double),
155
156
  combined('stringescape', 'tdqs')),
156
- ("([uUbB]?)(''')", bygroups(String.Affix, String.Single),
157
+ ("([uU]?)(''')", bygroups(String.Affix, String.Single),
157
158
  combined('stringescape', 'tsqs')),
158
- ('([uUbB]?)(")', bygroups(String.Affix, String.Double),
159
+ ('([uU]?)(")', bygroups(String.Affix, String.Double),
159
160
  combined('stringescape', 'dqs')),
160
- ("([uUbB]?)(')", bygroups(String.Affix, String.Single),
161
+ ("([uU]?)(')", bygroups(String.Affix, String.Single),
161
162
  combined('stringescape', 'sqs')),
163
+ # non-raw bytes
164
+ ('([bB])(""")', bygroups(String.Affix, String.Double),
165
+ combined('bytesescape', 'tdqs')),
166
+ ("([bB])(''')", bygroups(String.Affix, String.Single),
167
+ combined('bytesescape', 'tsqs')),
168
+ ('([bB])(")', bygroups(String.Affix, String.Double),
169
+ combined('bytesescape', 'dqs')),
170
+ ("([bB])(')", bygroups(String.Affix, String.Single),
171
+ combined('bytesescape', 'sqs')),
172
+
162
173
  (r'[^\S\n]+', Text),
163
174
  include('numbers'),
164
175
  (r'!=|==|<<|>>|:=|[-~+/*%=<>&^|.]', Operator),
@@ -181,13 +192,13 @@ class PythonLexer(RegexLexer):
181
192
  (r'(=\s*)?' # debug (https://bugs.python.org/issue36817)
182
193
  r'(\![sraf])?' # conversion
183
194
  r':', String.Interpol, '#pop'),
184
- (r'\s+', Text), # allow new lines
195
+ (r'\s+', Whitespace), # allow new lines
185
196
  include('expr'),
186
197
  ],
187
198
  'expr-inside-fstring-inner': [
188
199
  (r'[{([]', Punctuation, 'expr-inside-fstring-inner'),
189
200
  (r'[])}]', Punctuation, '#pop'),
190
- (r'\s+', Text), # allow new lines
201
+ (r'\s+', Whitespace), # allow new lines
191
202
  include('expr'),
192
203
  ],
193
204
  'expr-keywords': [
@@ -207,18 +218,32 @@ class PythonLexer(RegexLexer):
207
218
  Keyword),
208
219
  (words(('True', 'False', 'None'), suffix=r'\b'), Keyword.Constant),
209
220
  ],
221
+ 'soft-keywords': [
222
+ # `match`, `case` and `_` soft keywords
223
+ (r'(^[ \t]*)' # at beginning of line + possible indentation
224
+ r'(match|case)\b' # a possible keyword
225
+ r'(?![ \t]*(?:' # not followed by...
226
+ r'[:,;=^&|@~)\]}]|(?:' + # characters and keywords that mean this isn't
227
+ r'|'.join(keyword.kwlist) + r')\b))', # pattern matching
228
+ bygroups(Text, Keyword), 'soft-keywords-inner'),
229
+ ],
230
+ 'soft-keywords-inner': [
231
+ # optional `_` keyword
232
+ (r'(\s+)([^\n_]*)(_\b)', bygroups(Whitespace, using(this), Keyword)),
233
+ default('#pop')
234
+ ],
210
235
  'builtins': [
211
236
  (words((
212
- '__import__', 'abs', 'all', 'any', 'bin', 'bool', 'bytearray',
213
- 'bytes', 'chr', 'classmethod', 'compile', 'complex',
214
- 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'filter',
215
- 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr',
216
- 'hash', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass',
217
- 'iter', 'len', 'list', 'locals', 'map', 'max', 'memoryview',
218
- 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print',
219
- 'property', 'range', 'repr', 'reversed', 'round', 'set', 'setattr',
220
- 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple',
221
- 'type', 'vars', 'zip'), prefix=r'(?<!\.)', suffix=r'\b'),
237
+ '__import__', 'abs', 'aiter', 'all', 'any', 'bin', 'bool', 'bytearray',
238
+ 'breakpoint', 'bytes', 'callable', 'chr', 'classmethod', 'compile',
239
+ 'complex', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval',
240
+ 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals',
241
+ 'hasattr', 'hash', 'hex', 'id', 'input', 'int', 'isinstance',
242
+ 'issubclass', 'iter', 'len', 'list', 'locals', 'map', 'max',
243
+ 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow',
244
+ 'print', 'property', 'range', 'repr', 'reversed', 'round', 'set',
245
+ 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super',
246
+ 'tuple', 'type', 'vars', 'zip'), prefix=r'(?<!\.)', suffix=r'\b'),
222
247
  Name.Builtin),
223
248
  (r'(?<!\.)(self|Ellipsis|NotImplemented|cls)\b', Name.Builtin.Pseudo),
224
249
  (words((
@@ -243,7 +268,8 @@ class PythonLexer(RegexLexer):
243
268
  'InterruptedError', 'IsADirectoryError', 'NotADirectoryError',
244
269
  'PermissionError', 'ProcessLookupError', 'TimeoutError',
245
270
  # others new in Python 3
246
- 'StopAsyncIteration', 'ModuleNotFoundError', 'RecursionError'),
271
+ 'StopAsyncIteration', 'ModuleNotFoundError', 'RecursionError',
272
+ 'EncodingWarning'),
247
273
  prefix=r'(?<!\.)', suffix=r'\b'),
248
274
  Name.Exception),
249
275
  ],
@@ -315,7 +341,7 @@ class PythonLexer(RegexLexer):
315
341
  (r'\.', Name.Namespace),
316
342
  # if None occurs here, it's "raise x from None", since None can
317
343
  # never be a module name
318
- (r'None\b', Name.Builtin.Pseudo, '#pop'),
344
+ (r'None\b', Keyword.Constant, '#pop'),
319
345
  (uni_name, Name.Namespace),
320
346
  default('#pop'),
321
347
  ],
@@ -327,9 +353,12 @@ class PythonLexer(RegexLexer):
327
353
  include('rfstringescape'),
328
354
  include('stringescape'),
329
355
  ],
356
+ 'bytesescape': [
357
+ (r'\\([\\abfnrtv"\']|\n|x[a-fA-F0-9]{2}|[0-7]{1,3})', String.Escape)
358
+ ],
330
359
  'stringescape': [
331
- (r'\\([\\abfnrtv"\']|\n|N\{.*?\}|u[a-fA-F0-9]{4}|'
332
- r'U[a-fA-F0-9]{8}|x[a-fA-F0-9]{2}|[0-7]{1,3})', String.Escape)
360
+ (r'\\(N\{.*?\}|u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8})', String.Escape),
361
+ include('bytesescape')
333
362
  ],
334
363
  'fstrings-single': fstring_rules(String.Single),
335
364
  'fstrings-double': fstring_rules(String.Double),
@@ -387,7 +416,7 @@ Python3Lexer = PythonLexer
387
416
 
388
417
  class Python2Lexer(RegexLexer):
389
418
  """
390
- For `Python 2.x <http://www.python.org>`_ source code.
419
+ For Python 2.x source code.
391
420
 
392
421
  .. versionchanged:: 2.5
393
422
  This class has been renamed from ``PythonLexer``. ``PythonLexer`` now
@@ -396,6 +425,7 @@ class Python2Lexer(RegexLexer):
396
425
  """
397
426
 
398
427
  name = 'Python 2.x'
428
+ url = 'http://www.python.org'
399
429
  aliases = ['python2', 'py2']
400
430
  filenames = [] # now taken over by PythonLexer (3.x)
401
431
  mimetypes = ['text/x-python2', 'application/x-python2']
@@ -415,11 +445,11 @@ class Python2Lexer(RegexLexer):
415
445
 
416
446
  tokens = {
417
447
  'root': [
418
- (r'\n', Text),
448
+ (r'\n', Whitespace),
419
449
  (r'^(\s*)([rRuUbB]{,2})("""(?:.|\n)*?""")',
420
- bygroups(Text, String.Affix, String.Doc)),
450
+ bygroups(Whitespace, String.Affix, String.Doc)),
421
451
  (r"^(\s*)([rRuUbB]{,2})('''(?:.|\n)*?''')",
422
- bygroups(Text, String.Affix, String.Doc)),
452
+ bygroups(Whitespace, String.Affix, String.Doc)),
423
453
  (r'[^\S\n]+', Text),
424
454
  (r'\A#!.+$', Comment.Hashbang),
425
455
  (r'#.*$', Comment.Single),
@@ -605,15 +635,50 @@ class Python2Lexer(RegexLexer):
605
635
  def analyse_text(text):
606
636
  return shebang_matches(text, r'pythonw?2(\.\d)?')
607
637
 
638
+ class _PythonConsoleLexerBase(RegexLexer):
639
+ name = 'Python console session'
640
+ aliases = ['pycon']
641
+ mimetypes = ['text/x-python-doctest']
642
+
643
+ """Auxiliary lexer for `PythonConsoleLexer`.
644
+
645
+ Code tokens are output as ``Token.Other.Code``, traceback tokens as
646
+ ``Token.Other.Traceback``.
647
+ """
648
+ tokens = {
649
+ 'root': [
650
+ (r'(>>> )(.*\n)', bygroups(Generic.Prompt, Other.Code), 'continuations'),
651
+ # This happens, e.g., when tracebacks are embedded in documentation;
652
+ # trailing whitespaces are often stripped in such contexts.
653
+ (r'(>>>)(\n)', bygroups(Generic.Prompt, Whitespace)),
654
+ (r'(\^C)?Traceback \(most recent call last\):\n', Other.Traceback, 'traceback'),
655
+ # SyntaxError starts with this
656
+ (r' File "[^"]+", line \d+', Other.Traceback, 'traceback'),
657
+ (r'.*\n', Generic.Output),
658
+ ],
659
+ 'continuations': [
660
+ (r'(\.\.\. )(.*\n)', bygroups(Generic.Prompt, Other.Code)),
661
+ # See above.
662
+ (r'(\.\.\.)(\n)', bygroups(Generic.Prompt, Whitespace)),
663
+ default('#pop'),
664
+ ],
665
+ 'traceback': [
666
+ # As soon as we see a traceback, consume everything until the next
667
+ # >>> prompt.
668
+ (r'(?=>>>( |$))', Text, '#pop'),
669
+ (r'(KeyboardInterrupt)(\n)', bygroups(Name.Class, Whitespace)),
670
+ (r'.*\n', Other.Traceback),
671
+ ],
672
+ }
608
673
 
609
- class PythonConsoleLexer(Lexer):
674
+ class PythonConsoleLexer(DelegatingLexer):
610
675
  """
611
676
  For Python console output or doctests, such as:
612
677
 
613
678
  .. sourcecode:: pycon
614
679
 
615
680
  >>> a = 'foo'
616
- >>> print a
681
+ >>> print(a)
617
682
  foo
618
683
  >>> 1 / 0
619
684
  Traceback (most recent call last):
@@ -629,70 +694,28 @@ class PythonConsoleLexer(Lexer):
629
694
  .. versionchanged:: 2.5
630
695
  Now defaults to ``True``.
631
696
  """
697
+
632
698
  name = 'Python console session'
633
699
  aliases = ['pycon']
634
700
  mimetypes = ['text/x-python-doctest']
635
701
 
636
702
  def __init__(self, **options):
637
- self.python3 = get_bool_opt(options, 'python3', True)
638
- Lexer.__init__(self, **options)
639
-
640
- def get_tokens_unprocessed(self, text):
641
- if self.python3:
642
- pylexer = PythonLexer(**self.options)
643
- tblexer = PythonTracebackLexer(**self.options)
703
+ python3 = get_bool_opt(options, 'python3', True)
704
+ if python3:
705
+ pylexer = PythonLexer
706
+ tblexer = PythonTracebackLexer
644
707
  else:
645
- pylexer = Python2Lexer(**self.options)
646
- tblexer = Python2TracebackLexer(**self.options)
647
-
648
- curcode = ''
649
- insertions = []
650
- curtb = ''
651
- tbindex = 0
652
- tb = 0
653
- for match in line_re.finditer(text):
654
- line = match.group()
655
- if line.startswith('>>> ') or line.startswith('... '):
656
- tb = 0
657
- insertions.append((len(curcode),
658
- [(0, Generic.Prompt, line[:4])]))
659
- curcode += line[4:]
660
- elif line.rstrip() == '...' and not tb:
661
- # only a new >>> prompt can end an exception block
662
- # otherwise an ellipsis in place of the traceback frames
663
- # will be mishandled
664
- insertions.append((len(curcode),
665
- [(0, Generic.Prompt, '...')]))
666
- curcode += line[3:]
667
- else:
668
- if curcode:
669
- yield from do_insertions(
670
- insertions, pylexer.get_tokens_unprocessed(curcode))
671
- curcode = ''
672
- insertions = []
673
- if (line.startswith('Traceback (most recent call last):') or
674
- re.match(' File "[^"]+", line \\d+\\n$', line)):
675
- tb = 1
676
- curtb = line
677
- tbindex = match.start()
678
- elif line == 'KeyboardInterrupt\n':
679
- yield match.start(), Name.Class, line
680
- elif tb:
681
- curtb += line
682
- if not (line.startswith(' ') or line.strip() == '...'):
683
- tb = 0
684
- for i, t, v in tblexer.get_tokens_unprocessed(curtb):
685
- yield tbindex+i, t, v
686
- curtb = ''
687
- else:
688
- yield match.start(), Generic.Output, line
689
- if curcode:
690
- yield from do_insertions(insertions,
691
- pylexer.get_tokens_unprocessed(curcode))
692
- if curtb:
693
- for i, t, v in tblexer.get_tokens_unprocessed(curtb):
694
- yield tbindex+i, t, v
695
-
708
+ pylexer = Python2Lexer
709
+ tblexer = Python2TracebackLexer
710
+ # We have two auxiliary lexers. Use DelegatingLexer twice with
711
+ # different tokens. TODO: DelegatingLexer should support this
712
+ # directly, by accepting a tuplet of auxiliary lexers and a tuple of
713
+ # distinguishing tokens. Then we wouldn't need this intermediary
714
+ # class.
715
+ class _ReplaceInnerCode(DelegatingLexer):
716
+ def __init__(self, **options):
717
+ super().__init__(pylexer, _PythonConsoleLexerBase, Other.Code, **options)
718
+ super().__init__(tblexer, _ReplaceInnerCode, Other.Traceback, **options)
696
719
 
697
720
  class PythonTracebackLexer(RegexLexer):
698
721
  """
@@ -712,8 +735,8 @@ class PythonTracebackLexer(RegexLexer):
712
735
 
713
736
  tokens = {
714
737
  'root': [
715
- (r'\n', Text),
716
- (r'^Traceback \(most recent call last\):\n', Generic.Traceback, 'intb'),
738
+ (r'\n', Whitespace),
739
+ (r'^(\^C)?Traceback \(most recent call last\):\n', Generic.Traceback, 'intb'),
717
740
  (r'^During handling of the above exception, another '
718
741
  r'exception occurred:\n\n', Generic.Traceback),
719
742
  (r'^The above exception was the direct cause of the '
@@ -723,24 +746,25 @@ class PythonTracebackLexer(RegexLexer):
723
746
  ],
724
747
  'intb': [
725
748
  (r'^( File )("[^"]+")(, line )(\d+)(, in )(.+)(\n)',
726
- bygroups(Text, Name.Builtin, Text, Number, Text, Name, Text)),
749
+ bygroups(Text, Name.Builtin, Text, Number, Text, Name, Whitespace)),
727
750
  (r'^( File )("[^"]+")(, line )(\d+)(\n)',
728
- bygroups(Text, Name.Builtin, Text, Number, Text)),
751
+ bygroups(Text, Name.Builtin, Text, Number, Whitespace)),
729
752
  (r'^( )(.+)(\n)',
730
- bygroups(Text, using(PythonLexer), Text), 'markers'),
753
+ bygroups(Whitespace, using(PythonLexer), Whitespace), 'markers'),
731
754
  (r'^([ \t]*)(\.\.\.)(\n)',
732
- bygroups(Text, Comment, Text)), # for doctests...
755
+ bygroups(Whitespace, Comment, Whitespace)), # for doctests...
733
756
  (r'^([^:]+)(: )(.+)(\n)',
734
- bygroups(Generic.Error, Text, Name, Text), '#pop'),
757
+ bygroups(Generic.Error, Text, Name, Whitespace), '#pop'),
735
758
  (r'^([a-zA-Z_][\w.]*)(:?\n)',
736
- bygroups(Generic.Error, Text), '#pop')
759
+ bygroups(Generic.Error, Whitespace), '#pop'),
760
+ default('#pop'),
737
761
  ],
738
762
  'markers': [
739
763
  # Either `PEP 657 <https://www.python.org/dev/peps/pep-0657/>`
740
764
  # error locations in Python 3.11+, or single-caret markers
741
765
  # for syntax errors before that.
742
- (r'^( {4,})(\^+)(\n)',
743
- bygroups(Text, Punctuation.Marker, Text),
766
+ (r'^( {4,})([~^]+)(\n)',
767
+ bygroups(Whitespace, Punctuation.Marker, Whitespace),
744
768
  '#pop'),
745
769
  default('#pop'),
746
770
  ],
@@ -778,17 +802,17 @@ class Python2TracebackLexer(RegexLexer):
778
802
  ],
779
803
  'intb': [
780
804
  (r'^( File )("[^"]+")(, line )(\d+)(, in )(.+)(\n)',
781
- bygroups(Text, Name.Builtin, Text, Number, Text, Name, Text)),
805
+ bygroups(Text, Name.Builtin, Text, Number, Text, Name, Whitespace)),
782
806
  (r'^( File )("[^"]+")(, line )(\d+)(\n)',
783
- bygroups(Text, Name.Builtin, Text, Number, Text)),
807
+ bygroups(Text, Name.Builtin, Text, Number, Whitespace)),
784
808
  (r'^( )(.+)(\n)',
785
- bygroups(Text, using(Python2Lexer), Text), 'marker'),
809
+ bygroups(Text, using(Python2Lexer), Whitespace), 'marker'),
786
810
  (r'^([ \t]*)(\.\.\.)(\n)',
787
- bygroups(Text, Comment, Text)), # for doctests...
811
+ bygroups(Text, Comment, Whitespace)), # for doctests...
788
812
  (r'^([^:]+)(: )(.+)(\n)',
789
- bygroups(Generic.Error, Text, Name, Text), '#pop'),
813
+ bygroups(Generic.Error, Text, Name, Whitespace), '#pop'),
790
814
  (r'^([a-zA-Z_]\w*)(:?\n)',
791
- bygroups(Generic.Error, Text), '#pop')
815
+ bygroups(Generic.Error, Whitespace), '#pop')
792
816
  ],
793
817
  'marker': [
794
818
  # For syntax errors.
@@ -800,25 +824,26 @@ class Python2TracebackLexer(RegexLexer):
800
824
 
801
825
  class CythonLexer(RegexLexer):
802
826
  """
803
- For Pyrex and `Cython <http://cython.org>`_ source code.
827
+ For Pyrex and Cython source code.
804
828
 
805
829
  .. versionadded:: 1.1
806
830
  """
807
831
 
808
832
  name = 'Cython'
833
+ url = 'http://cython.org'
809
834
  aliases = ['cython', 'pyx', 'pyrex']
810
835
  filenames = ['*.pyx', '*.pxd', '*.pxi']
811
836
  mimetypes = ['text/x-cython', 'application/x-cython']
812
837
 
813
838
  tokens = {
814
839
  'root': [
815
- (r'\n', Text),
816
- (r'^(\s*)("""(?:.|\n)*?""")', bygroups(Text, String.Doc)),
817
- (r"^(\s*)('''(?:.|\n)*?''')", bygroups(Text, String.Doc)),
840
+ (r'\n', Whitespace),
841
+ (r'^(\s*)("""(?:.|\n)*?""")', bygroups(Whitespace, String.Doc)),
842
+ (r"^(\s*)('''(?:.|\n)*?''')", bygroups(Whitespace, String.Doc)),
818
843
  (r'[^\S\n]+', Text),
819
844
  (r'#.*$', Comment),
820
845
  (r'[]{}:(),;[]', Punctuation),
821
- (r'\\\n', Text),
846
+ (r'\\\n', Whitespace),
822
847
  (r'\\', Text),
823
848
  (r'(in|is|and|or|not)\b', Operator.Word),
824
849
  (r'(<)([a-zA-Z0-9.?]+)(>)',
@@ -979,7 +1004,7 @@ class CythonLexer(RegexLexer):
979
1004
 
980
1005
  class DgLexer(RegexLexer):
981
1006
  """
982
- Lexer for `dg <http://pyos.github.com/dg>`_,
1007
+ Lexer for dg,
983
1008
  a functional and object-oriented programming language
984
1009
  running on the CPython 3 VM.
985
1010
 
@@ -1084,6 +1109,7 @@ class NumPyLexer(PythonLexer):
1084
1109
  """
1085
1110
 
1086
1111
  name = 'NumPy'
1112
+ url = 'https://numpy.org/'
1087
1113
  aliases = ['numpy']
1088
1114
 
1089
1115
  # override the mimetypes to not inherit them from python