pygments.rb 1.1.2 → 2.0.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 (383) hide show
  1. checksums.yaml +5 -5
  2. data/.github/dependabot.yml +13 -0
  3. data/.github/workflows/ci.yml +28 -0
  4. data/.github/workflows/release.yml +24 -0
  5. data/.gitignore +5 -5
  6. data/CHANGELOG.adoc +128 -0
  7. data/Gemfile +3 -1
  8. data/LICENSE +1 -1
  9. data/README.adoc +160 -0
  10. data/Rakefile +13 -19
  11. data/bench.rb +8 -7
  12. data/cache-lexers.rb +3 -2
  13. data/lexers +0 -0
  14. data/lib/pygments.rb +10 -11
  15. data/lib/pygments/lexer.rb +5 -5
  16. data/lib/pygments/mentos.py +23 -110
  17. data/lib/pygments/popen.rb +148 -229
  18. data/lib/pygments/version.rb +2 -2
  19. data/pygments.rb.gemspec +12 -11
  20. data/test/test_pygments.rb +46 -104
  21. data/vendor/pygments-main/{AUTHORS → Pygments-2.7.3.dist-info/AUTHORS} +23 -3
  22. data/vendor/pygments-main/Pygments-2.7.3.dist-info/INSTALLER +1 -0
  23. data/vendor/pygments-main/{LICENSE → Pygments-2.7.3.dist-info/LICENSE} +1 -1
  24. data/vendor/pygments-main/Pygments-2.7.3.dist-info/METADATA +49 -0
  25. data/vendor/pygments-main/Pygments-2.7.3.dist-info/RECORD +482 -0
  26. data/vendor/pygments-main/Pygments-2.7.3.dist-info/REQUESTED +0 -0
  27. data/vendor/pygments-main/Pygments-2.7.3.dist-info/WHEEL +5 -0
  28. data/vendor/pygments-main/Pygments-2.7.3.dist-info/entry_points.txt +3 -0
  29. data/vendor/pygments-main/Pygments-2.7.3.dist-info/top_level.txt +1 -0
  30. data/vendor/pygments-main/bin/pygmentize +8 -0
  31. data/vendor/pygments-main/pygments/__init__.py +6 -11
  32. data/vendor/pygments-main/pygments/__main__.py +18 -0
  33. data/vendor/pygments-main/pygments/cmdline.py +94 -41
  34. data/vendor/pygments-main/pygments/console.py +6 -9
  35. data/vendor/pygments-main/pygments/filter.py +4 -6
  36. data/vendor/pygments-main/pygments/filters/__init__.py +609 -21
  37. data/vendor/pygments-main/pygments/formatter.py +4 -4
  38. data/vendor/pygments-main/pygments/formatters/__init__.py +42 -6
  39. data/vendor/pygments-main/pygments/formatters/_mapping.py +1 -3
  40. data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -1
  41. data/vendor/pygments-main/pygments/formatters/html.py +223 -135
  42. data/vendor/pygments-main/pygments/formatters/img.py +102 -38
  43. data/vendor/pygments-main/pygments/formatters/irc.py +39 -39
  44. data/vendor/pygments-main/pygments/formatters/latex.py +56 -26
  45. data/vendor/pygments-main/pygments/formatters/other.py +12 -8
  46. data/vendor/pygments-main/pygments/formatters/rtf.py +29 -29
  47. data/vendor/pygments-main/pygments/formatters/svg.py +38 -4
  48. data/vendor/pygments-main/pygments/formatters/terminal.py +25 -31
  49. data/vendor/pygments-main/pygments/formatters/terminal256.py +22 -12
  50. data/vendor/pygments-main/pygments/lexer.py +41 -39
  51. data/vendor/pygments-main/pygments/lexers/__init__.py +62 -15
  52. data/vendor/pygments-main/pygments/lexers/_asy_builtins.py +5 -5
  53. data/vendor/pygments-main/pygments/lexers/_cl_builtins.py +15 -15
  54. data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +11 -12
  55. data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +1717 -1338
  56. data/vendor/pygments-main/pygments/lexers/_lasso_builtins.py +8 -1
  57. data/vendor/pygments-main/pygments/lexers/_lua_builtins.py +2 -4
  58. data/vendor/pygments-main/pygments/lexers/_mapping.py +79 -33
  59. data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +2 -2
  60. data/vendor/pygments-main/pygments/lexers/_mysql_builtins.py +1282 -0
  61. data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +1 -1
  62. data/vendor/pygments-main/pygments/lexers/_php_builtins.py +17 -20
  63. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +73 -16
  64. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +2 -2
  65. data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +1 -3
  66. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +151 -125
  67. data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +6 -4
  68. data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1 -1
  69. data/vendor/pygments-main/pygments/lexers/_usd_builtins.py +113 -0
  70. data/vendor/pygments-main/pygments/lexers/_vbscript_builtins.py +280 -0
  71. data/vendor/pygments-main/pygments/lexers/_vim_builtins.py +1 -1
  72. data/vendor/pygments-main/pygments/lexers/actionscript.py +8 -3
  73. data/vendor/pygments-main/pygments/lexers/agile.py +1 -1
  74. data/vendor/pygments-main/pygments/lexers/algebra.py +20 -1
  75. data/vendor/pygments-main/pygments/lexers/ambient.py +1 -1
  76. data/vendor/pygments-main/pygments/lexers/ampl.py +3 -3
  77. data/vendor/pygments-main/pygments/lexers/apl.py +15 -15
  78. data/vendor/pygments-main/pygments/lexers/archetype.py +3 -3
  79. data/vendor/pygments-main/pygments/lexers/arrow.py +117 -0
  80. data/vendor/pygments-main/pygments/lexers/asm.py +445 -70
  81. data/vendor/pygments-main/pygments/lexers/automation.py +3 -3
  82. data/vendor/pygments-main/pygments/lexers/bare.py +104 -0
  83. data/vendor/pygments-main/pygments/lexers/basic.py +166 -4
  84. data/vendor/pygments-main/pygments/lexers/bibtex.py +13 -9
  85. data/vendor/pygments-main/pygments/lexers/boa.py +102 -0
  86. data/vendor/pygments-main/pygments/lexers/business.py +69 -36
  87. data/vendor/pygments-main/pygments/lexers/c_cpp.py +137 -45
  88. data/vendor/pygments-main/pygments/lexers/c_like.py +68 -43
  89. data/vendor/pygments-main/pygments/lexers/capnproto.py +20 -21
  90. data/vendor/pygments-main/pygments/lexers/chapel.py +25 -14
  91. data/vendor/pygments-main/pygments/lexers/clean.py +135 -244
  92. data/vendor/pygments-main/pygments/lexers/compiled.py +1 -1
  93. data/vendor/pygments-main/pygments/lexers/configs.py +188 -37
  94. data/vendor/pygments-main/pygments/lexers/console.py +1 -1
  95. data/vendor/pygments-main/pygments/lexers/crystal.py +31 -23
  96. data/vendor/pygments-main/pygments/lexers/csound.py +288 -187
  97. data/vendor/pygments-main/pygments/lexers/css.py +18 -16
  98. data/vendor/pygments-main/pygments/lexers/d.py +10 -5
  99. data/vendor/pygments-main/pygments/lexers/dalvik.py +1 -1
  100. data/vendor/pygments-main/pygments/lexers/data.py +240 -97
  101. data/vendor/pygments-main/pygments/lexers/devicetree.py +109 -0
  102. data/vendor/pygments-main/pygments/lexers/diff.py +4 -4
  103. data/vendor/pygments-main/pygments/lexers/dotnet.py +40 -24
  104. data/vendor/pygments-main/pygments/lexers/dsls.py +147 -65
  105. data/vendor/pygments-main/pygments/lexers/dylan.py +16 -18
  106. data/vendor/pygments-main/pygments/lexers/ecl.py +16 -2
  107. data/vendor/pygments-main/pygments/lexers/eiffel.py +1 -1
  108. data/vendor/pygments-main/pygments/lexers/elm.py +5 -5
  109. data/vendor/pygments-main/pygments/lexers/email.py +151 -0
  110. data/vendor/pygments-main/pygments/lexers/erlang.py +29 -32
  111. data/vendor/pygments-main/pygments/lexers/esoteric.py +54 -25
  112. data/vendor/pygments-main/pygments/lexers/ezhil.py +24 -15
  113. data/vendor/pygments-main/pygments/lexers/factor.py +1 -1
  114. data/vendor/pygments-main/pygments/lexers/fantom.py +1 -1
  115. data/vendor/pygments-main/pygments/lexers/felix.py +1 -1
  116. data/vendor/pygments-main/pygments/lexers/floscript.py +83 -0
  117. data/vendor/pygments-main/pygments/lexers/forth.py +41 -40
  118. data/vendor/pygments-main/pygments/lexers/fortran.py +5 -4
  119. data/vendor/pygments-main/pygments/lexers/foxpro.py +2 -2
  120. data/vendor/pygments-main/pygments/lexers/freefem.py +898 -0
  121. data/vendor/pygments-main/pygments/lexers/functional.py +1 -1
  122. data/vendor/pygments-main/pygments/lexers/gdscript.py +346 -0
  123. data/vendor/pygments-main/pygments/lexers/go.py +1 -1
  124. data/vendor/pygments-main/pygments/lexers/grammar_notation.py +63 -6
  125. data/vendor/pygments-main/pygments/lexers/graph.py +14 -9
  126. data/vendor/pygments-main/pygments/lexers/graphics.py +272 -25
  127. data/vendor/pygments-main/pygments/lexers/haskell.py +52 -22
  128. data/vendor/pygments-main/pygments/lexers/haxe.py +6 -6
  129. data/vendor/pygments-main/pygments/lexers/hdl.py +176 -86
  130. data/vendor/pygments-main/pygments/lexers/hexdump.py +18 -12
  131. data/vendor/pygments-main/pygments/lexers/html.py +31 -19
  132. data/vendor/pygments-main/pygments/lexers/idl.py +20 -9
  133. data/vendor/pygments-main/pygments/lexers/igor.py +244 -112
  134. data/vendor/pygments-main/pygments/lexers/inferno.py +2 -2
  135. data/vendor/pygments-main/pygments/lexers/installers.py +1 -1
  136. data/vendor/pygments-main/pygments/lexers/int_fiction.py +40 -15
  137. data/vendor/pygments-main/pygments/lexers/iolang.py +2 -2
  138. data/vendor/pygments-main/pygments/lexers/j.py +3 -3
  139. data/vendor/pygments-main/pygments/lexers/javascript.py +100 -66
  140. data/vendor/pygments-main/pygments/lexers/julia.py +46 -48
  141. data/vendor/pygments-main/pygments/lexers/jvm.py +265 -165
  142. data/vendor/pygments-main/pygments/lexers/lisp.py +882 -804
  143. data/vendor/pygments-main/pygments/lexers/make.py +10 -6
  144. data/vendor/pygments-main/pygments/lexers/markup.py +213 -43
  145. data/vendor/pygments-main/pygments/lexers/math.py +1 -1
  146. data/vendor/pygments-main/pygments/lexers/matlab.py +98 -41
  147. data/vendor/pygments-main/pygments/lexers/mime.py +226 -0
  148. data/vendor/pygments-main/pygments/lexers/ml.py +198 -9
  149. data/vendor/pygments-main/pygments/lexers/modeling.py +26 -18
  150. data/vendor/pygments-main/pygments/lexers/modula2.py +25 -6
  151. data/vendor/pygments-main/pygments/lexers/monte.py +4 -3
  152. data/vendor/pygments-main/pygments/lexers/mosel.py +448 -0
  153. data/vendor/pygments-main/pygments/lexers/ncl.py +85 -244
  154. data/vendor/pygments-main/pygments/lexers/nimrod.py +4 -4
  155. data/vendor/pygments-main/pygments/lexers/nit.py +1 -1
  156. data/vendor/pygments-main/pygments/lexers/nix.py +1 -1
  157. data/vendor/pygments-main/pygments/lexers/oberon.py +17 -1
  158. data/vendor/pygments-main/pygments/lexers/objective.py +16 -16
  159. data/vendor/pygments-main/pygments/lexers/ooc.py +1 -1
  160. data/vendor/pygments-main/pygments/lexers/other.py +1 -1
  161. data/vendor/pygments-main/pygments/lexers/parasail.py +1 -1
  162. data/vendor/pygments-main/pygments/lexers/parsers.py +23 -58
  163. data/vendor/pygments-main/pygments/lexers/pascal.py +23 -23
  164. data/vendor/pygments-main/pygments/lexers/pawn.py +30 -24
  165. data/vendor/pygments-main/pygments/lexers/perl.py +276 -160
  166. data/vendor/pygments-main/pygments/lexers/php.py +64 -10
  167. data/vendor/pygments-main/pygments/lexers/pointless.py +71 -0
  168. data/vendor/pygments-main/pygments/lexers/pony.py +94 -0
  169. data/vendor/pygments-main/pygments/lexers/praat.py +38 -30
  170. data/vendor/pygments-main/pygments/lexers/prolog.py +36 -36
  171. data/vendor/pygments-main/pygments/lexers/promql.py +183 -0
  172. data/vendor/pygments-main/pygments/lexers/python.py +439 -226
  173. data/vendor/pygments-main/pygments/lexers/qvt.py +6 -6
  174. data/vendor/pygments-main/pygments/lexers/r.py +13 -275
  175. data/vendor/pygments-main/pygments/lexers/rdf.py +232 -39
  176. data/vendor/pygments-main/pygments/lexers/rebol.py +8 -8
  177. data/vendor/pygments-main/pygments/lexers/resource.py +2 -2
  178. data/vendor/pygments-main/pygments/lexers/ride.py +139 -0
  179. data/vendor/pygments-main/pygments/lexers/rnc.py +1 -1
  180. data/vendor/pygments-main/pygments/lexers/roboconf.py +1 -1
  181. data/vendor/pygments-main/pygments/lexers/robotframework.py +23 -31
  182. data/vendor/pygments-main/pygments/lexers/ruby.py +22 -24
  183. data/vendor/pygments-main/pygments/lexers/rust.py +86 -71
  184. data/vendor/pygments-main/pygments/lexers/sas.py +7 -7
  185. data/vendor/pygments-main/pygments/lexers/scdoc.py +83 -0
  186. data/vendor/pygments-main/pygments/lexers/scripting.py +75 -13
  187. data/vendor/pygments-main/pygments/lexers/sgf.py +61 -0
  188. data/vendor/pygments-main/pygments/lexers/shell.py +175 -51
  189. data/vendor/pygments-main/pygments/lexers/sieve.py +69 -0
  190. data/vendor/pygments-main/pygments/lexers/slash.py +185 -0
  191. data/vendor/pygments-main/pygments/lexers/smalltalk.py +2 -2
  192. data/vendor/pygments-main/pygments/lexers/smv.py +30 -26
  193. data/vendor/pygments-main/pygments/lexers/snobol.py +1 -1
  194. data/vendor/pygments-main/pygments/lexers/solidity.py +92 -0
  195. data/vendor/pygments-main/pygments/lexers/special.py +5 -3
  196. data/vendor/pygments-main/pygments/lexers/sql.py +333 -177
  197. data/vendor/pygments-main/pygments/lexers/stata.py +107 -42
  198. data/vendor/pygments-main/pygments/lexers/supercollider.py +6 -1
  199. data/vendor/pygments-main/pygments/lexers/tcl.py +1 -1
  200. data/vendor/pygments-main/pygments/lexers/templates.py +144 -132
  201. data/vendor/pygments-main/pygments/lexers/teraterm.py +335 -0
  202. data/vendor/pygments-main/pygments/lexers/testing.py +6 -6
  203. data/vendor/pygments-main/pygments/lexers/text.py +2 -1
  204. data/vendor/pygments-main/pygments/lexers/textedit.py +4 -4
  205. data/vendor/pygments-main/pygments/lexers/textfmts.py +146 -13
  206. data/vendor/pygments-main/pygments/lexers/theorem.py +69 -53
  207. data/vendor/pygments-main/pygments/lexers/tnt.py +263 -0
  208. data/vendor/pygments-main/pygments/lexers/trafficscript.py +1 -1
  209. data/vendor/pygments-main/pygments/lexers/typoscript.py +8 -14
  210. data/vendor/pygments-main/pygments/lexers/unicon.py +412 -0
  211. data/vendor/pygments-main/pygments/lexers/urbi.py +14 -1
  212. data/vendor/pygments-main/pygments/lexers/usd.py +90 -0
  213. data/vendor/pygments-main/pygments/lexers/varnish.py +5 -5
  214. data/vendor/pygments-main/pygments/lexers/verification.py +15 -12
  215. data/vendor/pygments-main/pygments/lexers/web.py +1 -1
  216. data/vendor/pygments-main/pygments/lexers/webidl.py +299 -0
  217. data/vendor/pygments-main/pygments/lexers/webmisc.py +50 -38
  218. data/vendor/pygments-main/pygments/lexers/whiley.py +11 -12
  219. data/vendor/pygments-main/pygments/lexers/x10.py +1 -1
  220. data/vendor/pygments-main/pygments/lexers/xorg.py +37 -0
  221. data/vendor/pygments-main/pygments/lexers/yang.py +104 -0
  222. data/vendor/pygments-main/pygments/lexers/zig.py +124 -0
  223. data/vendor/pygments-main/pygments/modeline.py +6 -5
  224. data/vendor/pygments-main/pygments/plugin.py +14 -18
  225. data/vendor/pygments-main/pygments/regexopt.py +1 -1
  226. data/vendor/pygments-main/pygments/scanner.py +2 -2
  227. data/vendor/pygments-main/pygments/sphinxext.py +2 -4
  228. data/vendor/pygments-main/pygments/style.py +61 -24
  229. data/vendor/pygments-main/pygments/styles/__init__.py +13 -5
  230. data/vendor/pygments-main/pygments/styles/abap.py +29 -0
  231. data/vendor/pygments-main/pygments/styles/algol.py +1 -1
  232. data/vendor/pygments-main/pygments/styles/algol_nu.py +1 -1
  233. data/vendor/pygments-main/pygments/styles/arduino.py +2 -2
  234. data/vendor/pygments-main/pygments/styles/autumn.py +1 -1
  235. data/vendor/pygments-main/pygments/styles/borland.py +1 -1
  236. data/vendor/pygments-main/pygments/styles/bw.py +1 -1
  237. data/vendor/pygments-main/pygments/styles/colorful.py +1 -1
  238. data/vendor/pygments-main/pygments/styles/default.py +1 -1
  239. data/vendor/pygments-main/pygments/styles/emacs.py +1 -1
  240. data/vendor/pygments-main/pygments/styles/friendly.py +1 -1
  241. data/vendor/pygments-main/pygments/styles/fruity.py +1 -1
  242. data/vendor/pygments-main/pygments/styles/igor.py +1 -1
  243. data/vendor/pygments-main/pygments/styles/inkpot.py +67 -0
  244. data/vendor/pygments-main/pygments/styles/lovelace.py +1 -1
  245. data/vendor/pygments-main/pygments/styles/manni.py +1 -1
  246. data/vendor/pygments-main/pygments/styles/monokai.py +4 -3
  247. data/vendor/pygments-main/pygments/styles/murphy.py +1 -1
  248. data/vendor/pygments-main/pygments/styles/native.py +1 -1
  249. data/vendor/pygments-main/pygments/styles/paraiso_dark.py +1 -1
  250. data/vendor/pygments-main/pygments/styles/paraiso_light.py +1 -1
  251. data/vendor/pygments-main/pygments/styles/pastie.py +1 -1
  252. data/vendor/pygments-main/pygments/styles/perldoc.py +1 -1
  253. data/vendor/pygments-main/pygments/styles/rainbow_dash.py +89 -0
  254. data/vendor/pygments-main/pygments/styles/rrt.py +1 -1
  255. data/vendor/pygments-main/pygments/styles/sas.py +3 -0
  256. data/vendor/pygments-main/pygments/styles/solarized.py +134 -0
  257. data/vendor/pygments-main/pygments/styles/stata_dark.py +41 -0
  258. data/vendor/pygments-main/pygments/styles/stata_light.py +39 -0
  259. data/vendor/pygments-main/pygments/styles/tango.py +1 -1
  260. data/vendor/pygments-main/pygments/styles/trac.py +1 -1
  261. data/vendor/pygments-main/pygments/styles/vim.py +1 -1
  262. data/vendor/pygments-main/pygments/styles/vs.py +1 -1
  263. data/vendor/pygments-main/pygments/styles/xcode.py +1 -1
  264. data/vendor/pygments-main/pygments/token.py +1 -1
  265. data/vendor/pygments-main/pygments/unistring.py +47 -108
  266. data/vendor/pygments-main/pygments/util.py +19 -95
  267. metadata +71 -137
  268. data/CHANGELOG.md +0 -98
  269. data/README.md +0 -121
  270. data/circle.yml +0 -20
  271. data/test/test_data.c +0 -2581
  272. data/test/test_data.py +0 -514
  273. data/test/test_data_generated +0 -2582
  274. data/vendor/custom_lexers/github.py +0 -565
  275. data/vendor/pygments-main/CHANGES +0 -1163
  276. data/vendor/pygments-main/MANIFEST.in +0 -6
  277. data/vendor/pygments-main/Makefile +0 -65
  278. data/vendor/pygments-main/README.rst +0 -39
  279. data/vendor/pygments-main/REVISION +0 -1
  280. data/vendor/pygments-main/TODO +0 -12
  281. data/vendor/pygments-main/doc/Makefile +0 -153
  282. data/vendor/pygments-main/doc/_static/favicon.ico +0 -0
  283. data/vendor/pygments-main/doc/_static/logo_new.png +0 -0
  284. data/vendor/pygments-main/doc/_static/logo_only.png +0 -0
  285. data/vendor/pygments-main/doc/_templates/docssidebar.html +0 -3
  286. data/vendor/pygments-main/doc/_templates/indexsidebar.html +0 -25
  287. data/vendor/pygments-main/doc/_themes/pygments14/layout.html +0 -98
  288. data/vendor/pygments-main/doc/_themes/pygments14/static/bodybg.png +0 -0
  289. data/vendor/pygments-main/doc/_themes/pygments14/static/docbg.png +0 -0
  290. data/vendor/pygments-main/doc/_themes/pygments14/static/listitem.png +0 -0
  291. data/vendor/pygments-main/doc/_themes/pygments14/static/logo.png +0 -0
  292. data/vendor/pygments-main/doc/_themes/pygments14/static/pocoo.png +0 -0
  293. data/vendor/pygments-main/doc/_themes/pygments14/static/pygments14.css_t +0 -401
  294. data/vendor/pygments-main/doc/_themes/pygments14/theme.conf +0 -15
  295. data/vendor/pygments-main/doc/conf.py +0 -241
  296. data/vendor/pygments-main/doc/docs/api.rst +0 -331
  297. data/vendor/pygments-main/doc/docs/authors.rst +0 -4
  298. data/vendor/pygments-main/doc/docs/changelog.rst +0 -1
  299. data/vendor/pygments-main/doc/docs/cmdline.rst +0 -149
  300. data/vendor/pygments-main/doc/docs/filterdevelopment.rst +0 -71
  301. data/vendor/pygments-main/doc/docs/filters.rst +0 -41
  302. data/vendor/pygments-main/doc/docs/formatterdevelopment.rst +0 -169
  303. data/vendor/pygments-main/doc/docs/formatters.rst +0 -48
  304. data/vendor/pygments-main/doc/docs/index.rst +0 -66
  305. data/vendor/pygments-main/doc/docs/integrate.rst +0 -40
  306. data/vendor/pygments-main/doc/docs/java.rst +0 -70
  307. data/vendor/pygments-main/doc/docs/lexerdevelopment.rst +0 -689
  308. data/vendor/pygments-main/doc/docs/lexers.rst +0 -69
  309. data/vendor/pygments-main/doc/docs/moinmoin.rst +0 -39
  310. data/vendor/pygments-main/doc/docs/plugins.rst +0 -93
  311. data/vendor/pygments-main/doc/docs/quickstart.rst +0 -205
  312. data/vendor/pygments-main/doc/docs/rstdirective.rst +0 -22
  313. data/vendor/pygments-main/doc/docs/styles.rst +0 -201
  314. data/vendor/pygments-main/doc/docs/tokens.rst +0 -372
  315. data/vendor/pygments-main/doc/docs/unicode.rst +0 -58
  316. data/vendor/pygments-main/doc/download.rst +0 -41
  317. data/vendor/pygments-main/doc/faq.rst +0 -139
  318. data/vendor/pygments-main/doc/index.rst +0 -54
  319. data/vendor/pygments-main/doc/languages.rst +0 -154
  320. data/vendor/pygments-main/doc/make.bat +0 -190
  321. data/vendor/pygments-main/doc/pygmentize.1 +0 -94
  322. data/vendor/pygments-main/external/autopygmentize +0 -84
  323. data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +0 -162
  324. data/vendor/pygments-main/external/markdown-processor.py +0 -67
  325. data/vendor/pygments-main/external/moin-parser.py +0 -112
  326. data/vendor/pygments-main/external/pygments.bashcomp +0 -38
  327. data/vendor/pygments-main/external/rst-directive.py +0 -82
  328. data/vendor/pygments-main/pygmentize +0 -8
  329. data/vendor/pygments-main/pygments/lexers/github.py +0 -565
  330. data/vendor/pygments-main/pygments/styles/stata.py +0 -37
  331. data/vendor/pygments-main/requirements.txt +0 -5
  332. data/vendor/pygments-main/scripts/check_sources.py +0 -211
  333. data/vendor/pygments-main/scripts/debug_lexer.py +0 -246
  334. data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +0 -33
  335. data/vendor/pygments-main/scripts/epydoc.css +0 -280
  336. data/vendor/pygments-main/scripts/find_error.py +0 -1
  337. data/vendor/pygments-main/scripts/get_vimkw.py +0 -74
  338. data/vendor/pygments-main/scripts/pylintrc +0 -301
  339. data/vendor/pygments-main/scripts/vim2pygments.py +0 -935
  340. data/vendor/pygments-main/setup.cfg +0 -10
  341. data/vendor/pygments-main/setup.py +0 -77
  342. data/vendor/pygments-main/tox.ini +0 -7
  343. data/vendor/simplejson/.gitignore +0 -10
  344. data/vendor/simplejson/.travis.yml +0 -5
  345. data/vendor/simplejson/CHANGES.txt +0 -291
  346. data/vendor/simplejson/LICENSE.txt +0 -19
  347. data/vendor/simplejson/MANIFEST.in +0 -5
  348. data/vendor/simplejson/README.rst +0 -19
  349. data/vendor/simplejson/conf.py +0 -179
  350. data/vendor/simplejson/index.rst +0 -628
  351. data/vendor/simplejson/scripts/make_docs.py +0 -18
  352. data/vendor/simplejson/setup.py +0 -104
  353. data/vendor/simplejson/simplejson/__init__.py +0 -510
  354. data/vendor/simplejson/simplejson/_speedups.c +0 -2745
  355. data/vendor/simplejson/simplejson/decoder.py +0 -425
  356. data/vendor/simplejson/simplejson/encoder.py +0 -567
  357. data/vendor/simplejson/simplejson/ordered_dict.py +0 -119
  358. data/vendor/simplejson/simplejson/scanner.py +0 -77
  359. data/vendor/simplejson/simplejson/tests/__init__.py +0 -67
  360. data/vendor/simplejson/simplejson/tests/test_bigint_as_string.py +0 -55
  361. data/vendor/simplejson/simplejson/tests/test_check_circular.py +0 -30
  362. data/vendor/simplejson/simplejson/tests/test_decimal.py +0 -66
  363. data/vendor/simplejson/simplejson/tests/test_decode.py +0 -83
  364. data/vendor/simplejson/simplejson/tests/test_default.py +0 -9
  365. data/vendor/simplejson/simplejson/tests/test_dump.py +0 -67
  366. data/vendor/simplejson/simplejson/tests/test_encode_basestring_ascii.py +0 -46
  367. data/vendor/simplejson/simplejson/tests/test_encode_for_html.py +0 -32
  368. data/vendor/simplejson/simplejson/tests/test_errors.py +0 -34
  369. data/vendor/simplejson/simplejson/tests/test_fail.py +0 -91
  370. data/vendor/simplejson/simplejson/tests/test_float.py +0 -19
  371. data/vendor/simplejson/simplejson/tests/test_indent.py +0 -86
  372. data/vendor/simplejson/simplejson/tests/test_item_sort_key.py +0 -20
  373. data/vendor/simplejson/simplejson/tests/test_namedtuple.py +0 -121
  374. data/vendor/simplejson/simplejson/tests/test_pass1.py +0 -76
  375. data/vendor/simplejson/simplejson/tests/test_pass2.py +0 -14
  376. data/vendor/simplejson/simplejson/tests/test_pass3.py +0 -20
  377. data/vendor/simplejson/simplejson/tests/test_recursion.py +0 -67
  378. data/vendor/simplejson/simplejson/tests/test_scanstring.py +0 -117
  379. data/vendor/simplejson/simplejson/tests/test_separators.py +0 -42
  380. data/vendor/simplejson/simplejson/tests/test_speedups.py +0 -20
  381. data/vendor/simplejson/simplejson/tests/test_tuple.py +0 -49
  382. data/vendor/simplejson/simplejson/tests/test_unicode.py +0 -109
  383. data/vendor/simplejson/simplejson/tool.py +0 -39
@@ -0,0 +1,183 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ pygments.lexers.promql
4
+ ~~~~~~~~~~~~~~~~~~~~~~
5
+
6
+ Lexer for Prometheus Query Language.
7
+
8
+ :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
9
+ :license: BSD, see LICENSE for details.
10
+ """
11
+
12
+ from pygments.lexer import RegexLexer, bygroups, default, words
13
+ from pygments.token import (
14
+ Comment,
15
+ Keyword,
16
+ Name,
17
+ Number,
18
+ Operator,
19
+ Punctuation,
20
+ String,
21
+ Whitespace,
22
+ )
23
+
24
+ __all__ = ["PromQLLexer"]
25
+
26
+
27
+ class PromQLLexer(RegexLexer):
28
+ """
29
+ For `PromQL <https://prometheus.io/docs/prometheus/latest/querying/basics/>`_ queries.
30
+
31
+ For details about the grammar see:
32
+ https://github.com/prometheus/prometheus/tree/master/promql/parser
33
+
34
+ .. versionadded: 2.7
35
+ """
36
+
37
+ name = "PromQL"
38
+ aliases = ["promql"]
39
+ filenames = ["*.promql"]
40
+
41
+ base_keywords = (
42
+ words(
43
+ (
44
+ "bool",
45
+ "by",
46
+ "group_left",
47
+ "group_right",
48
+ "ignoring",
49
+ "offset",
50
+ "on",
51
+ "without",
52
+ ),
53
+ suffix=r"\b",
54
+ ),
55
+ Keyword,
56
+ )
57
+
58
+ aggregator_keywords = (
59
+ words(
60
+ (
61
+ "sum",
62
+ "min",
63
+ "max",
64
+ "avg",
65
+ "group",
66
+ "stddev",
67
+ "stdvar",
68
+ "count",
69
+ "count_values",
70
+ "bottomk",
71
+ "topk",
72
+ "quantile",
73
+ ),
74
+ suffix=r"\b",
75
+ ),
76
+ Keyword,
77
+ )
78
+
79
+ function_keywords = (
80
+ words(
81
+ (
82
+ "abs",
83
+ "absent",
84
+ "absent_over_time",
85
+ "avg_over_time",
86
+ "ceil",
87
+ "changes",
88
+ "clamp_max",
89
+ "clamp_min",
90
+ "count_over_time",
91
+ "day_of_month",
92
+ "day_of_week",
93
+ "days_in_month",
94
+ "delta",
95
+ "deriv",
96
+ "exp",
97
+ "floor",
98
+ "histogram_quantile",
99
+ "holt_winters",
100
+ "hour",
101
+ "idelta",
102
+ "increase",
103
+ "irate",
104
+ "label_join",
105
+ "label_replace",
106
+ "ln",
107
+ "log10",
108
+ "log2",
109
+ "max_over_time",
110
+ "min_over_time",
111
+ "minute",
112
+ "month",
113
+ "predict_linear",
114
+ "quantile_over_time",
115
+ "rate",
116
+ "resets",
117
+ "round",
118
+ "scalar",
119
+ "sort",
120
+ "sort_desc",
121
+ "sqrt",
122
+ "stddev_over_time",
123
+ "stdvar_over_time",
124
+ "sum_over_time",
125
+ "time",
126
+ "timestamp",
127
+ "vector",
128
+ "year",
129
+ ),
130
+ suffix=r"\b",
131
+ ),
132
+ Keyword.Reserved,
133
+ )
134
+
135
+ tokens = {
136
+ "root": [
137
+ (r"\n", Whitespace),
138
+ (r"\s+", Whitespace),
139
+ (r",", Punctuation),
140
+ # Keywords
141
+ base_keywords,
142
+ aggregator_keywords,
143
+ function_keywords,
144
+ # Offsets
145
+ (r"[1-9][0-9]*[smhdwy]", String),
146
+ # Numbers
147
+ (r"-?[0-9]+\.[0-9]+", Number.Float),
148
+ (r"-?[0-9]+", Number.Integer),
149
+ # Comments
150
+ (r"#.*?$", Comment.Single),
151
+ # Operators
152
+ (r"(\+|\-|\*|\/|\%|\^)", Operator),
153
+ (r"==|!=|>=|<=|<|>", Operator),
154
+ (r"and|or|unless", Operator.Word),
155
+ # Metrics
156
+ (r"[_a-zA-Z][a-zA-Z0-9_]+", Name.Variable),
157
+ # Params
158
+ (r'(["\'])(.*?)(["\'])', bygroups(Punctuation, String, Punctuation)),
159
+ # Other states
160
+ (r"\(", Operator, "function"),
161
+ (r"\)", Operator),
162
+ (r"\{", Punctuation, "labels"),
163
+ (r"\[", Punctuation, "range"),
164
+ ],
165
+ "labels": [
166
+ (r"\}", Punctuation, "#pop"),
167
+ (r"\n", Whitespace),
168
+ (r"\s+", Whitespace),
169
+ (r",", Punctuation),
170
+ (r'([_a-zA-Z][a-zA-Z0-9_]*?)(\s*?)(=~|!=|=|~!)(\s*?)(")(.*?)(")',
171
+ bygroups(Name.Label, Whitespace, Operator, Whitespace,
172
+ Punctuation, String, Punctuation)),
173
+ ],
174
+ "range": [
175
+ (r"\]", Punctuation, "#pop"),
176
+ (r"[1-9][0-9]*[smhdwy]", String),
177
+ ],
178
+ "function": [
179
+ (r"\)", Operator, "#pop"),
180
+ (r"\(", Operator, "#push"),
181
+ default("#pop"),
182
+ ],
183
+ }
@@ -5,7 +5,7 @@
5
5
 
6
6
  Lexers for Python and related languages.
7
7
 
8
- :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
8
+ :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
9
9
  :license: BSD, see LICENSE for details.
10
10
  """
11
11
 
@@ -19,21 +19,379 @@ from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
19
19
  from pygments import unistring as uni
20
20
 
21
21
  __all__ = ['PythonLexer', 'PythonConsoleLexer', 'PythonTracebackLexer',
22
- 'Python3Lexer', 'Python3TracebackLexer', 'CythonLexer',
23
- 'DgLexer', 'NumPyLexer']
22
+ 'Python2Lexer', 'Python2TracebackLexer',
23
+ 'CythonLexer', 'DgLexer', 'NumPyLexer']
24
24
 
25
25
  line_re = re.compile('.*?\n')
26
26
 
27
27
 
28
28
  class PythonLexer(RegexLexer):
29
29
  """
30
- For `Python <http://www.python.org>`_ source code.
30
+ For `Python <http://www.python.org>`_ source code (version 3.x).
31
+
32
+ .. versionadded:: 0.10
33
+
34
+ .. versionchanged:: 2.5
35
+ This is now the default ``PythonLexer``. It is still available as the
36
+ alias ``Python3Lexer``.
31
37
  """
32
38
 
33
39
  name = 'Python'
34
- aliases = ['python', 'py', 'sage']
35
- filenames = ['*.py', '*.pyw', '*.sc', 'SConstruct', 'SConscript', '*.tac', '*.sage']
36
- mimetypes = ['text/x-python', 'application/x-python']
40
+ aliases = ['python', 'py', 'sage', 'python3', 'py3']
41
+ filenames = [
42
+ '*.py',
43
+ '*.pyw',
44
+ # Jython
45
+ '*.jy',
46
+ # Sage
47
+ '*.sage',
48
+ # SCons
49
+ '*.sc',
50
+ 'SConstruct',
51
+ 'SConscript',
52
+ # Skylark/Starlark (used by Bazel, Buck, and Pants)
53
+ '*.bzl',
54
+ 'BUCK',
55
+ 'BUILD',
56
+ 'BUILD.bazel',
57
+ 'WORKSPACE',
58
+ # Twisted Application infrastructure
59
+ '*.tac',
60
+ ]
61
+ mimetypes = ['text/x-python', 'application/x-python',
62
+ 'text/x-python3', 'application/x-python3']
63
+
64
+ flags = re.MULTILINE | re.UNICODE
65
+
66
+ uni_name = "[%s][%s]*" % (uni.xid_start, uni.xid_continue)
67
+
68
+ def innerstring_rules(ttype):
69
+ return [
70
+ # the old style '%s' % (...) string formatting (still valid in Py3)
71
+ (r'%(\(\w+\))?[-#0 +]*([0-9]+|[*])?(\.([0-9]+|[*]))?'
72
+ '[hlL]?[E-GXc-giorsaux%]', String.Interpol),
73
+ # the new style '{}'.format(...) string formatting
74
+ (r'\{'
75
+ r'((\w+)((\.\w+)|(\[[^\]]+\]))*)?' # field name
76
+ r'(\![sra])?' # conversion
77
+ r'(\:(.?[<>=\^])?[-+ ]?#?0?(\d+)?,?(\.\d+)?[E-GXb-gnosx%]?)?'
78
+ r'\}', String.Interpol),
79
+
80
+ # backslashes, quotes and formatting signs must be parsed one at a time
81
+ (r'[^\\\'"%{\n]+', ttype),
82
+ (r'[\'"\\]', ttype),
83
+ # unhandled string formatting sign
84
+ (r'%|(\{{1,2})', ttype)
85
+ # newlines are an error (use "nl" state)
86
+ ]
87
+
88
+ def fstring_rules(ttype):
89
+ return [
90
+ # Assuming that a '}' is the closing brace after format specifier.
91
+ # Sadly, this means that we won't detect syntax error. But it's
92
+ # more important to parse correct syntax correctly, than to
93
+ # highlight invalid syntax.
94
+ (r'\}', String.Interpol),
95
+ (r'\{', String.Interpol, 'expr-inside-fstring'),
96
+ # backslashes, quotes and formatting signs must be parsed one at a time
97
+ (r'[^\\\'"{}\n]+', ttype),
98
+ (r'[\'"\\]', ttype),
99
+ # newlines are an error (use "nl" state)
100
+ ]
101
+
102
+ tokens = {
103
+ 'root': [
104
+ (r'\n', Text),
105
+ (r'^(\s*)([rRuUbB]{,2})("""(?:.|\n)*?""")',
106
+ bygroups(Text, String.Affix, String.Doc)),
107
+ (r"^(\s*)([rRuUbB]{,2})('''(?:.|\n)*?''')",
108
+ bygroups(Text, String.Affix, String.Doc)),
109
+ (r'\A#!.+$', Comment.Hashbang),
110
+ (r'#.*$', Comment.Single),
111
+ (r'\\\n', Text),
112
+ (r'\\', Text),
113
+ include('keywords'),
114
+ (r'(def)((?:\s|\\\s)+)', bygroups(Keyword, Text), 'funcname'),
115
+ (r'(class)((?:\s|\\\s)+)', bygroups(Keyword, Text), 'classname'),
116
+ (r'(from)((?:\s|\\\s)+)', bygroups(Keyword.Namespace, Text),
117
+ 'fromimport'),
118
+ (r'(import)((?:\s|\\\s)+)', bygroups(Keyword.Namespace, Text),
119
+ 'import'),
120
+ include('expr'),
121
+ ],
122
+ 'expr': [
123
+ # raw f-strings
124
+ ('(?i)(rf|fr)(""")',
125
+ bygroups(String.Affix, String.Double), 'tdqf'),
126
+ ("(?i)(rf|fr)(''')",
127
+ bygroups(String.Affix, String.Single), 'tsqf'),
128
+ ('(?i)(rf|fr)(")',
129
+ bygroups(String.Affix, String.Double), 'dqf'),
130
+ ("(?i)(rf|fr)(')",
131
+ bygroups(String.Affix, String.Single), 'sqf'),
132
+ # non-raw f-strings
133
+ ('([fF])(""")', bygroups(String.Affix, String.Double),
134
+ combined('fstringescape', 'tdqf')),
135
+ ("([fF])(''')", bygroups(String.Affix, String.Single),
136
+ combined('fstringescape', 'tsqf')),
137
+ ('([fF])(")', bygroups(String.Affix, String.Double),
138
+ combined('fstringescape', 'dqf')),
139
+ ("([fF])(')", bygroups(String.Affix, String.Single),
140
+ combined('fstringescape', 'sqf')),
141
+ # raw strings
142
+ ('(?i)(rb|br|r)(""")',
143
+ bygroups(String.Affix, String.Double), 'tdqs'),
144
+ ("(?i)(rb|br|r)(''')",
145
+ bygroups(String.Affix, String.Single), 'tsqs'),
146
+ ('(?i)(rb|br|r)(")',
147
+ bygroups(String.Affix, String.Double), 'dqs'),
148
+ ("(?i)(rb|br|r)(')",
149
+ bygroups(String.Affix, String.Single), 'sqs'),
150
+ # non-raw strings
151
+ ('([uUbB]?)(""")', bygroups(String.Affix, String.Double),
152
+ combined('stringescape', 'tdqs')),
153
+ ("([uUbB]?)(''')", bygroups(String.Affix, String.Single),
154
+ combined('stringescape', 'tsqs')),
155
+ ('([uUbB]?)(")', bygroups(String.Affix, String.Double),
156
+ combined('stringescape', 'dqs')),
157
+ ("([uUbB]?)(')", bygroups(String.Affix, String.Single),
158
+ combined('stringescape', 'sqs')),
159
+ (r'[^\S\n]+', Text),
160
+ (r'!=|==|<<|>>|:=|[-~+/*%=<>&^|.]', Operator),
161
+ (r'[]{}:(),;[]', Punctuation),
162
+ (r'(in|is|and|or|not)\b', Operator.Word),
163
+ include('expr-keywords'),
164
+ include('builtins'),
165
+ include('magicfuncs'),
166
+ include('magicvars'),
167
+ include('name'),
168
+ include('numbers'),
169
+ ],
170
+ 'expr-inside-fstring': [
171
+ (r'[{([]', Punctuation, 'expr-inside-fstring-inner'),
172
+ # without format specifier
173
+ (r'(=\s*)?' # debug (https://bugs.python.org/issue36817)
174
+ r'(\![sraf])?' # conversion
175
+ r'\}', String.Interpol, '#pop'),
176
+ # with format specifier
177
+ # we'll catch the remaining '}' in the outer scope
178
+ (r'(=\s*)?' # debug (https://bugs.python.org/issue36817)
179
+ r'(\![sraf])?' # conversion
180
+ r':', String.Interpol, '#pop'),
181
+ (r'\s+', Text), # allow new lines
182
+ include('expr'),
183
+ ],
184
+ 'expr-inside-fstring-inner': [
185
+ (r'[{([]', Punctuation, 'expr-inside-fstring-inner'),
186
+ (r'[])}]', Punctuation, '#pop'),
187
+ (r'\s+', Text), # allow new lines
188
+ include('expr'),
189
+ ],
190
+ 'expr-keywords': [
191
+ # Based on https://docs.python.org/3/reference/expressions.html
192
+ (words((
193
+ 'async for', 'await', 'else', 'for', 'if', 'lambda',
194
+ 'yield', 'yield from'), suffix=r'\b'),
195
+ Keyword),
196
+ (words(('True', 'False', 'None'), suffix=r'\b'), Keyword.Constant),
197
+ ],
198
+ 'keywords': [
199
+ (words((
200
+ 'assert', 'async', 'await', 'break', 'continue', 'del', 'elif',
201
+ 'else', 'except', 'finally', 'for', 'global', 'if', 'lambda',
202
+ 'pass', 'raise', 'nonlocal', 'return', 'try', 'while', 'yield',
203
+ 'yield from', 'as', 'with'), suffix=r'\b'),
204
+ Keyword),
205
+ (words(('True', 'False', 'None'), suffix=r'\b'), Keyword.Constant),
206
+ ],
207
+ 'builtins': [
208
+ (words((
209
+ '__import__', 'abs', 'all', 'any', 'bin', 'bool', 'bytearray',
210
+ 'bytes', 'chr', 'classmethod', 'compile', 'complex',
211
+ 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'filter',
212
+ 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr',
213
+ 'hash', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass',
214
+ 'iter', 'len', 'list', 'locals', 'map', 'max', 'memoryview',
215
+ 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print',
216
+ 'property', 'range', 'repr', 'reversed', 'round', 'set', 'setattr',
217
+ 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple',
218
+ 'type', 'vars', 'zip'), prefix=r'(?<!\.)', suffix=r'\b'),
219
+ Name.Builtin),
220
+ (r'(?<!\.)(self|Ellipsis|NotImplemented|cls)\b', Name.Builtin.Pseudo),
221
+ (words((
222
+ 'ArithmeticError', 'AssertionError', 'AttributeError',
223
+ 'BaseException', 'BufferError', 'BytesWarning', 'DeprecationWarning',
224
+ 'EOFError', 'EnvironmentError', 'Exception', 'FloatingPointError',
225
+ 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError',
226
+ 'ImportWarning', 'IndentationError', 'IndexError', 'KeyError',
227
+ 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'NameError',
228
+ 'NotImplementedError', 'OSError', 'OverflowError',
229
+ 'PendingDeprecationWarning', 'ReferenceError', 'ResourceWarning',
230
+ 'RuntimeError', 'RuntimeWarning', 'StopIteration',
231
+ 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit',
232
+ 'TabError', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError',
233
+ 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError',
234
+ 'UnicodeWarning', 'UserWarning', 'ValueError', 'VMSError',
235
+ 'Warning', 'WindowsError', 'ZeroDivisionError',
236
+ # new builtin exceptions from PEP 3151
237
+ 'BlockingIOError', 'ChildProcessError', 'ConnectionError',
238
+ 'BrokenPipeError', 'ConnectionAbortedError', 'ConnectionRefusedError',
239
+ 'ConnectionResetError', 'FileExistsError', 'FileNotFoundError',
240
+ 'InterruptedError', 'IsADirectoryError', 'NotADirectoryError',
241
+ 'PermissionError', 'ProcessLookupError', 'TimeoutError',
242
+ # others new in Python 3
243
+ 'StopAsyncIteration', 'ModuleNotFoundError', 'RecursionError'),
244
+ prefix=r'(?<!\.)', suffix=r'\b'),
245
+ Name.Exception),
246
+ ],
247
+ 'magicfuncs': [
248
+ (words((
249
+ '__abs__', '__add__', '__aenter__', '__aexit__', '__aiter__',
250
+ '__and__', '__anext__', '__await__', '__bool__', '__bytes__',
251
+ '__call__', '__complex__', '__contains__', '__del__', '__delattr__',
252
+ '__delete__', '__delitem__', '__dir__', '__divmod__', '__enter__',
253
+ '__eq__', '__exit__', '__float__', '__floordiv__', '__format__',
254
+ '__ge__', '__get__', '__getattr__', '__getattribute__',
255
+ '__getitem__', '__gt__', '__hash__', '__iadd__', '__iand__',
256
+ '__ifloordiv__', '__ilshift__', '__imatmul__', '__imod__',
257
+ '__imul__', '__index__', '__init__', '__instancecheck__',
258
+ '__int__', '__invert__', '__ior__', '__ipow__', '__irshift__',
259
+ '__isub__', '__iter__', '__itruediv__', '__ixor__', '__le__',
260
+ '__len__', '__length_hint__', '__lshift__', '__lt__', '__matmul__',
261
+ '__missing__', '__mod__', '__mul__', '__ne__', '__neg__',
262
+ '__new__', '__next__', '__or__', '__pos__', '__pow__',
263
+ '__prepare__', '__radd__', '__rand__', '__rdivmod__', '__repr__',
264
+ '__reversed__', '__rfloordiv__', '__rlshift__', '__rmatmul__',
265
+ '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__',
266
+ '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__',
267
+ '__rxor__', '__set__', '__setattr__', '__setitem__', '__str__',
268
+ '__sub__', '__subclasscheck__', '__truediv__',
269
+ '__xor__'), suffix=r'\b'),
270
+ Name.Function.Magic),
271
+ ],
272
+ 'magicvars': [
273
+ (words((
274
+ '__annotations__', '__bases__', '__class__', '__closure__',
275
+ '__code__', '__defaults__', '__dict__', '__doc__', '__file__',
276
+ '__func__', '__globals__', '__kwdefaults__', '__module__',
277
+ '__mro__', '__name__', '__objclass__', '__qualname__',
278
+ '__self__', '__slots__', '__weakref__'), suffix=r'\b'),
279
+ Name.Variable.Magic),
280
+ ],
281
+ 'numbers': [
282
+ (r'(\d(?:_?\d)*\.(?:\d(?:_?\d)*)?|(?:\d(?:_?\d)*)?\.\d(?:_?\d)*)'
283
+ r'([eE][+-]?\d(?:_?\d)*)?', Number.Float),
284
+ (r'\d(?:_?\d)*[eE][+-]?\d(?:_?\d)*j?', Number.Float),
285
+ (r'0[oO](?:_?[0-7])+', Number.Oct),
286
+ (r'0[bB](?:_?[01])+', Number.Bin),
287
+ (r'0[xX](?:_?[a-fA-F0-9])+', Number.Hex),
288
+ (r'\d(?:_?\d)*', Number.Integer),
289
+ ],
290
+ 'name': [
291
+ (r'@' + uni_name, Name.Decorator),
292
+ (r'@', Operator), # new matrix multiplication operator
293
+ (uni_name, Name),
294
+ ],
295
+ 'funcname': [
296
+ include('magicfuncs'),
297
+ (uni_name, Name.Function, '#pop'),
298
+ default('#pop'),
299
+ ],
300
+ 'classname': [
301
+ (uni_name, Name.Class, '#pop'),
302
+ ],
303
+ 'import': [
304
+ (r'(\s+)(as)(\s+)', bygroups(Text, Keyword, Text)),
305
+ (r'\.', Name.Namespace),
306
+ (uni_name, Name.Namespace),
307
+ (r'(\s*)(,)(\s*)', bygroups(Text, Operator, Text)),
308
+ default('#pop') # all else: go back
309
+ ],
310
+ 'fromimport': [
311
+ (r'(\s+)(import)\b', bygroups(Text, Keyword.Namespace), '#pop'),
312
+ (r'\.', Name.Namespace),
313
+ # if None occurs here, it's "raise x from None", since None can
314
+ # never be a module name
315
+ (r'None\b', Name.Builtin.Pseudo, '#pop'),
316
+ (uni_name, Name.Namespace),
317
+ default('#pop'),
318
+ ],
319
+ 'fstringescape': [
320
+ (r'\{\{', String.Escape),
321
+ (r'\}\}', String.Escape),
322
+ include('stringescape'),
323
+ ],
324
+ 'stringescape': [
325
+ (r'\\([\\abfnrtv"\']|\n|N\{.*?\}|u[a-fA-F0-9]{4}|'
326
+ r'U[a-fA-F0-9]{8}|x[a-fA-F0-9]{2}|[0-7]{1,3})', String.Escape)
327
+ ],
328
+ 'fstrings-single': fstring_rules(String.Single),
329
+ 'fstrings-double': fstring_rules(String.Double),
330
+ 'strings-single': innerstring_rules(String.Single),
331
+ 'strings-double': innerstring_rules(String.Double),
332
+ 'dqf': [
333
+ (r'"', String.Double, '#pop'),
334
+ (r'\\\\|\\"|\\\n', String.Escape), # included here for raw strings
335
+ include('fstrings-double')
336
+ ],
337
+ 'sqf': [
338
+ (r"'", String.Single, '#pop'),
339
+ (r"\\\\|\\'|\\\n", String.Escape), # included here for raw strings
340
+ include('fstrings-single')
341
+ ],
342
+ 'dqs': [
343
+ (r'"', String.Double, '#pop'),
344
+ (r'\\\\|\\"|\\\n', String.Escape), # included here for raw strings
345
+ include('strings-double')
346
+ ],
347
+ 'sqs': [
348
+ (r"'", String.Single, '#pop'),
349
+ (r"\\\\|\\'|\\\n", String.Escape), # included here for raw strings
350
+ include('strings-single')
351
+ ],
352
+ 'tdqf': [
353
+ (r'"""', String.Double, '#pop'),
354
+ include('fstrings-double'),
355
+ (r'\n', String.Double)
356
+ ],
357
+ 'tsqf': [
358
+ (r"'''", String.Single, '#pop'),
359
+ include('fstrings-single'),
360
+ (r'\n', String.Single)
361
+ ],
362
+ 'tdqs': [
363
+ (r'"""', String.Double, '#pop'),
364
+ include('strings-double'),
365
+ (r'\n', String.Double)
366
+ ],
367
+ 'tsqs': [
368
+ (r"'''", String.Single, '#pop'),
369
+ include('strings-single'),
370
+ (r'\n', String.Single)
371
+ ],
372
+ }
373
+
374
+ def analyse_text(text):
375
+ return shebang_matches(text, r'pythonw?(3(\.\d)?)?')
376
+
377
+
378
+ Python3Lexer = PythonLexer
379
+
380
+
381
+ class Python2Lexer(RegexLexer):
382
+ """
383
+ For `Python 2.x <http://www.python.org>`_ source code.
384
+
385
+ .. versionchanged:: 2.5
386
+ This class has been renamed from ``PythonLexer``. ``PythonLexer`` now
387
+ refers to the Python 3 variant. File name patterns like ``*.py`` have
388
+ been moved to Python 3 as well.
389
+ """
390
+
391
+ name = 'Python 2.x'
392
+ aliases = ['python2', 'py2']
393
+ filenames = [] # now taken over by PythonLexer (3.x)
394
+ mimetypes = ['text/x-python2', 'application/x-python2']
37
395
 
38
396
  def innerstring_rules(ttype):
39
397
  return [
@@ -124,15 +482,15 @@ class PythonLexer(RegexLexer):
124
482
  'Exception', 'FloatingPointError', 'FutureWarning', 'GeneratorExit',
125
483
  'IOError', 'ImportError', 'ImportWarning', 'IndentationError',
126
484
  'IndexError', 'KeyError', 'KeyboardInterrupt', 'LookupError',
127
- 'MemoryError', 'NameError', 'NotImplemented', 'NotImplementedError',
128
- 'OSError', 'OverflowError', 'OverflowWarning', 'PendingDeprecationWarning',
129
- 'ReferenceError', 'RuntimeError', 'RuntimeWarning', 'StandardError',
130
- 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError',
131
- 'SystemExit', 'TabError', 'TypeError', 'UnboundLocalError',
132
- 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError',
133
- 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning',
134
- 'ValueError', 'VMSError', 'Warning', 'WindowsError',
135
- 'ZeroDivisionError'), prefix=r'(?<!\.)', suffix=r'\b'),
485
+ 'MemoryError', 'NameError',
486
+ 'NotImplementedError', 'OSError', 'OverflowError', 'OverflowWarning',
487
+ 'PendingDeprecationWarning', 'ReferenceError',
488
+ 'RuntimeError', 'RuntimeWarning', 'StandardError', 'StopIteration',
489
+ 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit',
490
+ 'TabError', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError',
491
+ 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError',
492
+ 'UnicodeWarning', 'UserWarning', 'ValueError', 'VMSError', 'Warning',
493
+ 'WindowsError', 'ZeroDivisionError'), prefix=r'(?<!\.)', suffix=r'\b'),
136
494
  Name.Exception),
137
495
  ],
138
496
  'magicfuncs': [
@@ -180,15 +538,15 @@ class PythonLexer(RegexLexer):
180
538
  ],
181
539
  'name': [
182
540
  (r'@[\w.]+', Name.Decorator),
183
- ('[a-zA-Z_]\w*', Name),
541
+ (r'[a-zA-Z_]\w*', Name),
184
542
  ],
185
543
  'funcname': [
186
544
  include('magicfuncs'),
187
- ('[a-zA-Z_]\w*', Name.Function, '#pop'),
545
+ (r'[a-zA-Z_]\w*', Name.Function, '#pop'),
188
546
  default('#pop'),
189
547
  ],
190
548
  'classname': [
191
- ('[a-zA-Z_]\w*', Name.Class, '#pop')
549
+ (r'[a-zA-Z_]\w*', Name.Class, '#pop')
192
550
  ],
193
551
  'import': [
194
552
  (r'(?:[ \t]|\\\n)+', Text),
@@ -238,167 +596,10 @@ class PythonLexer(RegexLexer):
238
596
  }
239
597
 
240
598
  def analyse_text(text):
241
- return shebang_matches(text, r'pythonw?(2(\.\d)?)?') or \
599
+ return shebang_matches(text, r'pythonw?2(\.\d)?') or \
242
600
  'import ' in text[:1000]
243
601
 
244
602
 
245
- class Python3Lexer(RegexLexer):
246
- """
247
- For `Python <http://www.python.org>`_ source code (version 3.0).
248
-
249
- .. versionadded:: 0.10
250
- """
251
-
252
- name = 'Python 3'
253
- aliases = ['python3', 'py3']
254
- filenames = [] # Nothing until Python 3 gets widespread
255
- mimetypes = ['text/x-python3', 'application/x-python3']
256
-
257
- flags = re.MULTILINE | re.UNICODE
258
-
259
- uni_name = "[%s][%s]*" % (uni.xid_start, uni.xid_continue)
260
-
261
- def innerstring_rules(ttype):
262
- return [
263
- # the old style '%s' % (...) string formatting (still valid in Py3)
264
- (r'%(\(\w+\))?[-#0 +]*([0-9]+|[*])?(\.([0-9]+|[*]))?'
265
- '[hlL]?[E-GXc-giorsux%]', String.Interpol),
266
- # the new style '{}'.format(...) string formatting
267
- (r'\{'
268
- '((\w+)((\.\w+)|(\[[^\]]+\]))*)?' # field name
269
- '(\![sra])?' # conversion
270
- '(\:(.?[<>=\^])?[-+ ]?#?0?(\d+)?,?(\.\d+)?[E-GXb-gnosx%]?)?'
271
- '\}', String.Interpol),
272
-
273
- # backslashes, quotes and formatting signs must be parsed one at a time
274
- (r'[^\\\'"%{\n]+', ttype),
275
- (r'[\'"\\]', ttype),
276
- # unhandled string formatting sign
277
- (r'%|(\{{1,2})', ttype)
278
- # newlines are an error (use "nl" state)
279
- ]
280
-
281
- tokens = PythonLexer.tokens.copy()
282
- tokens['keywords'] = [
283
- (words((
284
- 'assert', 'async', 'await', 'break', 'continue', 'del', 'elif',
285
- 'else', 'except', 'finally', 'for', 'global', 'if', 'lambda', 'pass',
286
- 'raise', 'nonlocal', 'return', 'try', 'while', 'yield', 'yield from',
287
- 'as', 'with'), suffix=r'\b'),
288
- Keyword),
289
- (words((
290
- 'True', 'False', 'None'), suffix=r'\b'),
291
- Keyword.Constant),
292
- ]
293
- tokens['builtins'] = [
294
- (words((
295
- '__import__', 'abs', 'all', 'any', 'bin', 'bool', 'bytearray', 'bytes',
296
- 'chr', 'classmethod', 'cmp', 'compile', 'complex', 'delattr', 'dict',
297
- 'dir', 'divmod', 'enumerate', 'eval', 'filter', 'float', 'format',
298
- 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'hex', 'id',
299
- 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'list',
300
- 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct',
301
- 'open', 'ord', 'pow', 'print', 'property', 'range', 'repr', 'reversed',
302
- 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str',
303
- 'sum', 'super', 'tuple', 'type', 'vars', 'zip'), prefix=r'(?<!\.)',
304
- suffix=r'\b'),
305
- Name.Builtin),
306
- (r'(?<!\.)(self|Ellipsis|NotImplemented|cls)\b', Name.Builtin.Pseudo),
307
- (words((
308
- 'ArithmeticError', 'AssertionError', 'AttributeError',
309
- 'BaseException', 'BufferError', 'BytesWarning', 'DeprecationWarning',
310
- 'EOFError', 'EnvironmentError', 'Exception', 'FloatingPointError',
311
- 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError',
312
- 'ImportWarning', 'IndentationError', 'IndexError', 'KeyError',
313
- 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'NameError',
314
- 'NotImplementedError', 'OSError', 'OverflowError',
315
- 'PendingDeprecationWarning', 'ReferenceError', 'ResourceWarning',
316
- 'RuntimeError', 'RuntimeWarning', 'StopIteration',
317
- 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError',
318
- 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError',
319
- 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError',
320
- 'UnicodeWarning', 'UserWarning', 'ValueError', 'VMSError', 'Warning',
321
- 'WindowsError', 'ZeroDivisionError',
322
- # new builtin exceptions from PEP 3151
323
- 'BlockingIOError', 'ChildProcessError', 'ConnectionError',
324
- 'BrokenPipeError', 'ConnectionAbortedError', 'ConnectionRefusedError',
325
- 'ConnectionResetError', 'FileExistsError', 'FileNotFoundError',
326
- 'InterruptedError', 'IsADirectoryError', 'NotADirectoryError',
327
- 'PermissionError', 'ProcessLookupError', 'TimeoutError'),
328
- prefix=r'(?<!\.)', suffix=r'\b'),
329
- Name.Exception),
330
- ]
331
- tokens['magicfuncs'] = [
332
- (words((
333
- '__abs__', '__add__', '__aenter__', '__aexit__', '__aiter__', '__and__',
334
- '__anext__', '__await__', '__bool__', '__bytes__', '__call__',
335
- '__complex__', '__contains__', '__del__', '__delattr__', '__delete__',
336
- '__delitem__', '__dir__', '__divmod__', '__enter__', '__eq__', '__exit__',
337
- '__float__', '__floordiv__', '__format__', '__ge__', '__get__',
338
- '__getattr__', '__getattribute__', '__getitem__', '__gt__', '__hash__',
339
- '__iadd__', '__iand__', '__ifloordiv__', '__ilshift__', '__imatmul__',
340
- '__imod__', '__import__', '__imul__', '__index__', '__init__',
341
- '__instancecheck__', '__int__', '__invert__', '__ior__', '__ipow__',
342
- '__irshift__', '__isub__', '__iter__', '__itruediv__', '__ixor__',
343
- '__le__', '__len__', '__length_hint__', '__lshift__', '__lt__',
344
- '__matmul__', '__missing__', '__mod__', '__mul__', '__ne__', '__neg__',
345
- '__new__', '__next__', '__or__', '__pos__', '__pow__', '__prepare__',
346
- '__radd__', '__rand__', '__rdivmod__', '__repr__', '__reversed__',
347
- '__rfloordiv__', '__rlshift__', '__rmatmul__', '__rmod__', '__rmul__',
348
- '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__',
349
- '__rsub__', '__rtruediv__', '__rxor__', '__set__', '__setattr__',
350
- '__setitem__', '__str__', '__sub__', '__subclasscheck__', '__truediv__',
351
- '__xor__'), suffix=r'\b'),
352
- Name.Function.Magic),
353
- ]
354
- tokens['magicvars'] = [
355
- (words((
356
- '__annotations__', '__bases__', '__class__', '__closure__', '__code__',
357
- '__defaults__', '__dict__', '__doc__', '__file__', '__func__',
358
- '__globals__', '__kwdefaults__', '__module__', '__mro__', '__name__',
359
- '__objclass__', '__qualname__', '__self__', '__slots__', '__weakref__'),
360
- suffix=r'\b'),
361
- Name.Variable.Magic),
362
- ]
363
- tokens['numbers'] = [
364
- (r'(\d+\.\d*|\d*\.\d+)([eE][+-]?[0-9]+)?', Number.Float),
365
- (r'0[oO][0-7]+', Number.Oct),
366
- (r'0[bB][01]+', Number.Bin),
367
- (r'0[xX][a-fA-F0-9]+', Number.Hex),
368
- (r'\d+', Number.Integer)
369
- ]
370
- tokens['backtick'] = []
371
- tokens['name'] = [
372
- (r'@\w+', Name.Decorator),
373
- (r'@', Operator), # new matrix multiplication operator
374
- (uni_name, Name),
375
- ]
376
- tokens['funcname'] = [
377
- (uni_name, Name.Function, '#pop')
378
- ]
379
- tokens['classname'] = [
380
- (uni_name, Name.Class, '#pop')
381
- ]
382
- tokens['import'] = [
383
- (r'(\s+)(as)(\s+)', bygroups(Text, Keyword, Text)),
384
- (r'\.', Name.Namespace),
385
- (uni_name, Name.Namespace),
386
- (r'(\s*)(,)(\s*)', bygroups(Text, Operator, Text)),
387
- default('#pop') # all else: go back
388
- ]
389
- tokens['fromimport'] = [
390
- (r'(\s+)(import)\b', bygroups(Text, Keyword), '#pop'),
391
- (r'\.', Name.Namespace),
392
- (uni_name, Name.Namespace),
393
- default('#pop'),
394
- ]
395
- tokens['strings-single'] = innerstring_rules(String.Single)
396
- tokens['strings-double'] = innerstring_rules(String.Double)
397
-
398
- def analyse_text(text):
399
- return shebang_matches(text, r'pythonw?3(\.\d)?')
400
-
401
-
402
603
  class PythonConsoleLexer(Lexer):
403
604
  """
404
605
  For Python console output or doctests, such as:
@@ -416,25 +617,27 @@ class PythonConsoleLexer(Lexer):
416
617
  Additional options:
417
618
 
418
619
  `python3`
419
- Use Python 3 lexer for code. Default is ``False``.
620
+ Use Python 3 lexer for code. Default is ``True``.
420
621
 
421
622
  .. versionadded:: 1.0
623
+ .. versionchanged:: 2.5
624
+ Now defaults to ``True``.
422
625
  """
423
626
  name = 'Python console session'
424
627
  aliases = ['pycon']
425
628
  mimetypes = ['text/x-python-doctest']
426
629
 
427
630
  def __init__(self, **options):
428
- self.python3 = get_bool_opt(options, 'python3', False)
631
+ self.python3 = get_bool_opt(options, 'python3', True)
429
632
  Lexer.__init__(self, **options)
430
633
 
431
634
  def get_tokens_unprocessed(self, text):
432
635
  if self.python3:
433
- pylexer = Python3Lexer(**self.options)
434
- tblexer = Python3TracebackLexer(**self.options)
435
- else:
436
636
  pylexer = PythonLexer(**self.options)
437
637
  tblexer = PythonTracebackLexer(**self.options)
638
+ else:
639
+ pylexer = Python2Lexer(**self.options)
640
+ tblexer = Python2TracebackLexer(**self.options)
438
641
 
439
642
  curcode = ''
440
643
  insertions = []
@@ -443,27 +646,26 @@ class PythonConsoleLexer(Lexer):
443
646
  tb = 0
444
647
  for match in line_re.finditer(text):
445
648
  line = match.group()
446
- if line.startswith(u'>>> ') or line.startswith(u'... '):
649
+ if line.startswith('>>> ') or line.startswith('... '):
447
650
  tb = 0
448
651
  insertions.append((len(curcode),
449
652
  [(0, Generic.Prompt, line[:4])]))
450
653
  curcode += line[4:]
451
- elif line.rstrip() == u'...' and not tb:
654
+ elif line.rstrip() == '...' and not tb:
452
655
  # only a new >>> prompt can end an exception block
453
656
  # otherwise an ellipsis in place of the traceback frames
454
657
  # will be mishandled
455
658
  insertions.append((len(curcode),
456
- [(0, Generic.Prompt, u'...')]))
659
+ [(0, Generic.Prompt, '...')]))
457
660
  curcode += line[3:]
458
661
  else:
459
662
  if curcode:
460
- for item in do_insertions(
461
- insertions, pylexer.get_tokens_unprocessed(curcode)):
462
- yield item
663
+ yield from do_insertions(
664
+ insertions, pylexer.get_tokens_unprocessed(curcode))
463
665
  curcode = ''
464
666
  insertions = []
465
- if (line.startswith(u'Traceback (most recent call last):') or
466
- re.match(u' File "[^"]+", line \\d+\\n$', line)):
667
+ if (line.startswith('Traceback (most recent call last):') or
668
+ re.match(' File "[^"]+", line \\d+\\n$', line)):
467
669
  tb = 1
468
670
  curtb = line
469
671
  tbindex = match.start()
@@ -471,7 +673,7 @@ class PythonConsoleLexer(Lexer):
471
673
  yield match.start(), Name.Class, line
472
674
  elif tb:
473
675
  curtb += line
474
- if not (line.startswith(' ') or line.strip() == u'...'):
676
+ if not (line.startswith(' ') or line.strip() == '...'):
475
677
  tb = 0
476
678
  for i, t, v in tblexer.get_tokens_unprocessed(curtb):
477
679
  yield tbindex+i, t, v
@@ -479,9 +681,8 @@ class PythonConsoleLexer(Lexer):
479
681
  else:
480
682
  yield match.start(), Generic.Output, line
481
683
  if curcode:
482
- for item in do_insertions(insertions,
483
- pylexer.get_tokens_unprocessed(curcode)):
484
- yield item
684
+ yield from do_insertions(insertions,
685
+ pylexer.get_tokens_unprocessed(curcode))
485
686
  if curtb:
486
687
  for i, t, v in tblexer.get_tokens_unprocessed(curtb):
487
688
  yield tbindex+i, t, v
@@ -489,23 +690,28 @@ class PythonConsoleLexer(Lexer):
489
690
 
490
691
  class PythonTracebackLexer(RegexLexer):
491
692
  """
492
- For Python tracebacks.
693
+ For Python 3.x tracebacks, with support for chained exceptions.
493
694
 
494
- .. versionadded:: 0.7
695
+ .. versionadded:: 1.0
696
+
697
+ .. versionchanged:: 2.5
698
+ This is now the default ``PythonTracebackLexer``. It is still available
699
+ as the alias ``Python3TracebackLexer``.
495
700
  """
496
701
 
497
702
  name = 'Python Traceback'
498
- aliases = ['pytb']
499
- filenames = ['*.pytb']
500
- mimetypes = ['text/x-python-traceback']
703
+ aliases = ['pytb', 'py3tb']
704
+ filenames = ['*.pytb', '*.py3tb']
705
+ mimetypes = ['text/x-python-traceback', 'text/x-python3-traceback']
501
706
 
502
707
  tokens = {
503
708
  'root': [
504
- # Cover both (most recent call last) and (innermost last)
505
- # The optional ^C allows us to catch keyboard interrupt signals.
506
- (r'^(\^C)?(Traceback.*\n)',
507
- bygroups(Text, Generic.Traceback), 'intb'),
508
- # SyntaxError starts with this.
709
+ (r'\n', Text),
710
+ (r'^Traceback \(most recent call last\):\n', Generic.Traceback, 'intb'),
711
+ (r'^During handling of the above exception, another '
712
+ r'exception occurred:\n\n', Generic.Traceback),
713
+ (r'^The above exception was the direct cause of the '
714
+ r'following exception:\n\n', Generic.Traceback),
509
715
  (r'^(?= File "[^"]+", line \d+)', Generic.Traceback, 'intb'),
510
716
  (r'^.*\n', Other),
511
717
  ],
@@ -520,33 +726,40 @@ class PythonTracebackLexer(RegexLexer):
520
726
  bygroups(Text, Comment, Text)), # for doctests...
521
727
  (r'^([^:]+)(: )(.+)(\n)',
522
728
  bygroups(Generic.Error, Text, Name, Text), '#pop'),
523
- (r'^([a-zA-Z_]\w*)(:?\n)',
729
+ (r'^([a-zA-Z_][\w.]*)(:?\n)',
524
730
  bygroups(Generic.Error, Text), '#pop')
525
731
  ],
526
732
  }
527
733
 
528
734
 
529
- class Python3TracebackLexer(RegexLexer):
735
+ Python3TracebackLexer = PythonTracebackLexer
736
+
737
+
738
+ class Python2TracebackLexer(RegexLexer):
530
739
  """
531
- For Python 3.0 tracebacks, with support for chained exceptions.
740
+ For Python tracebacks.
532
741
 
533
- .. versionadded:: 1.0
742
+ .. versionadded:: 0.7
743
+
744
+ .. versionchanged:: 2.5
745
+ This class has been renamed from ``PythonTracebackLexer``.
746
+ ``PythonTracebackLexer`` now refers to the Python 3 variant.
534
747
  """
535
748
 
536
- name = 'Python 3.0 Traceback'
537
- aliases = ['py3tb']
538
- filenames = ['*.py3tb']
539
- mimetypes = ['text/x-python3-traceback']
749
+ name = 'Python 2.x Traceback'
750
+ aliases = ['py2tb']
751
+ filenames = ['*.py2tb']
752
+ mimetypes = ['text/x-python2-traceback']
540
753
 
541
754
  tokens = {
542
755
  'root': [
543
- (r'\n', Text),
544
- (r'^Traceback \(most recent call last\):\n', Generic.Traceback, 'intb'),
545
- (r'^During handling of the above exception, another '
546
- r'exception occurred:\n\n', Generic.Traceback),
547
- (r'^The above exception was the direct cause of the '
548
- r'following exception:\n\n', Generic.Traceback),
756
+ # Cover both (most recent call last) and (innermost last)
757
+ # The optional ^C allows us to catch keyboard interrupt signals.
758
+ (r'^(\^C)?(Traceback.*\n)',
759
+ bygroups(Text, Generic.Traceback), 'intb'),
760
+ # SyntaxError starts with this.
549
761
  (r'^(?= File "[^"]+", line \d+)', Generic.Traceback, 'intb'),
762
+ (r'^.*\n', Other),
550
763
  ],
551
764
  'intb': [
552
765
  (r'^( File )("[^"]+")(, line )(\d+)(, in )(.+)(\n)',
@@ -554,7 +767,7 @@ class Python3TracebackLexer(RegexLexer):
554
767
  (r'^( File )("[^"]+")(, line )(\d+)(\n)',
555
768
  bygroups(Text, Name.Builtin, Text, Number, Text)),
556
769
  (r'^( )(.+)(\n)',
557
- bygroups(Text, using(Python3Lexer), Text)),
770
+ bygroups(Text, using(Python2Lexer), Text)),
558
771
  (r'^([ \t]*)(\.\.\.)(\n)',
559
772
  bygroups(Text, Comment, Text)), # for doctests...
560
773
  (r'^([^:]+)(: )(.+)(\n)',
@@ -617,7 +830,7 @@ class CythonLexer(RegexLexer):
617
830
  ],
618
831
  'keywords': [
619
832
  (words((
620
- 'assert', 'break', 'by', 'continue', 'ctypedef', 'del', 'elif',
833
+ 'assert', 'async', 'await', 'break', 'by', 'continue', 'ctypedef', 'del', 'elif',
621
834
  'else', 'except', 'except?', 'exec', 'finally', 'for', 'fused', 'gil',
622
835
  'global', 'if', 'include', 'lambda', 'nogil', 'pass', 'print',
623
836
  'raise', 'return', 'try', 'while', 'yield', 'as', 'with'), suffix=r'\b'),
@@ -670,10 +883,10 @@ class CythonLexer(RegexLexer):
670
883
  ],
671
884
  'name': [
672
885
  (r'@\w+', Name.Decorator),
673
- ('[a-zA-Z_]\w*', Name),
886
+ (r'[a-zA-Z_]\w*', Name),
674
887
  ],
675
888
  'funcname': [
676
- ('[a-zA-Z_]\w*', Name.Function, '#pop')
889
+ (r'[a-zA-Z_]\w*', Name.Function, '#pop')
677
890
  ],
678
891
  'cdef': [
679
892
  (r'(public|readonly|extern|api|inline)\b', Keyword.Reserved),
@@ -690,7 +903,7 @@ class CythonLexer(RegexLexer):
690
903
  (r'.', Text),
691
904
  ],
692
905
  'classname': [
693
- ('[a-zA-Z_]\w*', Name.Class, '#pop')
906
+ (r'[a-zA-Z_]\w*', Name.Class, '#pop')
694
907
  ],
695
908
  'import': [
696
909
  (r'(\s+)(as)(\s+)', bygroups(Text, Keyword, Text)),
@@ -857,7 +1070,7 @@ class NumPyLexer(PythonLexer):
857
1070
  mimetypes = []
858
1071
  filenames = []
859
1072
 
860
- EXTRA_KEYWORDS = set((
1073
+ EXTRA_KEYWORDS = {
861
1074
  'abs', 'absolute', 'accumulate', 'add', 'alen', 'all', 'allclose',
862
1075
  'alltrue', 'alterdot', 'amax', 'amin', 'angle', 'any', 'append',
863
1076
  'apply_along_axis', 'apply_over_axes', 'arange', 'arccos', 'arccosh',
@@ -922,7 +1135,7 @@ class NumPyLexer(PythonLexer):
922
1135
  'typename', 'uniform', 'union1d', 'unique', 'unique1d', 'unravel_index',
923
1136
  'unwrap', 'vander', 'var', 'vdot', 'vectorize', 'view', 'vonmises',
924
1137
  'vsplit', 'vstack', 'weibull', 'where', 'who', 'zeros', 'zeros_like'
925
- ))
1138
+ }
926
1139
 
927
1140
  def get_tokens_unprocessed(self, text):
928
1141
  for index, token, value in \
@@ -933,6 +1146,6 @@ class NumPyLexer(PythonLexer):
933
1146
  yield index, token, value
934
1147
 
935
1148
  def analyse_text(text):
936
- return (shebang_matches(text, r'pythonw?(2(\.\d)?)?') or
1149
+ return (shebang_matches(text, r'pythonw?(3(\.\d)?)?') or
937
1150
  'import ' in text[:1000]) \
938
1151
  and ('import numpy' in text or 'from numpy import' in text)