llms-py 3.0.0__py3-none-any.whl → 3.0.0b1__py3-none-any.whl

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 (206) hide show
  1. llms/index.html +77 -35
  2. llms/llms.json +23 -72
  3. llms/main.py +732 -1786
  4. llms/providers.json +1 -1
  5. llms/{extensions/analytics/ui/index.mjs → ui/Analytics.mjs} +238 -154
  6. llms/ui/App.mjs +60 -151
  7. llms/ui/Avatar.mjs +85 -0
  8. llms/ui/Brand.mjs +52 -0
  9. llms/ui/ChatPrompt.mjs +606 -0
  10. llms/ui/Main.mjs +873 -0
  11. llms/ui/ModelSelector.mjs +693 -0
  12. llms/ui/OAuthSignIn.mjs +92 -0
  13. llms/ui/ProviderIcon.mjs +36 -0
  14. llms/ui/ProviderStatus.mjs +105 -0
  15. llms/{extensions/app/ui → ui}/Recents.mjs +65 -91
  16. llms/ui/{modules/chat/SettingsDialog.mjs → SettingsDialog.mjs} +9 -9
  17. llms/{extensions/app/ui/index.mjs → ui/Sidebar.mjs} +58 -124
  18. llms/ui/SignIn.mjs +64 -0
  19. llms/ui/SystemPromptEditor.mjs +31 -0
  20. llms/ui/SystemPromptSelector.mjs +56 -0
  21. llms/ui/Welcome.mjs +8 -0
  22. llms/ui/ai.mjs +53 -125
  23. llms/ui/app.css +111 -1837
  24. llms/ui/lib/charts.mjs +13 -9
  25. llms/ui/lib/servicestack-vue.mjs +3 -3
  26. llms/ui/lib/vue.min.mjs +9 -10
  27. llms/ui/lib/vue.mjs +1602 -1763
  28. llms/ui/markdown.mjs +2 -10
  29. llms/ui/tailwind.input.css +80 -496
  30. llms/ui/threadStore.mjs +572 -0
  31. llms/ui/utils.mjs +117 -113
  32. llms/ui.json +1069 -0
  33. {llms_py-3.0.0.dist-info → llms_py-3.0.0b1.dist-info}/METADATA +1 -1
  34. llms_py-3.0.0b1.dist-info/RECORD +49 -0
  35. llms/__pycache__/__init__.cpython-312.pyc +0 -0
  36. llms/__pycache__/__init__.cpython-313.pyc +0 -0
  37. llms/__pycache__/__init__.cpython-314.pyc +0 -0
  38. llms/__pycache__/__main__.cpython-312.pyc +0 -0
  39. llms/__pycache__/__main__.cpython-314.pyc +0 -0
  40. llms/__pycache__/llms.cpython-312.pyc +0 -0
  41. llms/__pycache__/main.cpython-312.pyc +0 -0
  42. llms/__pycache__/main.cpython-313.pyc +0 -0
  43. llms/__pycache__/main.cpython-314.pyc +0 -0
  44. llms/__pycache__/plugins.cpython-314.pyc +0 -0
  45. llms/extensions/app/README.md +0 -20
  46. llms/extensions/app/__init__.py +0 -530
  47. llms/extensions/app/__pycache__/__init__.cpython-314.pyc +0 -0
  48. llms/extensions/app/__pycache__/db.cpython-314.pyc +0 -0
  49. llms/extensions/app/__pycache__/db_manager.cpython-314.pyc +0 -0
  50. llms/extensions/app/db.py +0 -644
  51. llms/extensions/app/db_manager.py +0 -195
  52. llms/extensions/app/requests.json +0 -9073
  53. llms/extensions/app/threads.json +0 -15290
  54. llms/extensions/app/ui/threadStore.mjs +0 -411
  55. llms/extensions/core_tools/CALCULATOR.md +0 -32
  56. llms/extensions/core_tools/__init__.py +0 -598
  57. llms/extensions/core_tools/__pycache__/__init__.cpython-314.pyc +0 -0
  58. llms/extensions/core_tools/ui/codemirror/addon/edit/closebrackets.js +0 -201
  59. llms/extensions/core_tools/ui/codemirror/addon/edit/closetag.js +0 -185
  60. llms/extensions/core_tools/ui/codemirror/addon/edit/continuelist.js +0 -101
  61. llms/extensions/core_tools/ui/codemirror/addon/edit/matchbrackets.js +0 -160
  62. llms/extensions/core_tools/ui/codemirror/addon/edit/matchtags.js +0 -66
  63. llms/extensions/core_tools/ui/codemirror/addon/edit/trailingspace.js +0 -27
  64. llms/extensions/core_tools/ui/codemirror/addon/selection/active-line.js +0 -72
  65. llms/extensions/core_tools/ui/codemirror/addon/selection/mark-selection.js +0 -119
  66. llms/extensions/core_tools/ui/codemirror/addon/selection/selection-pointer.js +0 -98
  67. llms/extensions/core_tools/ui/codemirror/doc/docs.css +0 -225
  68. llms/extensions/core_tools/ui/codemirror/doc/source_sans.woff +0 -0
  69. llms/extensions/core_tools/ui/codemirror/lib/codemirror.css +0 -344
  70. llms/extensions/core_tools/ui/codemirror/lib/codemirror.js +0 -9884
  71. llms/extensions/core_tools/ui/codemirror/mode/clike/clike.js +0 -942
  72. llms/extensions/core_tools/ui/codemirror/mode/javascript/index.html +0 -118
  73. llms/extensions/core_tools/ui/codemirror/mode/javascript/javascript.js +0 -962
  74. llms/extensions/core_tools/ui/codemirror/mode/javascript/typescript.html +0 -62
  75. llms/extensions/core_tools/ui/codemirror/mode/python/python.js +0 -402
  76. llms/extensions/core_tools/ui/codemirror/theme/dracula.css +0 -40
  77. llms/extensions/core_tools/ui/codemirror/theme/mocha.css +0 -135
  78. llms/extensions/core_tools/ui/index.mjs +0 -650
  79. llms/extensions/gallery/README.md +0 -61
  80. llms/extensions/gallery/__init__.py +0 -61
  81. llms/extensions/gallery/__pycache__/__init__.cpython-314.pyc +0 -0
  82. llms/extensions/gallery/__pycache__/db.cpython-314.pyc +0 -0
  83. llms/extensions/gallery/db.py +0 -298
  84. llms/extensions/gallery/ui/index.mjs +0 -482
  85. llms/extensions/katex/README.md +0 -39
  86. llms/extensions/katex/__init__.py +0 -6
  87. llms/extensions/katex/__pycache__/__init__.cpython-314.pyc +0 -0
  88. llms/extensions/katex/ui/README.md +0 -125
  89. llms/extensions/katex/ui/contrib/auto-render.js +0 -338
  90. llms/extensions/katex/ui/contrib/auto-render.min.js +0 -1
  91. llms/extensions/katex/ui/contrib/auto-render.mjs +0 -244
  92. llms/extensions/katex/ui/contrib/copy-tex.js +0 -127
  93. llms/extensions/katex/ui/contrib/copy-tex.min.js +0 -1
  94. llms/extensions/katex/ui/contrib/copy-tex.mjs +0 -105
  95. llms/extensions/katex/ui/contrib/mathtex-script-type.js +0 -109
  96. llms/extensions/katex/ui/contrib/mathtex-script-type.min.js +0 -1
  97. llms/extensions/katex/ui/contrib/mathtex-script-type.mjs +0 -24
  98. llms/extensions/katex/ui/contrib/mhchem.js +0 -3213
  99. llms/extensions/katex/ui/contrib/mhchem.min.js +0 -1
  100. llms/extensions/katex/ui/contrib/mhchem.mjs +0 -3109
  101. llms/extensions/katex/ui/contrib/render-a11y-string.js +0 -887
  102. llms/extensions/katex/ui/contrib/render-a11y-string.min.js +0 -1
  103. llms/extensions/katex/ui/contrib/render-a11y-string.mjs +0 -800
  104. llms/extensions/katex/ui/fonts/KaTeX_AMS-Regular.ttf +0 -0
  105. llms/extensions/katex/ui/fonts/KaTeX_AMS-Regular.woff +0 -0
  106. llms/extensions/katex/ui/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  107. llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  108. llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  109. llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  110. llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  111. llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  112. llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  113. llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  114. llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  115. llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  116. llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  117. llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  118. llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  119. llms/extensions/katex/ui/fonts/KaTeX_Main-Bold.ttf +0 -0
  120. llms/extensions/katex/ui/fonts/KaTeX_Main-Bold.woff +0 -0
  121. llms/extensions/katex/ui/fonts/KaTeX_Main-Bold.woff2 +0 -0
  122. llms/extensions/katex/ui/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  123. llms/extensions/katex/ui/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  124. llms/extensions/katex/ui/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  125. llms/extensions/katex/ui/fonts/KaTeX_Main-Italic.ttf +0 -0
  126. llms/extensions/katex/ui/fonts/KaTeX_Main-Italic.woff +0 -0
  127. llms/extensions/katex/ui/fonts/KaTeX_Main-Italic.woff2 +0 -0
  128. llms/extensions/katex/ui/fonts/KaTeX_Main-Regular.ttf +0 -0
  129. llms/extensions/katex/ui/fonts/KaTeX_Main-Regular.woff +0 -0
  130. llms/extensions/katex/ui/fonts/KaTeX_Main-Regular.woff2 +0 -0
  131. llms/extensions/katex/ui/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  132. llms/extensions/katex/ui/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  133. llms/extensions/katex/ui/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  134. llms/extensions/katex/ui/fonts/KaTeX_Math-Italic.ttf +0 -0
  135. llms/extensions/katex/ui/fonts/KaTeX_Math-Italic.woff +0 -0
  136. llms/extensions/katex/ui/fonts/KaTeX_Math-Italic.woff2 +0 -0
  137. llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  138. llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  139. llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  140. llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  141. llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  142. llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  143. llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  144. llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  145. llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  146. llms/extensions/katex/ui/fonts/KaTeX_Script-Regular.ttf +0 -0
  147. llms/extensions/katex/ui/fonts/KaTeX_Script-Regular.woff +0 -0
  148. llms/extensions/katex/ui/fonts/KaTeX_Script-Regular.woff2 +0 -0
  149. llms/extensions/katex/ui/fonts/KaTeX_Size1-Regular.ttf +0 -0
  150. llms/extensions/katex/ui/fonts/KaTeX_Size1-Regular.woff +0 -0
  151. llms/extensions/katex/ui/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  152. llms/extensions/katex/ui/fonts/KaTeX_Size2-Regular.ttf +0 -0
  153. llms/extensions/katex/ui/fonts/KaTeX_Size2-Regular.woff +0 -0
  154. llms/extensions/katex/ui/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  155. llms/extensions/katex/ui/fonts/KaTeX_Size3-Regular.ttf +0 -0
  156. llms/extensions/katex/ui/fonts/KaTeX_Size3-Regular.woff +0 -0
  157. llms/extensions/katex/ui/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  158. llms/extensions/katex/ui/fonts/KaTeX_Size4-Regular.ttf +0 -0
  159. llms/extensions/katex/ui/fonts/KaTeX_Size4-Regular.woff +0 -0
  160. llms/extensions/katex/ui/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  161. llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  162. llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  163. llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  164. llms/extensions/katex/ui/index.mjs +0 -92
  165. llms/extensions/katex/ui/katex-swap.css +0 -1230
  166. llms/extensions/katex/ui/katex-swap.min.css +0 -1
  167. llms/extensions/katex/ui/katex.css +0 -1230
  168. llms/extensions/katex/ui/katex.js +0 -19080
  169. llms/extensions/katex/ui/katex.min.css +0 -1
  170. llms/extensions/katex/ui/katex.min.js +0 -1
  171. llms/extensions/katex/ui/katex.min.mjs +0 -1
  172. llms/extensions/katex/ui/katex.mjs +0 -18547
  173. llms/extensions/providers/__init__.py +0 -18
  174. llms/extensions/providers/__pycache__/__init__.cpython-314.pyc +0 -0
  175. llms/extensions/providers/__pycache__/anthropic.cpython-314.pyc +0 -0
  176. llms/extensions/providers/__pycache__/chutes.cpython-314.pyc +0 -0
  177. llms/extensions/providers/__pycache__/google.cpython-314.pyc +0 -0
  178. llms/extensions/providers/__pycache__/nvidia.cpython-314.pyc +0 -0
  179. llms/extensions/providers/__pycache__/openai.cpython-314.pyc +0 -0
  180. llms/extensions/providers/__pycache__/openrouter.cpython-314.pyc +0 -0
  181. llms/extensions/providers/anthropic.py +0 -229
  182. llms/extensions/providers/chutes.py +0 -155
  183. llms/extensions/providers/google.py +0 -378
  184. llms/extensions/providers/nvidia.py +0 -105
  185. llms/extensions/providers/openai.py +0 -156
  186. llms/extensions/providers/openrouter.py +0 -72
  187. llms/extensions/system_prompts/README.md +0 -22
  188. llms/extensions/system_prompts/__init__.py +0 -45
  189. llms/extensions/system_prompts/__pycache__/__init__.cpython-314.pyc +0 -0
  190. llms/extensions/system_prompts/ui/index.mjs +0 -280
  191. llms/extensions/system_prompts/ui/prompts.json +0 -1067
  192. llms/extensions/tools/__init__.py +0 -5
  193. llms/extensions/tools/__pycache__/__init__.cpython-314.pyc +0 -0
  194. llms/extensions/tools/ui/index.mjs +0 -204
  195. llms/providers-extra.json +0 -356
  196. llms/ui/ctx.mjs +0 -365
  197. llms/ui/index.mjs +0 -129
  198. llms/ui/modules/chat/ChatBody.mjs +0 -691
  199. llms/ui/modules/chat/index.mjs +0 -828
  200. llms/ui/modules/layout.mjs +0 -243
  201. llms/ui/modules/model-selector.mjs +0 -851
  202. llms_py-3.0.0.dist-info/RECORD +0 -202
  203. {llms_py-3.0.0.dist-info → llms_py-3.0.0b1.dist-info}/WHEEL +0 -0
  204. {llms_py-3.0.0.dist-info → llms_py-3.0.0b1.dist-info}/entry_points.txt +0 -0
  205. {llms_py-3.0.0.dist-info → llms_py-3.0.0b1.dist-info}/licenses/LICENSE +0 -0
  206. {llms_py-3.0.0.dist-info → llms_py-3.0.0b1.dist-info}/top_level.txt +0 -0
@@ -1,62 +0,0 @@
1
- <!doctype html>
2
-
3
- <title>CodeMirror: TypeScript mode</title>
4
- <meta charset="utf-8"/>
5
- <link rel=stylesheet href="../../doc/docs.css">
6
-
7
- <link rel="stylesheet" href="../../lib/codemirror.css">
8
- <script src="../../lib/codemirror.js"></script>
9
- <script src="../../addon/edit/matchbrackets.js"></script>
10
- <script src="javascript.js"></script>
11
- <style>.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
12
- <div id=nav>
13
- <a href="https://codemirror.net/5"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png" alt=""></a>
14
-
15
- <ul>
16
- <li><a href="../../index.html">Home</a>
17
- <li><a href="../../doc/manual.html">Manual</a>
18
- <li><a href="https://github.com/codemirror/codemirror5">Code</a>
19
- </ul>
20
- <ul>
21
- <li><a href="../index.html">Language modes</a>
22
- <li><a class=active href="#">TypeScript</a>
23
- </ul>
24
- </div>
25
-
26
- <article>
27
- <h2>TypeScript mode</h2>
28
-
29
-
30
- <div><textarea id="code" name="code">
31
- class Greeter {
32
- greeting: string;
33
- constructor (message: string) {
34
- this.greeting = message;
35
- }
36
- greet() {
37
- return "Hello, " + this.greeting;
38
- }
39
- }
40
-
41
- var greeter = new Greeter("world");
42
-
43
- var button = document.createElement('button')
44
- button.innerText = "Say Hello"
45
- button.onclick = function() {
46
- alert(greeter.greet())
47
- }
48
-
49
- document.body.appendChild(button)
50
-
51
- </textarea></div>
52
-
53
- <script>
54
- var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
55
- lineNumbers: true,
56
- matchBrackets: true,
57
- mode: "text/typescript"
58
- });
59
- </script>
60
-
61
- <p>This is a specialization of the <a href="index.html">JavaScript mode</a>.</p>
62
- </article>
@@ -1,402 +0,0 @@
1
- // CodeMirror, copyright (c) by Marijn Haverbeke and others
2
- // Distributed under an MIT license: https://codemirror.net/5/LICENSE
3
-
4
- (function(mod) {
5
- if (typeof exports == "object" && typeof module == "object") // CommonJS
6
- mod(require("../../lib/codemirror"));
7
- else if (typeof define == "function" && define.amd) // AMD
8
- define(["../../lib/codemirror"], mod);
9
- else // Plain browser env
10
- mod(CodeMirror);
11
- })(function(CodeMirror) {
12
- "use strict";
13
-
14
- function wordRegexp(words) {
15
- return new RegExp("^((" + words.join(")|(") + "))\\b");
16
- }
17
-
18
- var wordOperators = wordRegexp(["and", "or", "not", "is"]);
19
- var commonKeywords = ["as", "assert", "break", "class", "continue",
20
- "def", "del", "elif", "else", "except", "finally",
21
- "for", "from", "global", "if", "import",
22
- "lambda", "pass", "raise", "return",
23
- "try", "while", "with", "yield", "in", "False", "True"];
24
- var commonBuiltins = ["abs", "all", "any", "bin", "bool", "bytearray", "callable", "chr",
25
- "classmethod", "compile", "complex", "delattr", "dict", "dir", "divmod",
26
- "enumerate", "eval", "filter", "float", "format", "frozenset",
27
- "getattr", "globals", "hasattr", "hash", "help", "hex", "id",
28
- "input", "int", "isinstance", "issubclass", "iter", "len",
29
- "list", "locals", "map", "max", "memoryview", "min", "next",
30
- "object", "oct", "open", "ord", "pow", "property", "range",
31
- "repr", "reversed", "round", "set", "setattr", "slice",
32
- "sorted", "staticmethod", "str", "sum", "super", "tuple",
33
- "type", "vars", "zip", "__import__", "NotImplemented",
34
- "Ellipsis", "__debug__"];
35
- CodeMirror.registerHelper("hintWords", "python", commonKeywords.concat(commonBuiltins).concat(["exec", "print"]));
36
-
37
- function top(state) {
38
- return state.scopes[state.scopes.length - 1];
39
- }
40
-
41
- CodeMirror.defineMode("python", function(conf, parserConf) {
42
- var ERRORCLASS = "error";
43
-
44
- var delimiters = parserConf.delimiters || parserConf.singleDelimiters || /^[\(\)\[\]\{\}@,:`=;\.\\]/;
45
- // (Backwards-compatibility with old, cumbersome config system)
46
- var operators = [parserConf.singleOperators, parserConf.doubleOperators, parserConf.doubleDelimiters, parserConf.tripleDelimiters,
47
- parserConf.operators || /^([-+*/%\/&|^]=?|[<>=]+|\/\/=?|\*\*=?|!=|[~!@]|\.\.\.)/]
48
- for (var i = 0; i < operators.length; i++) if (!operators[i]) operators.splice(i--, 1)
49
-
50
- var hangingIndent = parserConf.hangingIndent || conf.indentUnit;
51
-
52
- var myKeywords = commonKeywords, myBuiltins = commonBuiltins;
53
- if (parserConf.extra_keywords != undefined)
54
- myKeywords = myKeywords.concat(parserConf.extra_keywords);
55
-
56
- if (parserConf.extra_builtins != undefined)
57
- myBuiltins = myBuiltins.concat(parserConf.extra_builtins);
58
-
59
- var py3 = !(parserConf.version && Number(parserConf.version) < 3)
60
- if (py3) {
61
- // since http://legacy.python.org/dev/peps/pep-0465/ @ is also an operator
62
- var identifiers = parserConf.identifiers|| /^[_A-Za-z\u00A1-\uFFFF][_A-Za-z0-9\u00A1-\uFFFF]*/;
63
- myKeywords = myKeywords.concat(["nonlocal", "None", "aiter", "anext", "async", "await", "breakpoint", "match", "case"]);
64
- myBuiltins = myBuiltins.concat(["ascii", "bytes", "exec", "print"]);
65
- var stringPrefixes = new RegExp("^(([rbuf]|(br)|(rb)|(fr)|(rf))?('{3}|\"{3}|['\"]))", "i");
66
- } else {
67
- var identifiers = parserConf.identifiers|| /^[_A-Za-z][_A-Za-z0-9]*/;
68
- myKeywords = myKeywords.concat(["exec", "print"]);
69
- myBuiltins = myBuiltins.concat(["apply", "basestring", "buffer", "cmp", "coerce", "execfile",
70
- "file", "intern", "long", "raw_input", "reduce", "reload",
71
- "unichr", "unicode", "xrange", "None"]);
72
- var stringPrefixes = new RegExp("^(([rubf]|(ur)|(br))?('{3}|\"{3}|['\"]))", "i");
73
- }
74
- var keywords = wordRegexp(myKeywords);
75
- var builtins = wordRegexp(myBuiltins);
76
-
77
- // tokenizers
78
- function tokenBase(stream, state) {
79
- var sol = stream.sol() && state.lastToken != "\\"
80
- if (sol) state.indent = stream.indentation()
81
- // Handle scope changes
82
- if (sol && top(state).type == "py") {
83
- var scopeOffset = top(state).offset;
84
- if (stream.eatSpace()) {
85
- var lineOffset = stream.indentation();
86
- if (lineOffset > scopeOffset)
87
- pushPyScope(state);
88
- else if (lineOffset < scopeOffset && dedent(stream, state) && stream.peek() != "#")
89
- state.errorToken = true;
90
- return null;
91
- } else {
92
- var style = tokenBaseInner(stream, state);
93
- if (scopeOffset > 0 && dedent(stream, state))
94
- style += " " + ERRORCLASS;
95
- return style;
96
- }
97
- }
98
- return tokenBaseInner(stream, state);
99
- }
100
-
101
- function tokenBaseInner(stream, state, inFormat) {
102
- if (stream.eatSpace()) return null;
103
-
104
- // Handle Comments
105
- if (!inFormat && stream.match(/^#.*/)) return "comment";
106
-
107
- // Handle Number Literals
108
- if (stream.match(/^[0-9\.]/, false)) {
109
- var floatLiteral = false;
110
- // Floats
111
- if (stream.match(/^[\d_]*\.\d+(e[\+\-]?\d+)?/i)) { floatLiteral = true; }
112
- if (stream.match(/^[\d_]+\.\d*/)) { floatLiteral = true; }
113
- if (stream.match(/^\.\d+/)) { floatLiteral = true; }
114
- if (floatLiteral) {
115
- // Float literals may be "imaginary"
116
- stream.eat(/J/i);
117
- return "number";
118
- }
119
- // Integers
120
- var intLiteral = false;
121
- // Hex
122
- if (stream.match(/^0x[0-9a-f_]+/i)) intLiteral = true;
123
- // Binary
124
- if (stream.match(/^0b[01_]+/i)) intLiteral = true;
125
- // Octal
126
- if (stream.match(/^0o[0-7_]+/i)) intLiteral = true;
127
- // Decimal
128
- if (stream.match(/^[1-9][\d_]*(e[\+\-]?[\d_]+)?/)) {
129
- // Decimal literals may be "imaginary"
130
- stream.eat(/J/i);
131
- // TODO - Can you have imaginary longs?
132
- intLiteral = true;
133
- }
134
- // Zero by itself with no other piece of number.
135
- if (stream.match(/^0(?![\dx])/i)) intLiteral = true;
136
- if (intLiteral) {
137
- // Integer literals may be "long"
138
- stream.eat(/L/i);
139
- return "number";
140
- }
141
- }
142
-
143
- // Handle Strings
144
- if (stream.match(stringPrefixes)) {
145
- var isFmtString = stream.current().toLowerCase().indexOf('f') !== -1;
146
- if (!isFmtString) {
147
- state.tokenize = tokenStringFactory(stream.current(), state.tokenize);
148
- return state.tokenize(stream, state);
149
- } else {
150
- state.tokenize = formatStringFactory(stream.current(), state.tokenize);
151
- return state.tokenize(stream, state);
152
- }
153
- }
154
-
155
- for (var i = 0; i < operators.length; i++)
156
- if (stream.match(operators[i])) return "operator"
157
-
158
- if (stream.match(delimiters)) return "punctuation";
159
-
160
- if (state.lastToken == "." && stream.match(identifiers))
161
- return "property";
162
-
163
- if (stream.match(keywords) || stream.match(wordOperators))
164
- return "keyword";
165
-
166
- if (stream.match(builtins))
167
- return "builtin";
168
-
169
- if (stream.match(/^(self|cls)\b/))
170
- return "variable-2";
171
-
172
- if (stream.match(identifiers)) {
173
- if (state.lastToken == "def" || state.lastToken == "class")
174
- return "def";
175
- return "variable";
176
- }
177
-
178
- // Handle non-detected items
179
- stream.next();
180
- return inFormat ? null :ERRORCLASS;
181
- }
182
-
183
- function formatStringFactory(delimiter, tokenOuter) {
184
- while ("rubf".indexOf(delimiter.charAt(0).toLowerCase()) >= 0)
185
- delimiter = delimiter.substr(1);
186
-
187
- var singleline = delimiter.length == 1;
188
- var OUTCLASS = "string";
189
-
190
- function tokenNestedExpr(depth) {
191
- return function(stream, state) {
192
- var inner = tokenBaseInner(stream, state, true)
193
- if (inner == "punctuation") {
194
- if (stream.current() == "{") {
195
- state.tokenize = tokenNestedExpr(depth + 1)
196
- } else if (stream.current() == "}") {
197
- if (depth > 1) state.tokenize = tokenNestedExpr(depth - 1)
198
- else state.tokenize = tokenString
199
- }
200
- }
201
- return inner
202
- }
203
- }
204
-
205
- function tokenString(stream, state) {
206
- while (!stream.eol()) {
207
- stream.eatWhile(/[^'"\{\}\\]/);
208
- if (stream.eat("\\")) {
209
- stream.next();
210
- if (singleline && stream.eol())
211
- return OUTCLASS;
212
- } else if (stream.match(delimiter)) {
213
- state.tokenize = tokenOuter;
214
- return OUTCLASS;
215
- } else if (stream.match('{{')) {
216
- // ignore {{ in f-str
217
- return OUTCLASS;
218
- } else if (stream.match('{', false)) {
219
- // switch to nested mode
220
- state.tokenize = tokenNestedExpr(0)
221
- if (stream.current()) return OUTCLASS;
222
- else return state.tokenize(stream, state)
223
- } else if (stream.match('}}')) {
224
- return OUTCLASS;
225
- } else if (stream.match('}')) {
226
- // single } in f-string is an error
227
- return ERRORCLASS;
228
- } else {
229
- stream.eat(/['"]/);
230
- }
231
- }
232
- if (singleline) {
233
- if (parserConf.singleLineStringErrors)
234
- return ERRORCLASS;
235
- else
236
- state.tokenize = tokenOuter;
237
- }
238
- return OUTCLASS;
239
- }
240
- tokenString.isString = true;
241
- return tokenString;
242
- }
243
-
244
- function tokenStringFactory(delimiter, tokenOuter) {
245
- while ("rubf".indexOf(delimiter.charAt(0).toLowerCase()) >= 0)
246
- delimiter = delimiter.substr(1);
247
-
248
- var singleline = delimiter.length == 1;
249
- var OUTCLASS = "string";
250
-
251
- function tokenString(stream, state) {
252
- while (!stream.eol()) {
253
- stream.eatWhile(/[^'"\\]/);
254
- if (stream.eat("\\")) {
255
- stream.next();
256
- if (singleline && stream.eol())
257
- return OUTCLASS;
258
- } else if (stream.match(delimiter)) {
259
- state.tokenize = tokenOuter;
260
- return OUTCLASS;
261
- } else {
262
- stream.eat(/['"]/);
263
- }
264
- }
265
- if (singleline) {
266
- if (parserConf.singleLineStringErrors)
267
- return ERRORCLASS;
268
- else
269
- state.tokenize = tokenOuter;
270
- }
271
- return OUTCLASS;
272
- }
273
- tokenString.isString = true;
274
- return tokenString;
275
- }
276
-
277
- function pushPyScope(state) {
278
- while (top(state).type != "py") state.scopes.pop()
279
- state.scopes.push({offset: top(state).offset + conf.indentUnit,
280
- type: "py",
281
- align: null})
282
- }
283
-
284
- function pushBracketScope(stream, state, type) {
285
- var align = stream.match(/^[\s\[\{\(]*(?:#|$)/, false) ? null : stream.column() + 1
286
- state.scopes.push({offset: state.indent + hangingIndent,
287
- type: type,
288
- align: align})
289
- }
290
-
291
- function dedent(stream, state) {
292
- var indented = stream.indentation();
293
- while (state.scopes.length > 1 && top(state).offset > indented) {
294
- if (top(state).type != "py") return true;
295
- state.scopes.pop();
296
- }
297
- return top(state).offset != indented;
298
- }
299
-
300
- function tokenLexer(stream, state) {
301
- if (stream.sol()) {
302
- state.beginningOfLine = true;
303
- state.dedent = false;
304
- }
305
-
306
- var style = state.tokenize(stream, state);
307
- var current = stream.current();
308
-
309
- // Handle decorators
310
- if (state.beginningOfLine && current == "@")
311
- return stream.match(identifiers, false) ? "meta" : py3 ? "operator" : ERRORCLASS;
312
-
313
- if (/\S/.test(current)) state.beginningOfLine = false;
314
-
315
- if ((style == "variable" || style == "builtin")
316
- && state.lastToken == "meta")
317
- style = "meta";
318
-
319
- // Handle scope changes.
320
- if (current == "pass" || current == "return")
321
- state.dedent = true;
322
-
323
- if (current == "lambda") state.lambda = true;
324
- if (current == ":" && !state.lambda && top(state).type == "py" && stream.match(/^\s*(?:#|$)/, false))
325
- pushPyScope(state);
326
-
327
- if (current.length == 1 && !/string|comment/.test(style)) {
328
- var delimiter_index = "[({".indexOf(current);
329
- if (delimiter_index != -1)
330
- pushBracketScope(stream, state, "])}".slice(delimiter_index, delimiter_index+1));
331
-
332
- delimiter_index = "])}".indexOf(current);
333
- if (delimiter_index != -1) {
334
- if (top(state).type == current) state.indent = state.scopes.pop().offset - hangingIndent
335
- else return ERRORCLASS;
336
- }
337
- }
338
- if (state.dedent && stream.eol() && top(state).type == "py" && state.scopes.length > 1)
339
- state.scopes.pop();
340
-
341
- return style;
342
- }
343
-
344
- var external = {
345
- startState: function(basecolumn) {
346
- return {
347
- tokenize: tokenBase,
348
- scopes: [{offset: basecolumn || 0, type: "py", align: null}],
349
- indent: basecolumn || 0,
350
- lastToken: null,
351
- lambda: false,
352
- dedent: 0
353
- };
354
- },
355
-
356
- token: function(stream, state) {
357
- var addErr = state.errorToken;
358
- if (addErr) state.errorToken = false;
359
- var style = tokenLexer(stream, state);
360
-
361
- if (style && style != "comment")
362
- state.lastToken = (style == "keyword" || style == "punctuation") ? stream.current() : style;
363
- if (style == "punctuation") style = null;
364
-
365
- if (stream.eol() && state.lambda)
366
- state.lambda = false;
367
- return addErr ? style + " " + ERRORCLASS : style;
368
- },
369
-
370
- indent: function(state, textAfter) {
371
- if (state.tokenize != tokenBase)
372
- return state.tokenize.isString ? CodeMirror.Pass : 0;
373
-
374
- var scope = top(state)
375
- var closing = scope.type == textAfter.charAt(0) ||
376
- scope.type == "py" && !state.dedent && /^(else:|elif |except |finally:)/.test(textAfter)
377
- if (scope.align != null)
378
- return scope.align - (closing ? 1 : 0)
379
- else
380
- return scope.offset - (closing ? hangingIndent : 0)
381
- },
382
-
383
- electricInput: /^\s*([\}\]\)]|else:|elif |except |finally:)$/,
384
- closeBrackets: {triples: "'\""},
385
- lineComment: "#",
386
- fold: "indent"
387
- };
388
- return external;
389
- });
390
-
391
- CodeMirror.defineMIME("text/x-python", "python");
392
-
393
- var words = function(str) { return str.split(" "); };
394
-
395
- CodeMirror.defineMIME("text/x-cython", {
396
- name: "python",
397
- extra_keywords: words("by cdef cimport cpdef ctypedef enum except "+
398
- "extern gil include nogil property public "+
399
- "readonly struct union DEF IF ELIF ELSE")
400
- });
401
-
402
- });
@@ -1,40 +0,0 @@
1
- /*
2
-
3
- Name: dracula
4
- Author: Michael Kaminsky (http://github.com/mkaminsky11)
5
-
6
- Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)
7
-
8
- */
9
-
10
-
11
- .cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {
12
- background-color: #282a36 !important;
13
- color: #f8f8f2 !important;
14
- border: none;
15
- }
16
- .cm-s-dracula .CodeMirror-gutters { color: #282a36; }
17
- .cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }
18
- .cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }
19
- .cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }
20
- .cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }
21
- .cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }
22
- .cm-s-dracula span.cm-comment { color: #6272a4; }
23
- .cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }
24
- .cm-s-dracula span.cm-number { color: #bd93f9; }
25
- .cm-s-dracula span.cm-variable { color: #50fa7b; }
26
- .cm-s-dracula span.cm-variable-2 { color: white; }
27
- .cm-s-dracula span.cm-def { color: #50fa7b; }
28
- .cm-s-dracula span.cm-operator { color: #ff79c6; }
29
- .cm-s-dracula span.cm-keyword { color: #ff79c6; }
30
- .cm-s-dracula span.cm-atom { color: #bd93f9; }
31
- .cm-s-dracula span.cm-meta { color: #f8f8f2; }
32
- .cm-s-dracula span.cm-tag { color: #ff79c6; }
33
- .cm-s-dracula span.cm-attribute { color: #50fa7b; }
34
- .cm-s-dracula span.cm-qualifier { color: #50fa7b; }
35
- .cm-s-dracula span.cm-property { color: #66d9ef; }
36
- .cm-s-dracula span.cm-builtin { color: #50fa7b; }
37
- .cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }
38
-
39
- .cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }
40
- .cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }
@@ -1,135 +0,0 @@
1
- div.cm-s-ctp-mocha.CodeMirror {
2
- --bg0: #1e1e2e;
3
- --bg1: #7f849c;
4
- --bg4: #6c7086;
5
- --fg: #cdd6f4;
6
- --fg3: #a6adc8;
7
- --gray: #bac2de;
8
- --blue: #89b4fa;
9
- --yellow: #f9e2af;
10
- --aqua: #89b4fa;
11
- --orange: #fab387;
12
- --primary-bg: #1e1e2e;
13
- --current-line: #313244;
14
- --selection: #585b70;
15
- --atom: #b4befe;
16
- --cursor: #7f849c;
17
- --keyword: #f38ba8;
18
- --operator: #89dceb;
19
- --number: #fab387;
20
- --definition: #89b4fa;
21
- --string: #a6e3a1;
22
- }
23
-
24
- .cm-s-ctp-mocha.CodeMirror,
25
- .cm-s-ctp-mocha .CodeMirror-gutters {
26
- background-color: var(--primary-bg);
27
- color: var(--fg3);
28
- }
29
-
30
- .cm-s-ctp-mocha .CodeMirror-gutters {
31
- background: var(--primary-bg);
32
- border-right: 0px;
33
- }
34
-
35
- .cm-s-ctp-mocha .CodeMirror-linenumber {
36
- color: var(--bg4);
37
- }
38
-
39
- .cm-s-ctp-mocha .CodeMirror-cursor {
40
- border-left: 1px solid var(--fg);
41
- }
42
-
43
- .cm-s-ctp-mocha.cm-fat-cursor .CodeMirror-cursor {
44
- background-color: var(--cursor) !important;
45
- }
46
-
47
- .cm-s-ctp-mocha .cm-animate-fat-cursor {
48
- background-color: var(--cursor) !important;
49
- }
50
-
51
- .cm-s-ctp-mocha div.CodeMirror-selected {
52
- background: var(--selection);
53
- }
54
-
55
- .cm-s-ctp-mocha span.cm-meta {
56
- color: var(--blue);
57
- }
58
-
59
- .cm-s-ctp-mocha span.cm-comment {
60
- color: var(--gray);
61
- }
62
-
63
- .cm-s-ctp-mocha span.cm-number {
64
- color: var(--number);
65
- }
66
-
67
- .cm-s-ctp-mocha span.cm-atom {
68
- color: var(--atom);
69
- }
70
-
71
- .cm-s-ctp-mocha span.cm-keyword {
72
- color: var(--keyword);
73
- }
74
-
75
- .cm-s-ctp-mocha span.cm-variable {
76
- color: var(--fg);
77
- }
78
-
79
- .cm-s-ctp-mocha span.cm-variable-2 {
80
- color: var(--fg);
81
- }
82
-
83
- .cm-s-ctp-mocha span.cm-variable-3,
84
- .cm-s-ctp-mocha .cm-s-gruvbox-dark span.cm-type {
85
- color: var(--yellow);
86
- }
87
-
88
- .cm-s-ctp-mocha span.cm-operator {
89
- color: var(--operator);
90
- }
91
-
92
- .cm-s-ctp-mocha span.cm-callee {
93
- color: var(--fg);
94
- }
95
-
96
- .cm-s-ctp-mocha span.cm-def {
97
- color: var(--definition);
98
- }
99
-
100
- .cm-s-ctp-mocha span.cm-property {
101
- color: var(--fg);
102
- }
103
-
104
- .cm-s-ctp-mocha span.cm-string {
105
- color: var(--string);
106
- }
107
-
108
- .cm-s-ctp-mocha span.cm-string-2 {
109
- color: var(--aqua);
110
- }
111
-
112
- .cm-s-ctp-mocha span.cm-qualifier {
113
- color: var(--aqua);
114
- }
115
-
116
- .cm-s-ctp-mocha span.cm-attribute {
117
- color: var(--aqua);
118
- }
119
-
120
- .cm-s-ctp-mocha .CodeMirror-activeline-background {
121
- background: var(--current-line);
122
- }
123
-
124
- .cm-s-ctp-mocha .CodeMirror-matchingbracket {
125
- background: var(--gray);
126
- color: var(--bg0) !important;
127
- }
128
-
129
- .cm-s-ctp-mocha span.cm-builtin {
130
- color: var(--orange);
131
- }
132
-
133
- .cm-s-ctp-mocha span.cm-tag {
134
- color: var(--orange);
135
- }