heni86 commited on
Commit
b67dcb6
·
verified ·
1 Parent(s): dd7a839

Add files using upload-large-folder tool

Browse files
Files changed (50) hide show
  1. .gitattributes +2 -0
  2. .venv/.gitignore +1 -0
  3. .venv/.lock +0 -0
  4. .venv/CACHEDIR.TAG +1 -0
  5. .venv/bin/activate +116 -0
  6. .venv/bin/activate.bat +59 -0
  7. .venv/bin/activate.csh +76 -0
  8. .venv/bin/activate.fish +124 -0
  9. .venv/bin/activate.nu +117 -0
  10. .venv/bin/activate.ps1 +82 -0
  11. .venv/bin/activate_this.py +59 -0
  12. .venv/bin/deactivate.bat +39 -0
  13. .venv/bin/hf +8 -0
  14. .venv/bin/huggingface-cli +8 -0
  15. .venv/bin/normalizer +8 -0
  16. .venv/bin/pydoc.bat +22 -0
  17. .venv/bin/python +0 -0
  18. .venv/bin/python3 +0 -0
  19. .venv/bin/python3.11 +0 -0
  20. .venv/bin/tiny-agents +8 -0
  21. .venv/bin/tqdm +8 -0
  22. .venv/lib/python3.11/site-packages/InquirerPy/__init__.py +2 -0
  23. .venv/lib/python3.11/site-packages/InquirerPy/enum.py +7 -0
  24. .venv/lib/python3.11/site-packages/InquirerPy/exceptions.py +25 -0
  25. .venv/lib/python3.11/site-packages/InquirerPy/inquirer.py +17 -0
  26. .venv/lib/python3.11/site-packages/InquirerPy/py.typed +1 -0
  27. .venv/lib/python3.11/site-packages/InquirerPy/resolver.py +219 -0
  28. .venv/lib/python3.11/site-packages/InquirerPy/separator.py +23 -0
  29. .venv/lib/python3.11/site-packages/InquirerPy/utils.py +290 -0
  30. .venv/lib/python3.11/site-packages/InquirerPy/validator.py +165 -0
  31. .venv/lib/python3.11/site-packages/_virtualenv.py +101 -0
  32. .venv/lib/python3.11/site-packages/_yaml/__init__.py +33 -0
  33. .venv/lib/python3.11/site-packages/pfzy/__init__.py +2 -0
  34. .venv/lib/python3.11/site-packages/pfzy/match.py +111 -0
  35. .venv/lib/python3.11/site-packages/pfzy/score.py +307 -0
  36. .venv/lib/python3.11/site-packages/pfzy/types.py +5 -0
  37. .venv/lib/python3.11/site-packages/typing_extensions.py +0 -0
  38. .venv/lib/python3.11/site-packages/urllib3-2.5.0.dist-info/licenses/LICENSE.txt +21 -0
  39. .venv/lib/python3.11/site-packages/urllib3/__init__.py +211 -0
  40. .venv/lib/python3.11/site-packages/urllib3/_collections.py +479 -0
  41. .venv/lib/python3.11/site-packages/urllib3/_version.py +21 -0
  42. .venv/lib/python3.11/site-packages/urllib3/connectionpool.py +1178 -0
  43. .venv/pyvenv.cfg +6 -0
  44. README.md +240 -0
  45. chat_template.jinja +5 -0
  46. config.json +41 -0
  47. generation_config.json +11 -0
  48. quantization_config.json +0 -0
  49. special_tokens_map.json +23 -0
  50. tokenizer_config.json +2071 -0
.gitattributes CHANGED
@@ -33,3 +33,5 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ tokenizer.json filter=lfs diff=lfs merge=lfs -text
37
+ thumbnail.png filter=lfs diff=lfs merge=lfs -text
.venv/.gitignore ADDED
@@ -0,0 +1 @@
 
 
1
+ *
.venv/.lock ADDED
File without changes
.venv/CACHEDIR.TAG ADDED
@@ -0,0 +1 @@
 
 
1
+ Signature: 8a477f597d28d172789f06886806bc55
.venv/bin/activate ADDED
@@ -0,0 +1,116 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (c) 2020-202x The virtualenv developers
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining
4
+ # a copy of this software and associated documentation files (the
5
+ # "Software"), to deal in the Software without restriction, including
6
+ # without limitation the rights to use, copy, modify, merge, publish,
7
+ # distribute, sublicense, and/or sell copies of the Software, and to
8
+ # permit persons to whom the Software is furnished to do so, subject to
9
+ # the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be
12
+ # included in all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
22
+ # This file must be used with "source bin/activate" *from bash*
23
+ # you cannot run it directly
24
+
25
+ # Get script path (only used if environment is relocatable).
26
+ if [ -n "${BASH_VERSION:+x}" ] ; then
27
+ SCRIPT_PATH="${BASH_SOURCE[0]}"
28
+ if [ "$SCRIPT_PATH" = "$0" ]; then
29
+ # Only bash has a reasonably robust check for source'dness.
30
+ echo "You must source this script: \$ source $0" >&2
31
+ exit 33
32
+ fi
33
+ elif [ -n "${ZSH_VERSION:+x}" ] ; then
34
+ SCRIPT_PATH="${(%):-%x}"
35
+ elif [ -n "${KSH_VERSION:+x}" ] ; then
36
+ SCRIPT_PATH="${.sh.file}"
37
+ fi
38
+
39
+ deactivate () {
40
+ unset -f pydoc >/dev/null 2>&1 || true
41
+
42
+ # reset old environment variables
43
+ # ! [ -z ${VAR+_} ] returns true if VAR is declared at all
44
+ if ! [ -z "${_OLD_VIRTUAL_PATH:+_}" ] ; then
45
+ PATH="$_OLD_VIRTUAL_PATH"
46
+ export PATH
47
+ unset _OLD_VIRTUAL_PATH
48
+ fi
49
+ if ! [ -z "${_OLD_VIRTUAL_PYTHONHOME+_}" ] ; then
50
+ PYTHONHOME="$_OLD_VIRTUAL_PYTHONHOME"
51
+ export PYTHONHOME
52
+ unset _OLD_VIRTUAL_PYTHONHOME
53
+ fi
54
+
55
+ # The hash command must be called to get it to forget past
56
+ # commands. Without forgetting past commands the $PATH changes
57
+ # we made may not be respected
58
+ hash -r 2>/dev/null
59
+
60
+ if ! [ -z "${_OLD_VIRTUAL_PS1+_}" ] ; then
61
+ PS1="$_OLD_VIRTUAL_PS1"
62
+ export PS1
63
+ unset _OLD_VIRTUAL_PS1
64
+ fi
65
+
66
+ unset VIRTUAL_ENV
67
+ unset VIRTUAL_ENV_PROMPT
68
+ if [ ! "${1-}" = "nondestructive" ] ; then
69
+ # Self destruct!
70
+ unset -f deactivate
71
+ fi
72
+ }
73
+
74
+ # unset irrelevant variables
75
+ deactivate nondestructive
76
+
77
+ VIRTUAL_ENV='/tmp/LexiFreak-8B-Unleashed/.venv'
78
+ if ([ "$OSTYPE" = "cygwin" ] || [ "$OSTYPE" = "msys" ]) && $(command -v cygpath &> /dev/null) ; then
79
+ VIRTUAL_ENV=$(cygpath -u "$VIRTUAL_ENV")
80
+ fi
81
+ export VIRTUAL_ENV
82
+
83
+ _OLD_VIRTUAL_PATH="$PATH"
84
+ PATH="$VIRTUAL_ENV/bin:$PATH"
85
+ export PATH
86
+
87
+ if [ "xLexiFreak-8B-Unleashed" != x ] ; then
88
+ VIRTUAL_ENV_PROMPT="(LexiFreak-8B-Unleashed) "
89
+ else
90
+ VIRTUAL_ENV_PROMPT="($(basename "$VIRTUAL_ENV")) "
91
+ fi
92
+ export VIRTUAL_ENV_PROMPT
93
+
94
+ # unset PYTHONHOME if set
95
+ if ! [ -z "${PYTHONHOME+_}" ] ; then
96
+ _OLD_VIRTUAL_PYTHONHOME="$PYTHONHOME"
97
+ unset PYTHONHOME
98
+ fi
99
+
100
+ if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT-}" ] ; then
101
+ _OLD_VIRTUAL_PS1="${PS1-}"
102
+ PS1="${VIRTUAL_ENV_PROMPT}${PS1-}"
103
+ export PS1
104
+ fi
105
+
106
+ # Make sure to unalias pydoc if it's already there
107
+ alias pydoc 2>/dev/null >/dev/null && unalias pydoc || true
108
+
109
+ pydoc () {
110
+ python -m pydoc "$@"
111
+ }
112
+
113
+ # The hash command must be called to get it to forget past
114
+ # commands. Without forgetting past commands the $PATH changes
115
+ # we made may not be respected
116
+ hash -r 2>/dev/null
.venv/bin/activate.bat ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @REM Copyright (c) 2020-202x The virtualenv developers
2
+ @REM
3
+ @REM Permission is hereby granted, free of charge, to any person obtaining
4
+ @REM a copy of this software and associated documentation files (the
5
+ @REM "Software"), to deal in the Software without restriction, including
6
+ @REM without limitation the rights to use, copy, modify, merge, publish,
7
+ @REM distribute, sublicense, and/or sell copies of the Software, and to
8
+ @REM permit persons to whom the Software is furnished to do so, subject to
9
+ @REM the following conditions:
10
+ @REM
11
+ @REM The above copyright notice and this permission notice shall be
12
+ @REM included in all copies or substantial portions of the Software.
13
+ @REM
14
+ @REM THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ @REM EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ @REM MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ @REM NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ @REM LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ @REM OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ @REM WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
22
+ @for %%i in ("/tmp/LexiFreak-8B-Unleashed/.venv") do @set "VIRTUAL_ENV=%%~fi"
23
+
24
+ @set "VIRTUAL_ENV_PROMPT=LexiFreak-8B-Unleashed"
25
+ @if NOT DEFINED VIRTUAL_ENV_PROMPT (
26
+ @for %%d in ("%VIRTUAL_ENV%") do @set "VIRTUAL_ENV_PROMPT=%%~nxd"
27
+ )
28
+
29
+ @if defined _OLD_VIRTUAL_PROMPT (
30
+ @set "PROMPT=%_OLD_VIRTUAL_PROMPT%"
31
+ ) else (
32
+ @if not defined PROMPT (
33
+ @set "PROMPT=$P$G"
34
+ )
35
+ @if not defined VIRTUAL_ENV_DISABLE_PROMPT (
36
+ @set "_OLD_VIRTUAL_PROMPT=%PROMPT%"
37
+ )
38
+ )
39
+ @if not defined VIRTUAL_ENV_DISABLE_PROMPT (
40
+ @set "PROMPT=(%VIRTUAL_ENV_PROMPT%) %PROMPT%"
41
+ )
42
+
43
+ @REM Don't use () to avoid problems with them in %PATH%
44
+ @if defined _OLD_VIRTUAL_PYTHONHOME @goto ENDIFVHOME
45
+ @set "_OLD_VIRTUAL_PYTHONHOME=%PYTHONHOME%"
46
+ :ENDIFVHOME
47
+
48
+ @set PYTHONHOME=
49
+
50
+ @REM if defined _OLD_VIRTUAL_PATH (
51
+ @if not defined _OLD_VIRTUAL_PATH @goto ENDIFVPATH1
52
+ @set "PATH=%_OLD_VIRTUAL_PATH%"
53
+ :ENDIFVPATH1
54
+ @REM ) else (
55
+ @if defined _OLD_VIRTUAL_PATH @goto ENDIFVPATH2
56
+ @set "_OLD_VIRTUAL_PATH=%PATH%"
57
+ :ENDIFVPATH2
58
+
59
+ @set "PATH=%VIRTUAL_ENV%\bin;%PATH%"
.venv/bin/activate.csh ADDED
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (c) 2020-202x The virtualenv developers
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining
4
+ # a copy of this software and associated documentation files (the
5
+ # "Software"), to deal in the Software without restriction, including
6
+ # without limitation the rights to use, copy, modify, merge, publish,
7
+ # distribute, sublicense, and/or sell copies of the Software, and to
8
+ # permit persons to whom the Software is furnished to do so, subject to
9
+ # the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be
12
+ # included in all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
22
+ # This file must be used with "source bin/activate.csh" *from csh*.
23
+ # You cannot run it directly.
24
+ # Created by Davide Di Blasi <davidedb@gmail.com>.
25
+
26
+ set newline='\
27
+ '
28
+
29
+ alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH:q" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT:q" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; unsetenv VIRTUAL_ENV_PROMPT; test "\!:*" != "nondestructive" && unalias deactivate && unalias pydoc'
30
+
31
+ # Unset irrelevant variables.
32
+ deactivate nondestructive
33
+
34
+ setenv VIRTUAL_ENV '/tmp/LexiFreak-8B-Unleashed/.venv'
35
+
36
+ set _OLD_VIRTUAL_PATH="$PATH:q"
37
+ setenv PATH "$VIRTUAL_ENV:q/bin:$PATH:q"
38
+
39
+
40
+
41
+ if ('LexiFreak-8B-Unleashed' != "") then
42
+ setenv VIRTUAL_ENV_PROMPT 'LexiFreak-8B-Unleashed'
43
+ else
44
+ setenv VIRTUAL_ENV_PROMPT "$VIRTUAL_ENV:t:q"
45
+ endif
46
+
47
+ if ( $?VIRTUAL_ENV_DISABLE_PROMPT ) then
48
+ if ( $VIRTUAL_ENV_DISABLE_PROMPT == "" ) then
49
+ set do_prompt = "1"
50
+ else
51
+ set do_prompt = "0"
52
+ endif
53
+ else
54
+ set do_prompt = "1"
55
+ endif
56
+
57
+ if ( $do_prompt == "1" ) then
58
+ # Could be in a non-interactive environment,
59
+ # in which case, $prompt is undefined and we wouldn't
60
+ # care about the prompt anyway.
61
+ if ( $?prompt ) then
62
+ set _OLD_VIRTUAL_PROMPT="$prompt:q"
63
+ if ( "$prompt:q" =~ *"$newline:q"* ) then
64
+ :
65
+ else
66
+ set prompt = '('"$VIRTUAL_ENV_PROMPT:q"') '"$prompt:q"
67
+ endif
68
+ endif
69
+ endif
70
+
71
+ unset env_name
72
+ unset do_prompt
73
+
74
+ alias pydoc python -m pydoc
75
+
76
+ rehash
.venv/bin/activate.fish ADDED
@@ -0,0 +1,124 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (c) 2020-202x The virtualenv developers
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining
4
+ # a copy of this software and associated documentation files (the
5
+ # "Software"), to deal in the Software without restriction, including
6
+ # without limitation the rights to use, copy, modify, merge, publish,
7
+ # distribute, sublicense, and/or sell copies of the Software, and to
8
+ # permit persons to whom the Software is furnished to do so, subject to
9
+ # the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be
12
+ # included in all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
22
+ # This file must be used using `source bin/activate.fish` *within a running fish ( http://fishshell.com ) session*.
23
+ # Do not run it directly.
24
+
25
+ function _bashify_path -d "Converts a fish path to something bash can recognize"
26
+ set fishy_path $argv
27
+ set bashy_path $fishy_path[1]
28
+ for path_part in $fishy_path[2..-1]
29
+ set bashy_path "$bashy_path:$path_part"
30
+ end
31
+ echo $bashy_path
32
+ end
33
+
34
+ function _fishify_path -d "Converts a bash path to something fish can recognize"
35
+ echo $argv | tr ':' '\n'
36
+ end
37
+
38
+ function deactivate -d 'Exit virtualenv mode and return to the normal environment.'
39
+ # reset old environment variables
40
+ if test -n "$_OLD_VIRTUAL_PATH"
41
+ # https://github.com/fish-shell/fish-shell/issues/436 altered PATH handling
42
+ if test (echo $FISH_VERSION | head -c 1) -lt 3
43
+ set -gx PATH (_fishify_path "$_OLD_VIRTUAL_PATH")
44
+ else
45
+ set -gx PATH $_OLD_VIRTUAL_PATH
46
+ end
47
+ set -e _OLD_VIRTUAL_PATH
48
+ end
49
+
50
+ if test -n "$_OLD_VIRTUAL_PYTHONHOME"
51
+ set -gx PYTHONHOME "$_OLD_VIRTUAL_PYTHONHOME"
52
+ set -e _OLD_VIRTUAL_PYTHONHOME
53
+ end
54
+
55
+ if test -n "$_OLD_FISH_PROMPT_OVERRIDE"
56
+ and functions -q _old_fish_prompt
57
+ # Set an empty local `$fish_function_path` to allow the removal of `fish_prompt` using `functions -e`.
58
+ set -l fish_function_path
59
+
60
+ # Erase virtualenv's `fish_prompt` and restore the original.
61
+ functions -e fish_prompt
62
+ functions -c _old_fish_prompt fish_prompt
63
+ functions -e _old_fish_prompt
64
+ set -e _OLD_FISH_PROMPT_OVERRIDE
65
+ end
66
+
67
+ set -e VIRTUAL_ENV
68
+ set -e VIRTUAL_ENV_PROMPT
69
+
70
+ if test "$argv[1]" != 'nondestructive'
71
+ # Self-destruct!
72
+ functions -e pydoc
73
+ functions -e deactivate
74
+ functions -e _bashify_path
75
+ functions -e _fishify_path
76
+ end
77
+ end
78
+
79
+ # Unset irrelevant variables.
80
+ deactivate nondestructive
81
+
82
+ set -gx VIRTUAL_ENV '/tmp/LexiFreak-8B-Unleashed/.venv'
83
+
84
+ # https://github.com/fish-shell/fish-shell/issues/436 altered PATH handling
85
+ if test (echo $FISH_VERSION | head -c 1) -lt 3
86
+ set -gx _OLD_VIRTUAL_PATH (_bashify_path $PATH)
87
+ else
88
+ set -gx _OLD_VIRTUAL_PATH $PATH
89
+ end
90
+ set -gx PATH "$VIRTUAL_ENV"'/bin' $PATH
91
+
92
+ # Prompt override provided?
93
+ # If not, just use the environment name.
94
+ if test -n 'LexiFreak-8B-Unleashed'
95
+ set -gx VIRTUAL_ENV_PROMPT 'LexiFreak-8B-Unleashed'
96
+ else
97
+ set -gx VIRTUAL_ENV_PROMPT (basename "$VIRTUAL_ENV")
98
+ end
99
+
100
+ # Unset `$PYTHONHOME` if set.
101
+ if set -q PYTHONHOME
102
+ set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME
103
+ set -e PYTHONHOME
104
+ end
105
+
106
+ function pydoc
107
+ python -m pydoc $argv
108
+ end
109
+
110
+ if test -z "$VIRTUAL_ENV_DISABLE_PROMPT"
111
+ # Copy the current `fish_prompt` function as `_old_fish_prompt`.
112
+ functions -c fish_prompt _old_fish_prompt
113
+
114
+ function fish_prompt
115
+ # Run the user's prompt first; it might depend on (pipe)status.
116
+ set -l prompt (_old_fish_prompt)
117
+
118
+ printf '(%s) ' $VIRTUAL_ENV_PROMPT
119
+
120
+ string join -- \n $prompt # handle multi-line prompts
121
+ end
122
+
123
+ set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV"
124
+ end
.venv/bin/activate.nu ADDED
@@ -0,0 +1,117 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (c) 2020-202x The virtualenv developers
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining
4
+ # a copy of this software and associated documentation files (the
5
+ # "Software"), to deal in the Software without restriction, including
6
+ # without limitation the rights to use, copy, modify, merge, publish,
7
+ # distribute, sublicense, and/or sell copies of the Software, and to
8
+ # permit persons to whom the Software is furnished to do so, subject to
9
+ # the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be
12
+ # included in all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
22
+ # virtualenv activation module
23
+ # Activate with `overlay use activate.nu`
24
+ # Deactivate with `deactivate`, as usual
25
+ #
26
+ # To customize the overlay name, you can call `overlay use activate.nu as foo`,
27
+ # but then simply `deactivate` won't work because it is just an alias to hide
28
+ # the "activate" overlay. You'd need to call `overlay hide foo` manually.
29
+
30
+ export-env {
31
+ def is-string [x] {
32
+ ($x | describe) == 'string'
33
+ }
34
+
35
+ def has-env [...names] {
36
+ $names | each {|n|
37
+ $n in $env
38
+ } | all {|i| $i == true}
39
+ }
40
+
41
+ # Emulates a `test -z`, but better as it handles e.g 'false'
42
+ def is-env-true [name: string] {
43
+ if (has-env $name) {
44
+ # Try to parse 'true', '0', '1', and fail if not convertible
45
+ let parsed = (do -i { $env | get $name | into bool })
46
+ if ($parsed | describe) == 'bool' {
47
+ $parsed
48
+ } else {
49
+ not ($env | get -i $name | is-empty)
50
+ }
51
+ } else {
52
+ false
53
+ }
54
+ }
55
+
56
+ let virtual_env = '/tmp/LexiFreak-8B-Unleashed/.venv'
57
+ let bin = 'bin'
58
+
59
+ let is_windows = ($nu.os-info.family) == 'windows'
60
+ let path_name = (if (has-env 'Path') {
61
+ 'Path'
62
+ } else {
63
+ 'PATH'
64
+ }
65
+ )
66
+
67
+ let venv_path = ([$virtual_env $bin] | path join)
68
+ let new_path = ($env | get $path_name | prepend $venv_path)
69
+
70
+ # If there is no default prompt, then use the env name instead
71
+ let virtual_env_prompt = (if ('LexiFreak-8B-Unleashed' | is-empty) {
72
+ ($virtual_env | path basename)
73
+ } else {
74
+ 'LexiFreak-8B-Unleashed'
75
+ })
76
+
77
+ let new_env = {
78
+ $path_name : $new_path
79
+ VIRTUAL_ENV : $virtual_env
80
+ VIRTUAL_ENV_PROMPT : $virtual_env_prompt
81
+ }
82
+
83
+ let new_env = (if (is-env-true 'VIRTUAL_ENV_DISABLE_PROMPT') {
84
+ $new_env
85
+ } else {
86
+ # Creating the new prompt for the session
87
+ let virtual_prefix = $'(char lparen)($virtual_env_prompt)(char rparen) '
88
+
89
+ # Back up the old prompt builder
90
+ let old_prompt_command = (if (has-env 'PROMPT_COMMAND') {
91
+ $env.PROMPT_COMMAND
92
+ } else {
93
+ ''
94
+ })
95
+
96
+ let new_prompt = (if (has-env 'PROMPT_COMMAND') {
97
+ if 'closure' in ($old_prompt_command | describe) {
98
+ {|| $'($virtual_prefix)(do $old_prompt_command)' }
99
+ } else {
100
+ {|| $'($virtual_prefix)($old_prompt_command)' }
101
+ }
102
+ } else {
103
+ {|| $'($virtual_prefix)' }
104
+ })
105
+
106
+ $new_env | merge {
107
+ PROMPT_COMMAND : $new_prompt
108
+ VIRTUAL_PREFIX : $virtual_prefix
109
+ }
110
+ })
111
+
112
+ # Environment variables that will be loaded as the virtual env
113
+ load-env $new_env
114
+ }
115
+
116
+ export alias pydoc = python -m pydoc
117
+ export alias deactivate = overlay hide activate
.venv/bin/activate.ps1 ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (c) 2020-202x The virtualenv developers
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining
4
+ # a copy of this software and associated documentation files (the
5
+ # "Software"), to deal in the Software without restriction, including
6
+ # without limitation the rights to use, copy, modify, merge, publish,
7
+ # distribute, sublicense, and/or sell copies of the Software, and to
8
+ # permit persons to whom the Software is furnished to do so, subject to
9
+ # the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be
12
+ # included in all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
22
+ $script:THIS_PATH = $myinvocation.mycommand.path
23
+ $script:BASE_DIR = Split-Path (Resolve-Path "$THIS_PATH/..") -Parent
24
+
25
+ function global:deactivate([switch] $NonDestructive) {
26
+ if (Test-Path variable:_OLD_VIRTUAL_PATH) {
27
+ $env:PATH = $variable:_OLD_VIRTUAL_PATH
28
+ Remove-Variable "_OLD_VIRTUAL_PATH" -Scope global
29
+ }
30
+
31
+ if (Test-Path function:_old_virtual_prompt) {
32
+ $function:prompt = $function:_old_virtual_prompt
33
+ Remove-Item function:\_old_virtual_prompt
34
+ }
35
+
36
+ if ($env:VIRTUAL_ENV) {
37
+ Remove-Item env:VIRTUAL_ENV -ErrorAction SilentlyContinue
38
+ }
39
+
40
+ if ($env:VIRTUAL_ENV_PROMPT) {
41
+ Remove-Item env:VIRTUAL_ENV_PROMPT -ErrorAction SilentlyContinue
42
+ }
43
+
44
+ if (!$NonDestructive) {
45
+ # Self destruct!
46
+ Remove-Item function:deactivate
47
+ Remove-Item function:pydoc
48
+ }
49
+ }
50
+
51
+ function global:pydoc {
52
+ python -m pydoc $args
53
+ }
54
+
55
+ # unset irrelevant variables
56
+ deactivate -nondestructive
57
+
58
+ $VIRTUAL_ENV = $BASE_DIR
59
+ $env:VIRTUAL_ENV = $VIRTUAL_ENV
60
+
61
+ if ("LexiFreak-8B-Unleashed" -ne "") {
62
+ $env:VIRTUAL_ENV_PROMPT = "LexiFreak-8B-Unleashed"
63
+ }
64
+ else {
65
+ $env:VIRTUAL_ENV_PROMPT = $( Split-Path $env:VIRTUAL_ENV -Leaf )
66
+ }
67
+
68
+ New-Variable -Scope global -Name _OLD_VIRTUAL_PATH -Value $env:PATH
69
+
70
+ $env:PATH = "$env:VIRTUAL_ENV/bin:" + $env:PATH
71
+ if (!$env:VIRTUAL_ENV_DISABLE_PROMPT) {
72
+ function global:_old_virtual_prompt {
73
+ ""
74
+ }
75
+ $function:_old_virtual_prompt = $function:prompt
76
+
77
+ function global:prompt {
78
+ # Add the custom prefix to the existing prompt
79
+ $previous_prompt_value = & $function:_old_virtual_prompt
80
+ ("(" + $env:VIRTUAL_ENV_PROMPT + ") " + $previous_prompt_value)
81
+ }
82
+ }
.venv/bin/activate_this.py ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (c) 2020-202x The virtualenv developers
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining
4
+ # a copy of this software and associated documentation files (the
5
+ # "Software"), to deal in the Software without restriction, including
6
+ # without limitation the rights to use, copy, modify, merge, publish,
7
+ # distribute, sublicense, and/or sell copies of the Software, and to
8
+ # permit persons to whom the Software is furnished to do so, subject to
9
+ # the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be
12
+ # included in all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
22
+ """
23
+ Activate virtualenv for current interpreter:
24
+
25
+ import runpy
26
+ runpy.run_path(this_file)
27
+
28
+ This can be used when you must use an existing Python interpreter, not the virtualenv bin/python.
29
+ """ # noqa: D415
30
+
31
+ from __future__ import annotations
32
+
33
+ import os
34
+ import site
35
+ import sys
36
+
37
+ try:
38
+ abs_file = os.path.abspath(__file__)
39
+ except NameError as exc:
40
+ msg = "You must use import runpy; runpy.run_path(this_file)"
41
+ raise AssertionError(msg) from exc
42
+
43
+ bin_dir = os.path.dirname(abs_file)
44
+ base = bin_dir[: -len("bin") - 1] # strip away the bin part from the __file__, plus the path separator
45
+
46
+ # prepend bin to PATH (this file is inside the bin directory)
47
+ os.environ["PATH"] = os.pathsep.join([bin_dir, *os.environ.get("PATH", "").split(os.pathsep)])
48
+ os.environ["VIRTUAL_ENV"] = base # virtual env is right above bin directory
49
+ os.environ["VIRTUAL_ENV_PROMPT"] = "LexiFreak-8B-Unleashed" or os.path.basename(base) # noqa: SIM222
50
+
51
+ # add the virtual environments libraries to the host python import mechanism
52
+ prev_length = len(sys.path)
53
+ for lib in "../lib/python3.11/site-packages".split(os.pathsep):
54
+ path = os.path.realpath(os.path.join(bin_dir, lib))
55
+ site.addsitedir(path)
56
+ sys.path[:] = sys.path[prev_length:] + sys.path[0:prev_length]
57
+
58
+ sys.real_prefix = sys.prefix
59
+ sys.prefix = base
.venv/bin/deactivate.bat ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @REM Copyright (c) 2020-202x The virtualenv developers
2
+ @REM
3
+ @REM Permission is hereby granted, free of charge, to any person obtaining
4
+ @REM a copy of this software and associated documentation files (the
5
+ @REM "Software"), to deal in the Software without restriction, including
6
+ @REM without limitation the rights to use, copy, modify, merge, publish,
7
+ @REM distribute, sublicense, and/or sell copies of the Software, and to
8
+ @REM permit persons to whom the Software is furnished to do so, subject to
9
+ @REM the following conditions:
10
+ @REM
11
+ @REM The above copyright notice and this permission notice shall be
12
+ @REM included in all copies or substantial portions of the Software.
13
+ @REM
14
+ @REM THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ @REM EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ @REM MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ @REM NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ @REM LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ @REM OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ @REM WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
22
+ @set VIRTUAL_ENV=
23
+ @set VIRTUAL_ENV_PROMPT=
24
+
25
+ @REM Don't use () to avoid problems with them in %PATH%
26
+ @if not defined _OLD_VIRTUAL_PROMPT @goto ENDIFVPROMPT
27
+ @set "PROMPT=%_OLD_VIRTUAL_PROMPT%"
28
+ @set _OLD_VIRTUAL_PROMPT=
29
+ :ENDIFVPROMPT
30
+
31
+ @if not defined _OLD_VIRTUAL_PYTHONHOME @goto ENDIFVHOME
32
+ @set "PYTHONHOME=%_OLD_VIRTUAL_PYTHONHOME%"
33
+ @set _OLD_VIRTUAL_PYTHONHOME=
34
+ :ENDIFVHOME
35
+
36
+ @if not defined _OLD_VIRTUAL_PATH @goto ENDIFVPATH
37
+ @set "PATH=%_OLD_VIRTUAL_PATH%"
38
+ @set _OLD_VIRTUAL_PATH=
39
+ :ENDIFVPATH
.venv/bin/hf ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ #!/tmp/LexiFreak-8B-Unleashed/.venv/bin/python3
2
+ # -*- coding: utf-8 -*-
3
+ import re
4
+ import sys
5
+ from huggingface_hub.cli.hf import main
6
+ if __name__ == "__main__":
7
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
8
+ sys.exit(main())
.venv/bin/huggingface-cli ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ #!/tmp/LexiFreak-8B-Unleashed/.venv/bin/python3
2
+ # -*- coding: utf-8 -*-
3
+ import re
4
+ import sys
5
+ from huggingface_hub.commands.huggingface_cli import main
6
+ if __name__ == "__main__":
7
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
8
+ sys.exit(main())
.venv/bin/normalizer ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ #!/tmp/LexiFreak-8B-Unleashed/.venv/bin/python3
2
+ # -*- coding: utf-8 -*-
3
+ import re
4
+ import sys
5
+ from charset_normalizer.cli import cli_detect
6
+ if __name__ == "__main__":
7
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
8
+ sys.exit(cli_detect())
.venv/bin/pydoc.bat ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @REM Copyright (c) 2020-202x The virtualenv developers
2
+ @REM
3
+ @REM Permission is hereby granted, free of charge, to any person obtaining
4
+ @REM a copy of this software and associated documentation files (the
5
+ @REM "Software"), to deal in the Software without restriction, including
6
+ @REM without limitation the rights to use, copy, modify, merge, publish,
7
+ @REM distribute, sublicense, and/or sell copies of the Software, and to
8
+ @REM permit persons to whom the Software is furnished to do so, subject to
9
+ @REM the following conditions:
10
+ @REM
11
+ @REM The above copyright notice and this permission notice shall be
12
+ @REM included in all copies or substantial portions of the Software.
13
+ @REM
14
+ @REM THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ @REM EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ @REM MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ @REM NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ @REM LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ @REM OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ @REM WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
22
+ python.exe -m pydoc %*
.venv/bin/python ADDED
Binary file (20.3 kB). View file
 
.venv/bin/python3 ADDED
Binary file (20.3 kB). View file
 
.venv/bin/python3.11 ADDED
Binary file (20.3 kB). View file
 
.venv/bin/tiny-agents ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ #!/tmp/LexiFreak-8B-Unleashed/.venv/bin/python3
2
+ # -*- coding: utf-8 -*-
3
+ import re
4
+ import sys
5
+ from huggingface_hub.inference._mcp.cli import app
6
+ if __name__ == "__main__":
7
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
8
+ sys.exit(app())
.venv/bin/tqdm ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ #!/tmp/LexiFreak-8B-Unleashed/.venv/bin/python3
2
+ # -*- coding: utf-8 -*-
3
+ import re
4
+ import sys
5
+ from tqdm.cli import main
6
+ if __name__ == "__main__":
7
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
8
+ sys.exit(main())
.venv/lib/python3.11/site-packages/InquirerPy/__init__.py ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ from InquirerPy.resolver import prompt, prompt_async
2
+ from InquirerPy.utils import get_style
.venv/lib/python3.11/site-packages/InquirerPy/enum.py ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ """Module contains common constants."""
2
+ INQUIRERPY_KEYBOARD_INTERRUPT: str = "INQUIRERPY_KEYBOARD_INTERRUPT"
3
+
4
+ INQUIRERPY_POINTER_SEQUENCE: str = "\u276f"
5
+ INQUIRERPY_FILL_CIRCLE_SEQUENCE: str = "\u25c9"
6
+ INQUIRERPY_EMPTY_CIRCLE_SEQUENCE: str = "\u25cb"
7
+ INQUIRERPY_QMARK_SEQUENCE: str = "\u003f"
.venv/lib/python3.11/site-packages/InquirerPy/exceptions.py ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Module contains exceptions that will be raised by `InquirerPy`."""
2
+
3
+
4
+ class InvalidArgument(Exception):
5
+ """Provided argument is invalid.
6
+
7
+ Args:
8
+ message: Exception message.
9
+ """
10
+
11
+ def __init__(self, message: str = "invalid argument"):
12
+ self._message = message
13
+ super().__init__(self._message)
14
+
15
+
16
+ class RequiredKeyNotFound(Exception):
17
+ """Missing required keys in dictionary.
18
+
19
+ Args:
20
+ message: Exception message.
21
+ """
22
+
23
+ def __init__(self, message="required key not found"):
24
+ self.message = message
25
+ super().__init__(self.message)
.venv/lib/python3.11/site-packages/InquirerPy/inquirer.py ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Servers as another entry point for `InquirerPy`.
2
+
3
+ See Also:
4
+ :ref:`index:Alternate Syntax`.
5
+
6
+ `inquirer` directly interact with individual prompt classes. It’s more flexible, easier to customise and also provides IDE type hintings/completions.
7
+ """
8
+ from InquirerPy.prompts import CheckboxPrompt as checkbox
9
+ from InquirerPy.prompts import ConfirmPrompt as confirm
10
+ from InquirerPy.prompts import ExpandPrompt as expand
11
+ from InquirerPy.prompts import FilePathPrompt as filepath
12
+ from InquirerPy.prompts import FuzzyPrompt as fuzzy
13
+ from InquirerPy.prompts import InputPrompt as text
14
+ from InquirerPy.prompts import ListPrompt as select
15
+ from InquirerPy.prompts import NumberPrompt as number
16
+ from InquirerPy.prompts import RawlistPrompt as rawlist
17
+ from InquirerPy.prompts import SecretPrompt as secret
.venv/lib/python3.11/site-packages/InquirerPy/py.typed ADDED
@@ -0,0 +1 @@
 
 
1
+ # Marker file for PEP 561. The InquirerPy package uses inline types.
.venv/lib/python3.11/site-packages/InquirerPy/resolver.py ADDED
@@ -0,0 +1,219 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """This module contains the classic entrypoint for creating prompts.
2
+
3
+ A `PyInquirer <https://github.com/CITGuru/PyInquirer>`_ compatible entrypoint :func:`.prompt`.
4
+ """
5
+ from typing import Any, Dict, List, Optional, Tuple, Union
6
+
7
+ from InquirerPy.exceptions import InvalidArgument, RequiredKeyNotFound
8
+ from InquirerPy.prompts.checkbox import CheckboxPrompt
9
+ from InquirerPy.prompts.confirm import ConfirmPrompt
10
+ from InquirerPy.prompts.expand import ExpandPrompt
11
+ from InquirerPy.prompts.filepath import FilePathPrompt
12
+ from InquirerPy.prompts.fuzzy import FuzzyPrompt
13
+ from InquirerPy.prompts.input import InputPrompt
14
+ from InquirerPy.prompts.list import ListPrompt
15
+ from InquirerPy.prompts.number import NumberPrompt
16
+ from InquirerPy.prompts.rawlist import RawlistPrompt
17
+ from InquirerPy.prompts.secret import SecretPrompt
18
+ from InquirerPy.utils import (
19
+ InquirerPyKeybindings,
20
+ InquirerPyQuestions,
21
+ InquirerPySessionResult,
22
+ get_style,
23
+ )
24
+
25
+ __all__ = ["prompt", "prompt_async"]
26
+
27
+ question_mapping = {
28
+ "confirm": ConfirmPrompt,
29
+ "filepath": FilePathPrompt,
30
+ "password": SecretPrompt,
31
+ "input": InputPrompt,
32
+ "list": ListPrompt,
33
+ "checkbox": CheckboxPrompt,
34
+ "rawlist": RawlistPrompt,
35
+ "expand": ExpandPrompt,
36
+ "fuzzy": FuzzyPrompt,
37
+ "number": NumberPrompt,
38
+ }
39
+
40
+
41
+ def _get_questions(questions: InquirerPyQuestions) -> List[Dict[str, Any]]:
42
+ """Process and validate questions.
43
+
44
+ Args:
45
+ questions: List of questions to create prompt.
46
+
47
+ Returns:
48
+ List of validated questions.
49
+ """
50
+ if isinstance(questions, dict):
51
+ questions = [questions]
52
+
53
+ if not isinstance(questions, list):
54
+ raise InvalidArgument("argument questions should be type of list or dictionary")
55
+
56
+ return questions
57
+
58
+
59
+ def _get_question(
60
+ original_question: Dict[str, Any], result: InquirerPySessionResult, index: int
61
+ ) -> Tuple[Optional[Dict[str, Any]], str, Union[str, int], str]:
62
+ """Get information from individual question.
63
+
64
+ Args:
65
+ original_question: Original question dictionary.
66
+ result: Current prompt session result.
67
+ index: Question index.
68
+
69
+ Returns:
70
+ A tuple containing question information in the order of
71
+ question dictionary, type of question, name of question, message of question.
72
+ """
73
+ question = original_question.copy()
74
+ question_type = question.pop("type")
75
+ question_name = question.pop("name", index)
76
+ message = question.pop("message")
77
+ question_when = question.pop("when", None)
78
+ if question_when and not question_when(result):
79
+ result[question_name] = None
80
+ question = None
81
+ return question, question_type, question_name, message
82
+
83
+
84
+ async def prompt_async(
85
+ questions: InquirerPyQuestions,
86
+ style: Optional[Dict[str, str]] = None,
87
+ vi_mode: bool = False,
88
+ raise_keyboard_interrupt: bool = True,
89
+ keybindings: Optional[InquirerPyKeybindings] = None,
90
+ style_override: bool = True,
91
+ ) -> InquirerPySessionResult:
92
+ """Classic syntax entrypoint to create a prompt session via asynchronous method.
93
+
94
+ Refer to :func:`InquirerPy.resolver.prompt` for detailed documentations.
95
+ """
96
+ result: InquirerPySessionResult = {}
97
+ if not keybindings:
98
+ keybindings = {}
99
+
100
+ questions = _get_questions(questions=questions)
101
+ question_style = get_style(style, style_override)
102
+
103
+ for index, original_question in enumerate(questions):
104
+ try:
105
+ question, question_type, question_name, message = _get_question(
106
+ original_question=original_question, result=result, index=index
107
+ )
108
+ if question is None:
109
+ continue
110
+ args = {
111
+ "message": message,
112
+ "style": question_style,
113
+ "vi_mode": vi_mode,
114
+ "raise_keyboard_interrupt": raise_keyboard_interrupt,
115
+ "session_result": result,
116
+ "keybindings": {**keybindings, **question.pop("keybindings", {})},
117
+ }
118
+ result[question_name] = await question_mapping[question_type](
119
+ **args, **question
120
+ ).execute_async()
121
+ except KeyError:
122
+ raise RequiredKeyNotFound
123
+
124
+ return result
125
+
126
+
127
+ def prompt(
128
+ questions: InquirerPyQuestions,
129
+ style: Optional[Dict[str, str]] = None,
130
+ vi_mode: bool = False,
131
+ raise_keyboard_interrupt: bool = True,
132
+ keybindings: Optional[InquirerPyKeybindings] = None,
133
+ style_override: bool = True,
134
+ ) -> InquirerPySessionResult:
135
+ """Classic syntax entrypoint to create a prompt session.
136
+
137
+ Resolve user provided list of questions, display prompts and get the results.
138
+
139
+ Args:
140
+ questions: A list of :ref:`pages/prompt:question` to ask. Refer to documentation for more info.
141
+ style: A :class:`dict` containing the style specification for the prompt. Refer to :ref:`pages/style:Style` for more info.
142
+ vi_mode: Use vim keybindings for the prompt instead of the default emacs keybindings.
143
+ Refer to :ref:`pages/kb:Keybindings` for more info.
144
+ raise_keyboard_interrupt: Raise the :class:`KeyboardInterrupt` exception when `ctrl-c` is pressed. If false, the result
145
+ will be `None` and the question is skiped.
146
+ keybindings: List of custom :ref:`pages/kb:Keybindings` to apply. Refer to documentation for more info.
147
+ style_override: Override all default styles. When providing any style customisation, all default styles are removed when this is True.
148
+
149
+ Returns:
150
+ A dictionary containing all of the question answers. The key is the name of the question and the value is the
151
+ user answer. If the `name` key is not present as part of the question, then the question index will be used
152
+ as the key.
153
+
154
+ Raises:
155
+ RequiredKeyNotFound: When the question is missing required keys.
156
+ InvalidArgument: When the provided `questions` argument is not a type of :class:`list` nor :class:`dictionary`.
157
+
158
+ Examples:
159
+ >>> from InquirerPy import prompt
160
+ >>> from InquirerPy.validator import NumberValidator
161
+ >>> questions = [
162
+ ... {
163
+ ... "type": "input",
164
+ ... "message": "Enter your age:",
165
+ ... "validate": NumberValidator(),
166
+ ... "invalid_message": "Input should be number.",
167
+ ... "default": "18",
168
+ ... "name": "age",
169
+ ... "filter": lambda result: int(result),
170
+ ... "transformer": lambda result: "Adult" if int(result) >= 18 else "Youth",
171
+ ... },
172
+ ... {
173
+ ... "type": "rawlist",
174
+ ... "message": "What drinks would you like to buy:",
175
+ ... "default": 2,
176
+ ... "choices": lambda result: ["Soda", "Cidr", "Water", "Milk"]
177
+ ... if result["age"] < 18
178
+ ... else ["Wine", "Beer"],
179
+ ... "name": "drink",
180
+ ... },
181
+ ... {
182
+ ... "type": "list",
183
+ ... "message": "Would you like a bag:",
184
+ ... "choices": ["Yes", "No"],
185
+ ... "when": lambda result: result["drink"] in {"Wine", "Beer"},
186
+ ... },
187
+ ... {"type": "confirm", "message": "Confirm?", "default": True},
188
+ ... ]
189
+ >>> result = prompt(questions=questions)
190
+ """
191
+ result: InquirerPySessionResult = {}
192
+ if not keybindings:
193
+ keybindings = {}
194
+
195
+ questions = _get_questions(questions=questions)
196
+ question_style = get_style(style, style_override)
197
+
198
+ for index, original_question in enumerate(questions):
199
+ try:
200
+ question, question_type, question_name, message = _get_question(
201
+ original_question=original_question, result=result, index=index
202
+ )
203
+ if question is None:
204
+ continue
205
+ args = {
206
+ "message": message,
207
+ "style": question_style,
208
+ "vi_mode": vi_mode,
209
+ "raise_keyboard_interrupt": raise_keyboard_interrupt,
210
+ "session_result": result,
211
+ "keybindings": {**keybindings, **question.pop("keybindings", {})},
212
+ }
213
+ result[question_name] = question_mapping[question_type](
214
+ **args, **question
215
+ ).execute()
216
+ except KeyError:
217
+ raise RequiredKeyNotFound
218
+
219
+ return result
.venv/lib/python3.11/site-packages/InquirerPy/separator.py ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Module contains the :class:`.Separator` class."""
2
+
3
+
4
+ class Separator:
5
+ """A non selectable choice that can be used as part of the choices argument in list type prompts.
6
+
7
+ It can be used to create some visual separations between choices in list type prompts.
8
+
9
+ Args:
10
+ line: Content to display as the separator.
11
+
12
+ Example:
13
+ >>> from InquirerPy import inquirer
14
+ >>> choices = [1, 2, Separator(), 3]
15
+ >>> inquirer.select(message="", choices=choices)
16
+ """
17
+
18
+ def __init__(self, line: str = 15 * "-") -> None:
19
+ self._line = line
20
+
21
+ def __str__(self) -> str:
22
+ """Create string representation of `Separator`."""
23
+ return self._line
.venv/lib/python3.11/site-packages/InquirerPy/utils.py ADDED
@@ -0,0 +1,290 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Module contains shared utility functions and typing aliases."""
2
+ import math
3
+ import os
4
+ import shutil
5
+ from typing import (
6
+ TYPE_CHECKING,
7
+ Any,
8
+ Callable,
9
+ Dict,
10
+ List,
11
+ NamedTuple,
12
+ Optional,
13
+ Tuple,
14
+ Union,
15
+ )
16
+
17
+ from prompt_toolkit import print_formatted_text
18
+ from prompt_toolkit.application import run_in_terminal
19
+ from prompt_toolkit.application.current import get_app
20
+ from prompt_toolkit.formatted_text import FormattedText
21
+ from prompt_toolkit.styles import Style
22
+ from prompt_toolkit.validation import Validator
23
+
24
+ from InquirerPy.exceptions import InvalidArgument
25
+
26
+ if TYPE_CHECKING:
27
+ from prompt_toolkit.filters.base import FilterOrBool
28
+
29
+ from InquirerPy.base.control import Choice
30
+
31
+ __all__ = [
32
+ "get_style",
33
+ "calculate_height",
34
+ "InquirerPyStyle",
35
+ "patched_print",
36
+ "color_print",
37
+ ]
38
+
39
+
40
+ class InquirerPyStyle(NamedTuple):
41
+ """`InquirerPy` Style class.
42
+
43
+ Used as a helper class to enforce the method `get_style` to be used
44
+ while also avoiding :class:`dict` to be passed into prompts.
45
+
46
+ Note:
47
+ The class is an instance of :class:`typing.NamedTuple`.
48
+
49
+ Warning:
50
+ You should not directly be using this class besides for type hinting
51
+ purposes. Obtain an instance of this class using :func:`.get_style`.
52
+ """
53
+
54
+ dict: Dict[str, str]
55
+
56
+
57
+ InquirerPySessionResult = Dict[Union[str, int], Optional[Union[str, bool, List[Any]]]]
58
+ InquirerPyChoice = Union[List[Any], List["Choice"], List[Dict[str, Any]]]
59
+ InquirerPyListChoices = Union[
60
+ Callable[["InquirerPySessionResult"], InquirerPyChoice],
61
+ InquirerPyChoice,
62
+ ]
63
+ InquirerPyValidate = Union[Callable[[Any], bool], "Validator"]
64
+ InquirerPyQuestions = Union[List[Dict[str, Any]], Dict[str, Any]]
65
+ InquirerPyMessage = Union[str, Callable[["InquirerPySessionResult"], str]]
66
+ InquirerPyDefault = Union[Any, Callable[["InquirerPySessionResult"], Any]]
67
+ InquirerPyKeybindings = Dict[
68
+ str, List[Dict[str, Union[str, "FilterOrBool", List[str]]]]
69
+ ]
70
+
71
+
72
+ def get_style(
73
+ style: Optional[Dict[str, str]] = None, style_override: bool = True
74
+ ) -> InquirerPyStyle:
75
+ """Obtain an :class:`.InquirerPyStyle` instance which can be consumed by the `style` parameter in prompts.
76
+
77
+ Tip:
78
+ This function supports ENV variables.
79
+
80
+ For all the color ENV variable names, refer to the :ref:`ENV <pages/env:Style>` documentation.
81
+
82
+ Note:
83
+ If no style is provided, then a default theme based on `one dark <https://github.com/joshdick/onedark.vim#color-reference>`_
84
+ color palette is applied.
85
+
86
+ Note:
87
+ Priority: style parameter -> ENV variable -> default style
88
+
89
+ Args:
90
+ style: The dictionary of style classes and their colors, If nothing is passed, the style will be resolved to the :ref:`pages/style:Default Style`.
91
+ style_override: A boolean to determine if the supplied `style` parameter should be merged with the :ref:`pages/style:Default Style` or override them.
92
+ By default, the supplied style will overwrite the :ref:`pages/style:Default Style`.
93
+
94
+ Returns:
95
+ An instance of :class:`.InquirerPyStyle`.
96
+
97
+ Examples:
98
+ >>> from InquirerPy import get_style
99
+ >>> from InquirerPy import inquirer
100
+ >>> style = get_style({"questionmark": "#ffffff", "answer": "#000000"}, style_override=False)
101
+ >>> result = inquirer.confirm(message="Confirm?", style=style).execute()
102
+ """
103
+ if not style_override or style is None:
104
+ if not style:
105
+ style = {}
106
+ result = {
107
+ "questionmark": os.getenv("INQUIRERPY_STYLE_QUESTIONMARK", "#e5c07b"),
108
+ "answermark": os.getenv("INQUIRERPY_STYLE_ANSWERMARK", "#e5c07b"),
109
+ "answer": os.getenv("INQUIRERPY_STYLE_ANSWER", "#61afef"),
110
+ "input": os.getenv("INQUIRERPY_STYLE_INPUT", "#98c379"),
111
+ "question": os.getenv("INQUIRERPY_STYLE_QUESTION", ""),
112
+ "answered_question": os.getenv("INQUIRERPY_STYLE_ANSWERED_QUESTION", ""),
113
+ "instruction": os.getenv("INQUIRERPY_STYLE_INSTRUCTION", "#abb2bf"),
114
+ "long_instruction": os.getenv(
115
+ "INQUIRERPY_STYLE_LONG_INSTRUCTION", "#abb2bf"
116
+ ),
117
+ "pointer": os.getenv("INQUIRERPY_STYLE_POINTER", "#61afef"),
118
+ "checkbox": os.getenv("INQUIRERPY_STYLE_CHECKBOX", "#98c379"),
119
+ "separator": os.getenv("INQUIRERPY_STYLE_SEPARATOR", ""),
120
+ "skipped": os.getenv("INQUIRERPY_STYLE_SKIPPED", "#5c6370"),
121
+ "validator": os.getenv("INQUIRERPY_STYLE_VALIDATOR", ""),
122
+ "marker": os.getenv("INQUIRERPY_STYLE_MARKER", "#e5c07b"),
123
+ "fuzzy_prompt": os.getenv("INQUIRERPY_STYLE_FUZZY_PROMPT", "#c678dd"),
124
+ "fuzzy_info": os.getenv("INQUIRERPY_STYLE_FUZZY_INFO", "#abb2bf"),
125
+ "fuzzy_border": os.getenv("INQUIRERPY_STYLE_FUZZY_BORDER", "#4b5263"),
126
+ "fuzzy_match": os.getenv("INQUIRERPY_STYLE_FUZZY_MATCH", "#c678dd"),
127
+ "spinner_pattern": os.getenv("INQUIRERPY_STYLE_SPINNER_PATTERN", "#e5c07b"),
128
+ "spinner_text": os.getenv("INQUIRERPY_STYLE_SPINNER_TEXT", ""),
129
+ **style,
130
+ }
131
+ else:
132
+ result = {
133
+ "questionmark": os.getenv("INQUIRERPY_STYLE_QUESTIONMARK", ""),
134
+ "answermark": os.getenv("INQUIRERPY_STYLE_ANSWERMARK", ""),
135
+ "answer": os.getenv("INQUIRERPY_STYLE_ANSWER", ""),
136
+ "input": os.getenv("INQUIRERPY_STYLE_INPUT", ""),
137
+ "question": os.getenv("INQUIRERPY_STYLE_QUESTION", ""),
138
+ "answered_question": os.getenv("INQUIRERPY_STYLE_ANSWERED_QUESTION", ""),
139
+ "instruction": os.getenv("INQUIRERPY_STYLE_INSTRUCTION", ""),
140
+ "long_instruction": os.getenv("INQUIRERPY_STYLE_LONG_INSTRUCTION", ""),
141
+ "pointer": os.getenv("INQUIRERPY_STYLE_POINTER", ""),
142
+ "checkbox": os.getenv("INQUIRERPY_STYLE_CHECKBOX", ""),
143
+ "separator": os.getenv("INQUIRERPY_STYLE_SEPARATOR", ""),
144
+ "skipped": os.getenv("INQUIRERPY_STYLE_SKIPPED", ""),
145
+ "validator": os.getenv("INQUIRERPY_STYLE_VALIDATOR", ""),
146
+ "marker": os.getenv("INQUIRERPY_STYLE_MARKER", ""),
147
+ "fuzzy_prompt": os.getenv("INQUIRERPY_STYLE_FUZZY_PROMPT", ""),
148
+ "fuzzy_info": os.getenv("INQUIRERPY_STYLE_FUZZY_INFO", ""),
149
+ "fuzzy_border": os.getenv("INQUIRERPY_STYLE_FUZZY_BORDER", ""),
150
+ "fuzzy_match": os.getenv("INQUIRERPY_STYLE_FUZZY_MATCH", ""),
151
+ "spinner_pattern": os.getenv("INQUIRERPY_STYLE_SPINNER_PATTERN", ""),
152
+ "spinner_text": os.getenv("INQUIRERPY_STYLE_SPINNER_TEXT", ""),
153
+ **style,
154
+ }
155
+
156
+ if result.get("fuzzy_border"):
157
+ result["frame.border"] = result.pop("fuzzy_border")
158
+ if result.get("validator"):
159
+ result["validation-toolbar"] = result.pop("validator")
160
+ result["bottom-toolbar"] = "noreverse"
161
+ return InquirerPyStyle(result)
162
+
163
+
164
+ def calculate_height(
165
+ height: Optional[Union[int, str]],
166
+ max_height: Optional[Union[int, str]],
167
+ height_offset: int = 2,
168
+ ) -> Tuple[Optional[int], int]:
169
+ """Calculate the `height` and `max_height` for the main question contents.
170
+
171
+ Tip:
172
+ The parameter `height`/`max_height` can be specified by either a :class:`string` or :class:`int`.
173
+
174
+ When `height`/`max_height` is :class:`str`:
175
+ It will set the height to a percentage based on the value provided.
176
+ You can optionally add the '%' sign which will be ignored while processing.
177
+
178
+ Example: "60%" or "60" (60% of the current terminal visible lines)
179
+
180
+ When `height`/`max_height` is :class:`int`:
181
+ It will set the height to exact number of lines based on the value provided.
182
+
183
+ Example: 20 (20 lines in terminal)
184
+
185
+ Note:
186
+ If `max_height` is not provided or is None, the default `max_height` will be configured to `70%` for
187
+ best visual presentation in the terminal.
188
+
189
+ Args:
190
+ height: The desired height in either percentage as string or exact value as int.
191
+ max_height: Maximum acceptable height in either percentage as string or exact value as int.
192
+ height_offset: Height offset to apply to the height.
193
+
194
+ Returns:
195
+ A :class:`tuple` with the first value being the desired height and the second value being
196
+ the maximum height.
197
+
198
+ Raises:
199
+ InvalidArgument: The provided `height`/`max_height` is not able to to be converted to int.
200
+
201
+ Examples:
202
+ >>> calculate_height(height="60%", max_height="100%")
203
+ """
204
+ try:
205
+ _, term_lines = shutil.get_terminal_size()
206
+ term_lines = term_lines
207
+ if not height:
208
+ dimmension_height = None
209
+ else:
210
+ if isinstance(height, str):
211
+ height = height.replace("%", "")
212
+ height = int(height)
213
+ dimmension_height = (
214
+ math.floor(term_lines * (height / 100)) - height_offset
215
+ )
216
+ else:
217
+ dimmension_height = height
218
+
219
+ if not max_height:
220
+ max_height = "70%" if not height else "100%"
221
+ if isinstance(max_height, str):
222
+ max_height = max_height.replace("%", "")
223
+ max_height = int(max_height)
224
+ dimmension_max_height = (
225
+ math.floor(term_lines * (max_height / 100)) - height_offset
226
+ )
227
+ else:
228
+ dimmension_max_height = max_height
229
+
230
+ if dimmension_height and dimmension_height > dimmension_max_height:
231
+ dimmension_height = dimmension_max_height
232
+ if dimmension_height and dimmension_height <= 0:
233
+ dimmension_height = 1
234
+ if dimmension_max_height <= 0:
235
+ dimmension_max_height = 1
236
+ return dimmension_height, dimmension_max_height
237
+
238
+ except ValueError:
239
+ raise InvalidArgument(
240
+ "prompt argument height/max_height needs to be type of an int or str"
241
+ )
242
+
243
+
244
+ def patched_print(*values) -> None:
245
+ """Patched :func:`print` that can print values without interrupting the prompt.
246
+
247
+ See Also:
248
+ :func:`print`
249
+ :func:`~prompt_toolkit.application.run_in_terminal`
250
+
251
+ Args:
252
+ *values: Refer to :func:`print`.
253
+
254
+ Examples:
255
+ >>> patched_print("Hello World")
256
+ """
257
+
258
+ def _print():
259
+ print(*values)
260
+
261
+ run_in_terminal(_print)
262
+
263
+
264
+ def color_print(
265
+ formatted_text: List[Tuple[str, str]], style: Optional[Dict[str, str]] = None
266
+ ) -> None:
267
+ """Print colored text leveraging :func:`~prompt_toolkit.shortcuts.print_formatted_text`.
268
+
269
+ This function automatically handles printing the text without interrupting the
270
+ current prompt.
271
+
272
+ Args:
273
+ formatted_text: A list of formatted_text.
274
+ style: Style to apply to `formatted_text` in :class:`dictionary` form.
275
+
276
+ Example:
277
+ >>> color_print(formatted_text=[("class:aa", "hello "), ("class:bb", "world")], style={"aa": "red", "bb": "blue"})
278
+ >>> color_print([("red", "yes"), ("", " "), ("blue", "no")])
279
+ """
280
+
281
+ def _print():
282
+ print_formatted_text(
283
+ FormattedText(formatted_text),
284
+ style=Style.from_dict(style) if style else None,
285
+ )
286
+
287
+ if get_app().is_running:
288
+ run_in_terminal(_print)
289
+ else:
290
+ _print()
.venv/lib/python3.11/site-packages/InquirerPy/validator.py ADDED
@@ -0,0 +1,165 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Module contains pre-built validators."""
2
+ import re
3
+ from pathlib import Path
4
+ from typing import Optional
5
+
6
+ from prompt_toolkit.validation import ValidationError, Validator
7
+
8
+ __all__ = [
9
+ "PathValidator",
10
+ "EmptyInputValidator",
11
+ "PasswordValidator",
12
+ "NumberValidator",
13
+ ]
14
+
15
+
16
+ class NumberValidator(Validator):
17
+ """:class:`~prompt_toolkit.validation.Validator` to validate if input is a number.
18
+
19
+ Args:
20
+ message: Error message to display in the validatation toolbar when validation failed.
21
+ float_allowed: Allow input to contain floating number (with decimal).
22
+ """
23
+
24
+ def __init__(
25
+ self, message: str = "Input should be a number", float_allowed: bool = False
26
+ ) -> None:
27
+ self._message = message
28
+ self._float_allowed = float_allowed
29
+
30
+ def validate(self, document) -> None:
31
+ """Check if user input is a valid number.
32
+
33
+ This method is used internally by `prompt_toolkit <https://python-prompt-toolkit.readthedocs.io/en/master/>`_.
34
+
35
+ See Also:
36
+ https://python-prompt-toolkit.readthedocs.io/en/master/pages/asking_for_input.html?highlight=validator#input-validation
37
+ """
38
+ try:
39
+ if self._float_allowed:
40
+ float(document.text)
41
+ else:
42
+ int(document.text)
43
+ except ValueError:
44
+ raise ValidationError(
45
+ message=self._message, cursor_position=document.cursor_position
46
+ )
47
+
48
+
49
+ class PathValidator(Validator):
50
+ """:class:`~prompt_toolkit.validation.Validator` to validate if input is a valid filepath on the system.
51
+
52
+ Args:
53
+ message: Error message to display in the validatation toolbar when validation failed.
54
+ is_file: Explicitly check if the input is a valid file on the system.
55
+ is_dir: Explicitly check if the input is a valid directory/folder on the system.
56
+ """
57
+
58
+ def __init__(
59
+ self,
60
+ message: str = "Input is not a valid path",
61
+ is_file: bool = False,
62
+ is_dir: bool = False,
63
+ ) -> None:
64
+ self._message = message
65
+ self._is_file = is_file
66
+ self._is_dir = is_dir
67
+
68
+ def validate(self, document) -> None:
69
+ """Check if user input is a filepath that exists on the system based on conditions.
70
+
71
+ This method is used internally by `prompt_toolkit <https://python-prompt-toolkit.readthedocs.io/en/master/>`_.
72
+
73
+ See Also:
74
+ https://python-prompt-toolkit.readthedocs.io/en/master/pages/asking_for_input.html?highlight=validator#input-validation
75
+ """
76
+ path = Path(document.text).expanduser()
77
+ if self._is_file and not path.is_file():
78
+ raise ValidationError(
79
+ message=self._message,
80
+ cursor_position=document.cursor_position,
81
+ )
82
+ elif self._is_dir and not path.is_dir():
83
+ raise ValidationError(
84
+ message=self._message,
85
+ cursor_position=document.cursor_position,
86
+ )
87
+ elif not path.exists():
88
+ raise ValidationError(
89
+ message=self._message,
90
+ cursor_position=document.cursor_position,
91
+ )
92
+
93
+
94
+ class EmptyInputValidator(Validator):
95
+ """:class:`~prompt_toolkit.validation.Validator` to validate if the input is empty.
96
+
97
+ Args:
98
+ message: Error message to display in the validatation toolbar when validation failed.
99
+ """
100
+
101
+ def __init__(self, message: str = "Input cannot be empty") -> None:
102
+ self._message = message
103
+
104
+ def validate(self, document) -> None:
105
+ """Check if user input is empty.
106
+
107
+ This method is used internally by `prompt_toolkit <https://python-prompt-toolkit.readthedocs.io/en/master/>`_.
108
+
109
+ See Also:
110
+ https://python-prompt-toolkit.readthedocs.io/en/master/pages/asking_for_input.html?highlight=validator#input-validation
111
+ """
112
+ if not len(document.text) > 0:
113
+ raise ValidationError(
114
+ message=self._message,
115
+ cursor_position=document.cursor_position,
116
+ )
117
+
118
+
119
+ class PasswordValidator(Validator):
120
+ """:class:`~prompt_toolkit.validation.Validator` to validate password compliance.
121
+
122
+ Args:
123
+ message: Error message to display in the validatation toolbar when validation failed.
124
+ length: The minimum length of the password.
125
+ cap: Password should include at least one capital letter.
126
+ special: Password should include at least one special char "@$!%*#?&".
127
+ number: Password should include at least one number.
128
+ """
129
+
130
+ def __init__(
131
+ self,
132
+ message: str = "Input is not compliant with the password constraints",
133
+ length: Optional[int] = None,
134
+ cap: bool = False,
135
+ special: bool = False,
136
+ number: bool = False,
137
+ ) -> None:
138
+ password_pattern = r"^"
139
+ if cap:
140
+ password_pattern += r"(?=.*[A-Z])"
141
+ if special:
142
+ password_pattern += r"(?=.*[@$!%*#?&])"
143
+ if number:
144
+ password_pattern += r"(?=.*[0-9])"
145
+ password_pattern += r"."
146
+ if length:
147
+ password_pattern += r"{%s,}" % length
148
+ else:
149
+ password_pattern += r"*"
150
+ password_pattern += r"$"
151
+ self._re = re.compile(password_pattern)
152
+ self._message = message
153
+
154
+ def validate(self, document) -> None:
155
+ """Check if user input is compliant with the specified password constraints.
156
+
157
+ This method is used internally by `prompt_toolkit <https://python-prompt-toolkit.readthedocs.io/en/master/>`_.
158
+
159
+ See Also:
160
+ https://python-prompt-toolkit.readthedocs.io/en/master/pages/asking_for_input.html?highlight=validator#input-validation
161
+ """
162
+ if not self._re.match(document.text):
163
+ raise ValidationError(
164
+ message=self._message, cursor_position=document.cursor_position
165
+ )
.venv/lib/python3.11/site-packages/_virtualenv.py ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Patches that are applied at runtime to the virtual environment."""
2
+
3
+ import os
4
+ import sys
5
+
6
+ VIRTUALENV_PATCH_FILE = os.path.join(__file__)
7
+
8
+
9
+ def patch_dist(dist):
10
+ """
11
+ Distutils allows user to configure some arguments via a configuration file:
12
+ https://docs.python.org/3.11/install/index.html#distutils-configuration-files.
13
+
14
+ Some of this arguments though don't make sense in context of the virtual environment files, let's fix them up.
15
+ """ # noqa: D205
16
+ # we cannot allow some install config as that would get packages installed outside of the virtual environment
17
+ old_parse_config_files = dist.Distribution.parse_config_files
18
+
19
+ def parse_config_files(self, *args, **kwargs):
20
+ result = old_parse_config_files(self, *args, **kwargs)
21
+ install = self.get_option_dict("install")
22
+
23
+ if "prefix" in install: # the prefix governs where to install the libraries
24
+ install["prefix"] = VIRTUALENV_PATCH_FILE, os.path.abspath(sys.prefix)
25
+ for base in ("purelib", "platlib", "headers", "scripts", "data"):
26
+ key = f"install_{base}"
27
+ if key in install: # do not allow global configs to hijack venv paths
28
+ install.pop(key, None)
29
+ return result
30
+
31
+ dist.Distribution.parse_config_files = parse_config_files
32
+
33
+
34
+ # Import hook that patches some modules to ignore configuration values that break package installation in case
35
+ # of virtual environments.
36
+ _DISTUTILS_PATCH = "distutils.dist", "setuptools.dist"
37
+ # https://docs.python.org/3/library/importlib.html#setting-up-an-importer
38
+
39
+
40
+ class _Finder:
41
+ """A meta path finder that allows patching the imported distutils modules."""
42
+
43
+ fullname = None
44
+
45
+ # lock[0] is threading.Lock(), but initialized lazily to avoid importing threading very early at startup,
46
+ # because there are gevent-based applications that need to be first to import threading by themselves.
47
+ # See https://github.com/pypa/virtualenv/issues/1895 for details.
48
+ lock = [] # noqa: RUF012
49
+
50
+ def find_spec(self, fullname, path, target=None): # noqa: ARG002
51
+ if fullname in _DISTUTILS_PATCH and self.fullname is None:
52
+ # initialize lock[0] lazily
53
+ if len(self.lock) == 0:
54
+ import threading
55
+
56
+ lock = threading.Lock()
57
+ # there is possibility that two threads T1 and T2 are simultaneously running into find_spec,
58
+ # observing .lock as empty, and further going into hereby initialization. However due to the GIL,
59
+ # list.append() operation is atomic and this way only one of the threads will "win" to put the lock
60
+ # - that every thread will use - into .lock[0].
61
+ # https://docs.python.org/3/faq/library.html#what-kinds-of-global-value-mutation-are-thread-safe
62
+ self.lock.append(lock)
63
+
64
+ from functools import partial
65
+ from importlib.util import find_spec
66
+
67
+ with self.lock[0]:
68
+ self.fullname = fullname
69
+ try:
70
+ spec = find_spec(fullname, path)
71
+ if spec is not None:
72
+ # https://www.python.org/dev/peps/pep-0451/#how-loading-will-work
73
+ is_new_api = hasattr(spec.loader, "exec_module")
74
+ func_name = "exec_module" if is_new_api else "load_module"
75
+ old = getattr(spec.loader, func_name)
76
+ func = self.exec_module if is_new_api else self.load_module
77
+ if old is not func:
78
+ try: # noqa: SIM105
79
+ setattr(spec.loader, func_name, partial(func, old))
80
+ except AttributeError:
81
+ pass # C-Extension loaders are r/o such as zipimporter with <3.7
82
+ return spec
83
+ finally:
84
+ self.fullname = None
85
+ return None
86
+
87
+ @staticmethod
88
+ def exec_module(old, module):
89
+ old(module)
90
+ if module.__name__ in _DISTUTILS_PATCH:
91
+ patch_dist(module)
92
+
93
+ @staticmethod
94
+ def load_module(old, name):
95
+ module = old(name)
96
+ if module.__name__ in _DISTUTILS_PATCH:
97
+ patch_dist(module)
98
+ return module
99
+
100
+
101
+ sys.meta_path.insert(0, _Finder())
.venv/lib/python3.11/site-packages/_yaml/__init__.py ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # This is a stub package designed to roughly emulate the _yaml
2
+ # extension module, which previously existed as a standalone module
3
+ # and has been moved into the `yaml` package namespace.
4
+ # It does not perfectly mimic its old counterpart, but should get
5
+ # close enough for anyone who's relying on it even when they shouldn't.
6
+ import yaml
7
+
8
+ # in some circumstances, the yaml module we imoprted may be from a different version, so we need
9
+ # to tread carefully when poking at it here (it may not have the attributes we expect)
10
+ if not getattr(yaml, '__with_libyaml__', False):
11
+ from sys import version_info
12
+
13
+ exc = ModuleNotFoundError if version_info >= (3, 6) else ImportError
14
+ raise exc("No module named '_yaml'")
15
+ else:
16
+ from yaml._yaml import *
17
+ import warnings
18
+ warnings.warn(
19
+ 'The _yaml extension module is now located at yaml._yaml'
20
+ ' and its location is subject to change. To use the'
21
+ ' LibYAML-based parser and emitter, import from `yaml`:'
22
+ ' `from yaml import CLoader as Loader, CDumper as Dumper`.',
23
+ DeprecationWarning
24
+ )
25
+ del warnings
26
+ # Don't `del yaml` here because yaml is actually an existing
27
+ # namespace member of _yaml.
28
+
29
+ __name__ = '_yaml'
30
+ # If the module is top-level (i.e. not a part of any specific package)
31
+ # then the attribute should be set to ''.
32
+ # https://docs.python.org/3.8/library/types.html
33
+ __package__ = ''
.venv/lib/python3.11/site-packages/pfzy/__init__.py ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ from pfzy.match import fuzzy_match
2
+ from pfzy.score import fzy_scorer, substr_scorer
.venv/lib/python3.11/site-packages/pfzy/match.py ADDED
@@ -0,0 +1,111 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Module contains the async interface to match needle against haystack in batch."""
2
+ import asyncio
3
+ import heapq
4
+ from typing import Any, Callable, Dict, List, Union, cast
5
+
6
+ from pfzy.score import SCORE_INDICES, fzy_scorer
7
+ from pfzy.types import HAYSTACKS
8
+
9
+
10
+ async def _rank_task(
11
+ scorer: Callable[[str, str], SCORE_INDICES],
12
+ needle: str,
13
+ haystacks: List[Union[str, Dict[str, Any]]],
14
+ key: str,
15
+ ) -> List[Dict[str, Any]]:
16
+ """Calculate the score for needle against given list of haystacks and rank them.
17
+
18
+ Args:
19
+ scorer: Scorer to be used to do the calculation.
20
+ needle: Substring to search.
21
+ haystacks: List of dictionary containing the haystack to be searched.
22
+ key: The key within the `haystacks` dictionary that contains the actual string value.
23
+
24
+ Return:
25
+ Sorted list of haystacks based on the needle score with additional keys for the `score`
26
+ and `indices`.
27
+ """
28
+ result = []
29
+ for haystack in haystacks:
30
+ score, indices = scorer(needle, cast(Dict, haystack)[key])
31
+ if indices is None:
32
+ continue
33
+ result.append(
34
+ {
35
+ "score": score,
36
+ "indices": indices,
37
+ "haystack": haystack,
38
+ }
39
+ )
40
+ result.sort(key=lambda x: x["score"], reverse=True)
41
+ return result
42
+
43
+
44
+ async def fuzzy_match(
45
+ needle: str,
46
+ haystacks: HAYSTACKS,
47
+ key: str = "",
48
+ batch_size: int = 4096,
49
+ scorer: Callable[[str, str], SCORE_INDICES] = None,
50
+ ) -> List[Dict[str, Any]]:
51
+ """Fuzzy find the needle within list of haystacks and get matched results with matching index.
52
+
53
+ Note:
54
+ The `key` argument is optional when the provided `haystacks` argument is a list of :class:`str`.
55
+ It will be given a default key `value` if not present.
56
+
57
+ Warning:
58
+ The `key` argument is required when provided `haystacks` argument is a list of :class:`dict`.
59
+ If not present, :class:`TypeError` will be raised.
60
+
61
+ Args:
62
+ needle: String to search within the `haystacks`.
63
+ haystacks: List of haystack/longer strings to be searched.
64
+ key: If `haystacks` is a list of dictionary, provide the key that
65
+ can obtain the haystack value to search.
66
+ batch_size: Number of entry to be processed together.
67
+ scorer (Callable[[str, str], SCORE_indices]): Desired scorer to use. Currently only :func:`~pfzy.score.fzy_scorer` and :func:`~pfzy.score.substr_scorer` is supported.
68
+
69
+ Raises:
70
+ TypeError: When the argument `haystacks` is :class:`list` of :class:`dict` and the `key` argument
71
+ is missing, :class:`TypeError` will be raised.
72
+
73
+ Returns:
74
+ List of matching `haystacks` with additional key indices and score.
75
+
76
+ Examples:
77
+ >>> import asyncio
78
+ >>> asyncio.run(fuzzy_match("ab", ["acb", "acbabc"]))
79
+ [{'value': 'acbabc', 'indices': [3, 4]}, {'value': 'acb', 'indices': [0, 2]}]
80
+ """
81
+ if scorer is None:
82
+ scorer = fzy_scorer
83
+
84
+ for index, haystack in enumerate(haystacks):
85
+ if not isinstance(haystack, dict):
86
+ if not key:
87
+ key = "value"
88
+ haystacks[index] = {key: haystack}
89
+
90
+ if not key:
91
+ raise TypeError(
92
+ f"${fuzzy_match.__name__} missing 1 required argument: 'key', 'key' is required when haystacks is an instance of dict"
93
+ )
94
+
95
+ batches = await asyncio.gather(
96
+ *(
97
+ _rank_task(
98
+ scorer,
99
+ needle,
100
+ haystacks[offset : offset + batch_size],
101
+ key,
102
+ )
103
+ for offset in range(0, len(haystacks), batch_size)
104
+ )
105
+ )
106
+ results = heapq.merge(*batches, key=lambda x: x["score"], reverse=True)
107
+ choices = []
108
+ for candidate in results:
109
+ candidate["haystack"]["indices"] = candidate["indices"]
110
+ choices.append(candidate["haystack"])
111
+ return choices
.venv/lib/python3.11/site-packages/pfzy/score.py ADDED
@@ -0,0 +1,307 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Module contains the score calculation algorithems."""
2
+ from functools import partial
3
+ from typing import Dict, List, Union, cast
4
+
5
+ from pfzy.types import SCORE_INDICES
6
+
7
+ SCORE_MIN = float("-inf")
8
+ SCORE_MAX = float("inf")
9
+ SCORE_GAP_LEADING = -0.005
10
+ SCORE_GAP_TRAILING = -0.005
11
+ SCORE_GAP_INNER = -0.01
12
+ SCORE_MATCH_CONSECUTIVE = 1.0
13
+
14
+
15
+ def _char_range_with(
16
+ char_start: str, char_stop: str, value, hash_table: Dict[str, Union[int, float]]
17
+ ) -> Dict[str, Union[int, float]]:
18
+ """Generate index mapping for `bonus` calculation.
19
+
20
+ Args:
21
+ char_start: Starting char of the range.
22
+ char_stop: Ending char of the range.
23
+ value: Value to give to the range of char.
24
+ hash_table: Base dictionary to add the mapping.
25
+
26
+ Returns:
27
+ A dictionary containing the given range with provided index.
28
+
29
+ Examples:
30
+ >>> _char_range_with("a", "d", 1, {})
31
+ {'a': 1, 'b': 1, 'c': 1, 'd': 1}
32
+ """
33
+ hash_table = hash_table.copy()
34
+ hash_table.update(
35
+ (chr(uni_char), value)
36
+ for uni_char in range(ord(char_start), ord(char_stop) + 1)
37
+ )
38
+ return hash_table
39
+
40
+
41
+ lower_with = partial(_char_range_with, "a", "z")
42
+ upper_with = partial(_char_range_with, "A", "Z")
43
+ digit_with = partial(_char_range_with, "0", "9")
44
+
45
+ SCORE_MATCH_SLASH = 0.9
46
+ SCORE_MATCH_WORD = 0.8
47
+ SCORE_MATCH_CAPITAL = 0.7
48
+ SCORE_MATCH_DOT = 0.6
49
+ BONUS_MAP = {
50
+ "/": SCORE_MATCH_SLASH,
51
+ "-": SCORE_MATCH_WORD,
52
+ "_": SCORE_MATCH_WORD,
53
+ " ": SCORE_MATCH_WORD,
54
+ ".": SCORE_MATCH_DOT,
55
+ }
56
+ BONUS_STATES = [{}, BONUS_MAP, lower_with(SCORE_MATCH_CAPITAL, BONUS_MAP)]
57
+ BONUS_INDEX = cast(Dict[str, int], digit_with(1, lower_with(1, upper_with(2, {}))))
58
+
59
+
60
+ def _bonus(haystack: str) -> List[float]:
61
+ """Calculate bonus score for the given haystack.
62
+
63
+ The bonus are applied to each char based on the previous char.
64
+
65
+ When previous char is within the `BONUS_MAP` then additional bonus
66
+ are applied to the current char due to it might be the start of a new
67
+ word.
68
+
69
+ When encountered a mix case character, if the current char is capitalised then
70
+ if the previous char is normal case or within `BONUS_MAP`, additional bounus are applied.
71
+
72
+ Args:
73
+ haystack: String to calculate bonus.
74
+
75
+ Returns:
76
+ A list of float matching the length of the given haystack
77
+ with each index representing the bonus score to apply.
78
+
79
+ Examples:
80
+ >>> _bonus("asdf")
81
+ [0.9, 0, 0, 0]
82
+ >>> _bonus("asdf asdf")
83
+ [0.9, 0, 0, 0, 0, 0.8, 0, 0, 0]
84
+ >>> _bonus("asdf aSdf")
85
+ [0.9, 0, 0, 0, 0, 0.8, 0.7, 0, 0]
86
+ >>> _bonus("asdf/aSdf")
87
+ [0.9, 0, 0, 0, 0, 0.9, 0.7, 0, 0]
88
+ """
89
+ prev_char = "/"
90
+ bonus = []
91
+ for char in haystack:
92
+ bonus.append(BONUS_STATES[BONUS_INDEX.get(char, 0)].get(prev_char, 0))
93
+ prev_char = char
94
+ return bonus
95
+
96
+
97
+ def _score(needle: str, haystack: str) -> SCORE_INDICES:
98
+ """Use fzy logic to calculate score for `needle` within the given `haystack`.
99
+
100
+ 2 2D array to track the score.
101
+ 1. The running score (`running_score`) which represents the best score for the current position.
102
+ 2. The result score (`result_score`) which tracks to overall best score that could be for the current positon.
103
+
104
+ With every consequtive match, additional bonuse score are given and for every non matching char, a negative
105
+ gap score is applied.
106
+
107
+ After the score is calculated, the final matching score will be stored at the last position of the `result_score`.
108
+
109
+ Backtrack the result by comparing the 2 2D array to find the corresponding indices.
110
+
111
+ Args:
112
+ needle: Substring to find in haystack.
113
+ haystack: String to be searched and scored.
114
+
115
+ Returns:
116
+ A tuple of matching score with a list of matching indices.
117
+ """
118
+ needle_len, haystack_len = len(needle), len(haystack)
119
+ bonus_score = _bonus(haystack)
120
+
121
+ # smart case
122
+ if needle.islower():
123
+ haystack = haystack.lower()
124
+
125
+ # return all values if no query
126
+ if needle_len == 0 or needle_len == haystack_len:
127
+ return SCORE_MAX, list(range(needle_len))
128
+
129
+ # best score for the position
130
+ running_score: List[List[float]] = [
131
+ [0 for _ in range(haystack_len)] for _ in range(needle_len)
132
+ ]
133
+
134
+ # overall best score at each position
135
+ result_score: List[List[float]] = [
136
+ [0 for _ in range(haystack_len)] for _ in range(needle_len)
137
+ ]
138
+
139
+ for i in range(needle_len):
140
+ prev_score = SCORE_MIN
141
+
142
+ # gap between matching char
143
+ # more gaps, less score
144
+ gap_score = SCORE_GAP_TRAILING if i == needle_len - 1 else SCORE_GAP_INNER
145
+
146
+ for j in range(haystack_len):
147
+ if needle[i] == haystack[j]:
148
+ score = SCORE_MIN
149
+ if i == 0:
150
+ score = j * SCORE_GAP_LEADING + bonus_score[j]
151
+ elif j != 0:
152
+ score = max(
153
+ result_score[i - 1][j - 1] + bonus_score[j],
154
+ # consecutive match if value is higher
155
+ running_score[i - 1][j - 1] + SCORE_MATCH_CONSECUTIVE,
156
+ )
157
+ running_score[i][j] = score
158
+ result_score[i][j] = prev_score = max(score, prev_score + gap_score)
159
+ else:
160
+ running_score[i][j] = SCORE_MIN
161
+ # increment the best score with gap_score since no match
162
+ result_score[i][j] = prev_score = prev_score + gap_score
163
+
164
+ # backtrace to find the all indices of optimal matching
165
+ # starting from the end to pick the first possible match we encounter
166
+ i, j = needle_len - 1, haystack_len - 1
167
+ # use to determine if the current match is consequtive match
168
+ match_required = False
169
+ indices = [0 for _ in range(needle_len)]
170
+
171
+ while i >= 0:
172
+ while j >= 0:
173
+ # if the prev score is determined to be consecutive match
174
+ # then the current position must be a match
175
+ # e.g. haystack, needle = "auibywcabc", "abc"
176
+ # using match_required: [7, 8, 9]
177
+ # without match_required: [0, 8, 9]
178
+ if (
179
+ match_required or running_score[i][j] == result_score[i][j]
180
+ ) and running_score[i][j] != SCORE_MIN:
181
+ match_required = (
182
+ i > 0
183
+ and j > 0
184
+ and result_score[i][j]
185
+ == running_score[i - 1][j - 1] + SCORE_MATCH_CONSECUTIVE
186
+ )
187
+ indices[i] = j
188
+ j -= 1
189
+ break
190
+ else:
191
+ j -= 1
192
+ i -= 1
193
+
194
+ return result_score[needle_len - 1][haystack_len - 1], indices
195
+
196
+
197
+ def _subsequence(needle: str, haystack: str) -> bool:
198
+ """Check if needle is subsequence of haystack.
199
+
200
+ Args:
201
+ needle: Substring to find in haystack.
202
+ haystack: String to be searched and scored.
203
+
204
+ Returns:
205
+ Boolean indicating if `needle` is subsequence of `haystack`.
206
+
207
+ Examples:
208
+ >>> _subsequence("as", "bbwi")
209
+ False
210
+ >>> _subsequence("as", "bbaiws")
211
+ True
212
+ >>> _subsequence("sa", "bbaiws")
213
+ False
214
+ """
215
+ needle, haystack = needle.lower(), haystack.lower()
216
+ if not needle:
217
+ return True
218
+ offset = 0
219
+ for char in needle:
220
+ offset = haystack.find(char, offset) + 1
221
+ if offset <= 0:
222
+ return False
223
+ return True
224
+
225
+
226
+ def fzy_scorer(needle: str, haystack: str) -> SCORE_INDICES:
227
+ """Use fzy matching algorithem to match needle against haystack.
228
+
229
+ Note:
230
+ The `fzf` unordered search is not supported for performance concern.
231
+ When the provided `needle` is not a subsequence of `haystack` at all,
232
+ then `(-inf, None)` is returned.
233
+
234
+ See Also:
235
+ https://github.com/jhawthorn/fzy/blob/master/src/match.c
236
+
237
+ Args:
238
+ needle: Substring to find in haystack.
239
+ haystack: String to be searched and scored against.
240
+
241
+ Returns:
242
+ A tuple of matching score with a list of matching indices.
243
+
244
+ Examples:
245
+ >>> fzy_scorer("ab", "acb")
246
+ (0.89, [0, 2])
247
+ >>> fzy_scorer("ab", "acbabc")
248
+ (0.98, [3, 4])
249
+ >>> fzy_scorer("ab", "wc")
250
+ (-inf, None)
251
+ """
252
+ if _subsequence(needle, haystack):
253
+ return _score(needle, haystack)
254
+ else:
255
+ return SCORE_MIN, None
256
+
257
+
258
+ def substr_scorer(needle: str, haystack: str) -> SCORE_INDICES:
259
+ """Match needle against haystack using :meth:`str.find`.
260
+
261
+ Note:
262
+ Scores may be negative but the higher the score, the higher
263
+ the match rank. `-inf` score means no match found.
264
+
265
+ See Also:
266
+ https://github.com/aslpavel/sweep.py/blob/3f4a179b708059c12b9e5d76d1eb3c70bf2caadc/sweep.py#L837
267
+
268
+ Args:
269
+ needle: Substring to find in haystack.
270
+ haystack: String to be searched and scored against.
271
+
272
+ Returns:
273
+ A tuple of matching score with a list of matching indices.
274
+
275
+ Example:
276
+ >>> substr_scorer("ab", "awsab")
277
+ (-1.3, [3, 4])
278
+ >>> substr_scorer("ab", "abc")
279
+ (0.5, [0, 1])
280
+ >>> substr_scorer("ab", "iop")
281
+ (-inf, None)
282
+ >>> substr_scorer("ab", "asdafswabc")
283
+ (-1.6388888888888888, [7, 8])
284
+ >>> substr_scorer(" ", "asdf")
285
+ (0, [])
286
+ """
287
+ indices = []
288
+ offset = 0
289
+ needle, haystack = needle.lower(), haystack.lower()
290
+
291
+ for needle in needle.split(" "):
292
+ if not needle:
293
+ continue
294
+ offset = haystack.find(needle, offset)
295
+ if offset < 0:
296
+ return SCORE_MIN, None
297
+ needle_len = len(needle)
298
+ indices.extend(range(offset, offset + needle_len))
299
+ offset += needle_len
300
+
301
+ if not indices:
302
+ return 0, indices
303
+
304
+ return (
305
+ -(indices[-1] + 1 - indices[0]) + 2 / (indices[0] + 1) + 1 / (indices[-1] + 1),
306
+ indices,
307
+ )
.venv/lib/python3.11/site-packages/pfzy/types.py ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ """Module contains typing aliases."""
2
+ from typing import Any, Dict, List, Optional, Tuple, Union
3
+
4
+ SCORE_INDICES = Tuple[float, Optional[List[int]]]
5
+ HAYSTACKS = List[Union[str, Dict[str, Any]]]
.venv/lib/python3.11/site-packages/typing_extensions.py ADDED
The diff for this file is too large to render. See raw diff
 
.venv/lib/python3.11/site-packages/urllib3-2.5.0.dist-info/licenses/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ MIT License
2
+
3
+ Copyright (c) 2008-2020 Andrey Petrov and contributors.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
.venv/lib/python3.11/site-packages/urllib3/__init__.py ADDED
@@ -0,0 +1,211 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Python HTTP library with thread-safe connection pooling, file post support, user friendly, and more
3
+ """
4
+
5
+ from __future__ import annotations
6
+
7
+ # Set default logging handler to avoid "No handler found" warnings.
8
+ import logging
9
+ import sys
10
+ import typing
11
+ import warnings
12
+ from logging import NullHandler
13
+
14
+ from . import exceptions
15
+ from ._base_connection import _TYPE_BODY
16
+ from ._collections import HTTPHeaderDict
17
+ from ._version import __version__
18
+ from .connectionpool import HTTPConnectionPool, HTTPSConnectionPool, connection_from_url
19
+ from .filepost import _TYPE_FIELDS, encode_multipart_formdata
20
+ from .poolmanager import PoolManager, ProxyManager, proxy_from_url
21
+ from .response import BaseHTTPResponse, HTTPResponse
22
+ from .util.request import make_headers
23
+ from .util.retry import Retry
24
+ from .util.timeout import Timeout
25
+
26
+ # Ensure that Python is compiled with OpenSSL 1.1.1+
27
+ # If the 'ssl' module isn't available at all that's
28
+ # fine, we only care if the module is available.
29
+ try:
30
+ import ssl
31
+ except ImportError:
32
+ pass
33
+ else:
34
+ if not ssl.OPENSSL_VERSION.startswith("OpenSSL "): # Defensive:
35
+ warnings.warn(
36
+ "urllib3 v2 only supports OpenSSL 1.1.1+, currently "
37
+ f"the 'ssl' module is compiled with {ssl.OPENSSL_VERSION!r}. "
38
+ "See: https://github.com/urllib3/urllib3/issues/3020",
39
+ exceptions.NotOpenSSLWarning,
40
+ )
41
+ elif ssl.OPENSSL_VERSION_INFO < (1, 1, 1): # Defensive:
42
+ raise ImportError(
43
+ "urllib3 v2 only supports OpenSSL 1.1.1+, currently "
44
+ f"the 'ssl' module is compiled with {ssl.OPENSSL_VERSION!r}. "
45
+ "See: https://github.com/urllib3/urllib3/issues/2168"
46
+ )
47
+
48
+ __author__ = "Andrey Petrov (andrey.petrov@shazow.net)"
49
+ __license__ = "MIT"
50
+ __version__ = __version__
51
+
52
+ __all__ = (
53
+ "HTTPConnectionPool",
54
+ "HTTPHeaderDict",
55
+ "HTTPSConnectionPool",
56
+ "PoolManager",
57
+ "ProxyManager",
58
+ "HTTPResponse",
59
+ "Retry",
60
+ "Timeout",
61
+ "add_stderr_logger",
62
+ "connection_from_url",
63
+ "disable_warnings",
64
+ "encode_multipart_formdata",
65
+ "make_headers",
66
+ "proxy_from_url",
67
+ "request",
68
+ "BaseHTTPResponse",
69
+ )
70
+
71
+ logging.getLogger(__name__).addHandler(NullHandler())
72
+
73
+
74
+ def add_stderr_logger(
75
+ level: int = logging.DEBUG,
76
+ ) -> logging.StreamHandler[typing.TextIO]:
77
+ """
78
+ Helper for quickly adding a StreamHandler to the logger. Useful for
79
+ debugging.
80
+
81
+ Returns the handler after adding it.
82
+ """
83
+ # This method needs to be in this __init__.py to get the __name__ correct
84
+ # even if urllib3 is vendored within another package.
85
+ logger = logging.getLogger(__name__)
86
+ handler = logging.StreamHandler()
87
+ handler.setFormatter(logging.Formatter("%(asctime)s %(levelname)s %(message)s"))
88
+ logger.addHandler(handler)
89
+ logger.setLevel(level)
90
+ logger.debug("Added a stderr logging handler to logger: %s", __name__)
91
+ return handler
92
+
93
+
94
+ # ... Clean up.
95
+ del NullHandler
96
+
97
+
98
+ # All warning filters *must* be appended unless you're really certain that they
99
+ # shouldn't be: otherwise, it's very hard for users to use most Python
100
+ # mechanisms to silence them.
101
+ # SecurityWarning's always go off by default.
102
+ warnings.simplefilter("always", exceptions.SecurityWarning, append=True)
103
+ # InsecurePlatformWarning's don't vary between requests, so we keep it default.
104
+ warnings.simplefilter("default", exceptions.InsecurePlatformWarning, append=True)
105
+
106
+
107
+ def disable_warnings(category: type[Warning] = exceptions.HTTPWarning) -> None:
108
+ """
109
+ Helper for quickly disabling all urllib3 warnings.
110
+ """
111
+ warnings.simplefilter("ignore", category)
112
+
113
+
114
+ _DEFAULT_POOL = PoolManager()
115
+
116
+
117
+ def request(
118
+ method: str,
119
+ url: str,
120
+ *,
121
+ body: _TYPE_BODY | None = None,
122
+ fields: _TYPE_FIELDS | None = None,
123
+ headers: typing.Mapping[str, str] | None = None,
124
+ preload_content: bool | None = True,
125
+ decode_content: bool | None = True,
126
+ redirect: bool | None = True,
127
+ retries: Retry | bool | int | None = None,
128
+ timeout: Timeout | float | int | None = 3,
129
+ json: typing.Any | None = None,
130
+ ) -> BaseHTTPResponse:
131
+ """
132
+ A convenience, top-level request method. It uses a module-global ``PoolManager`` instance.
133
+ Therefore, its side effects could be shared across dependencies relying on it.
134
+ To avoid side effects create a new ``PoolManager`` instance and use it instead.
135
+ The method does not accept low-level ``**urlopen_kw`` keyword arguments.
136
+
137
+ :param method:
138
+ HTTP request method (such as GET, POST, PUT, etc.)
139
+
140
+ :param url:
141
+ The URL to perform the request on.
142
+
143
+ :param body:
144
+ Data to send in the request body, either :class:`str`, :class:`bytes`,
145
+ an iterable of :class:`str`/:class:`bytes`, or a file-like object.
146
+
147
+ :param fields:
148
+ Data to encode and send in the request body.
149
+
150
+ :param headers:
151
+ Dictionary of custom headers to send, such as User-Agent,
152
+ If-None-Match, etc.
153
+
154
+ :param bool preload_content:
155
+ If True, the response's body will be preloaded into memory.
156
+
157
+ :param bool decode_content:
158
+ If True, will attempt to decode the body based on the
159
+ 'content-encoding' header.
160
+
161
+ :param redirect:
162
+ If True, automatically handle redirects (status codes 301, 302,
163
+ 303, 307, 308). Each redirect counts as a retry. Disabling retries
164
+ will disable redirect, too.
165
+
166
+ :param retries:
167
+ Configure the number of retries to allow before raising a
168
+ :class:`~urllib3.exceptions.MaxRetryError` exception.
169
+
170
+ If ``None`` (default) will retry 3 times, see ``Retry.DEFAULT``. Pass a
171
+ :class:`~urllib3.util.retry.Retry` object for fine-grained control
172
+ over different types of retries.
173
+ Pass an integer number to retry connection errors that many times,
174
+ but no other types of errors. Pass zero to never retry.
175
+
176
+ If ``False``, then retries are disabled and any exception is raised
177
+ immediately. Also, instead of raising a MaxRetryError on redirects,
178
+ the redirect response will be returned.
179
+
180
+ :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int.
181
+
182
+ :param timeout:
183
+ If specified, overrides the default timeout for this one
184
+ request. It may be a float (in seconds) or an instance of
185
+ :class:`urllib3.util.Timeout`.
186
+
187
+ :param json:
188
+ Data to encode and send as JSON with UTF-encoded in the request body.
189
+ The ``"Content-Type"`` header will be set to ``"application/json"``
190
+ unless specified otherwise.
191
+ """
192
+
193
+ return _DEFAULT_POOL.request(
194
+ method,
195
+ url,
196
+ body=body,
197
+ fields=fields,
198
+ headers=headers,
199
+ preload_content=preload_content,
200
+ decode_content=decode_content,
201
+ redirect=redirect,
202
+ retries=retries,
203
+ timeout=timeout,
204
+ json=json,
205
+ )
206
+
207
+
208
+ if sys.platform == "emscripten":
209
+ from .contrib.emscripten import inject_into_urllib3 # noqa: 401
210
+
211
+ inject_into_urllib3()
.venv/lib/python3.11/site-packages/urllib3/_collections.py ADDED
@@ -0,0 +1,479 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from __future__ import annotations
2
+
3
+ import typing
4
+ from collections import OrderedDict
5
+ from enum import Enum, auto
6
+ from threading import RLock
7
+
8
+ if typing.TYPE_CHECKING:
9
+ # We can only import Protocol if TYPE_CHECKING because it's a development
10
+ # dependency, and is not available at runtime.
11
+ from typing import Protocol
12
+
13
+ from typing_extensions import Self
14
+
15
+ class HasGettableStringKeys(Protocol):
16
+ def keys(self) -> typing.Iterator[str]: ...
17
+
18
+ def __getitem__(self, key: str) -> str: ...
19
+
20
+
21
+ __all__ = ["RecentlyUsedContainer", "HTTPHeaderDict"]
22
+
23
+
24
+ # Key type
25
+ _KT = typing.TypeVar("_KT")
26
+ # Value type
27
+ _VT = typing.TypeVar("_VT")
28
+ # Default type
29
+ _DT = typing.TypeVar("_DT")
30
+
31
+ ValidHTTPHeaderSource = typing.Union[
32
+ "HTTPHeaderDict",
33
+ typing.Mapping[str, str],
34
+ typing.Iterable[tuple[str, str]],
35
+ "HasGettableStringKeys",
36
+ ]
37
+
38
+
39
+ class _Sentinel(Enum):
40
+ not_passed = auto()
41
+
42
+
43
+ def ensure_can_construct_http_header_dict(
44
+ potential: object,
45
+ ) -> ValidHTTPHeaderSource | None:
46
+ if isinstance(potential, HTTPHeaderDict):
47
+ return potential
48
+ elif isinstance(potential, typing.Mapping):
49
+ # Full runtime checking of the contents of a Mapping is expensive, so for the
50
+ # purposes of typechecking, we assume that any Mapping is the right shape.
51
+ return typing.cast(typing.Mapping[str, str], potential)
52
+ elif isinstance(potential, typing.Iterable):
53
+ # Similarly to Mapping, full runtime checking of the contents of an Iterable is
54
+ # expensive, so for the purposes of typechecking, we assume that any Iterable
55
+ # is the right shape.
56
+ return typing.cast(typing.Iterable[tuple[str, str]], potential)
57
+ elif hasattr(potential, "keys") and hasattr(potential, "__getitem__"):
58
+ return typing.cast("HasGettableStringKeys", potential)
59
+ else:
60
+ return None
61
+
62
+
63
+ class RecentlyUsedContainer(typing.Generic[_KT, _VT], typing.MutableMapping[_KT, _VT]):
64
+ """
65
+ Provides a thread-safe dict-like container which maintains up to
66
+ ``maxsize`` keys while throwing away the least-recently-used keys beyond
67
+ ``maxsize``.
68
+
69
+ :param maxsize:
70
+ Maximum number of recent elements to retain.
71
+
72
+ :param dispose_func:
73
+ Every time an item is evicted from the container,
74
+ ``dispose_func(value)`` is called. Callback which will get called
75
+ """
76
+
77
+ _container: typing.OrderedDict[_KT, _VT]
78
+ _maxsize: int
79
+ dispose_func: typing.Callable[[_VT], None] | None
80
+ lock: RLock
81
+
82
+ def __init__(
83
+ self,
84
+ maxsize: int = 10,
85
+ dispose_func: typing.Callable[[_VT], None] | None = None,
86
+ ) -> None:
87
+ super().__init__()
88
+ self._maxsize = maxsize
89
+ self.dispose_func = dispose_func
90
+ self._container = OrderedDict()
91
+ self.lock = RLock()
92
+
93
+ def __getitem__(self, key: _KT) -> _VT:
94
+ # Re-insert the item, moving it to the end of the eviction line.
95
+ with self.lock:
96
+ item = self._container.pop(key)
97
+ self._container[key] = item
98
+ return item
99
+
100
+ def __setitem__(self, key: _KT, value: _VT) -> None:
101
+ evicted_item = None
102
+ with self.lock:
103
+ # Possibly evict the existing value of 'key'
104
+ try:
105
+ # If the key exists, we'll overwrite it, which won't change the
106
+ # size of the pool. Because accessing a key should move it to
107
+ # the end of the eviction line, we pop it out first.
108
+ evicted_item = key, self._container.pop(key)
109
+ self._container[key] = value
110
+ except KeyError:
111
+ # When the key does not exist, we insert the value first so that
112
+ # evicting works in all cases, including when self._maxsize is 0
113
+ self._container[key] = value
114
+ if len(self._container) > self._maxsize:
115
+ # If we didn't evict an existing value, and we've hit our maximum
116
+ # size, then we have to evict the least recently used item from
117
+ # the beginning of the container.
118
+ evicted_item = self._container.popitem(last=False)
119
+
120
+ # After releasing the lock on the pool, dispose of any evicted value.
121
+ if evicted_item is not None and self.dispose_func:
122
+ _, evicted_value = evicted_item
123
+ self.dispose_func(evicted_value)
124
+
125
+ def __delitem__(self, key: _KT) -> None:
126
+ with self.lock:
127
+ value = self._container.pop(key)
128
+
129
+ if self.dispose_func:
130
+ self.dispose_func(value)
131
+
132
+ def __len__(self) -> int:
133
+ with self.lock:
134
+ return len(self._container)
135
+
136
+ def __iter__(self) -> typing.NoReturn:
137
+ raise NotImplementedError(
138
+ "Iteration over this class is unlikely to be threadsafe."
139
+ )
140
+
141
+ def clear(self) -> None:
142
+ with self.lock:
143
+ # Copy pointers to all values, then wipe the mapping
144
+ values = list(self._container.values())
145
+ self._container.clear()
146
+
147
+ if self.dispose_func:
148
+ for value in values:
149
+ self.dispose_func(value)
150
+
151
+ def keys(self) -> set[_KT]: # type: ignore[override]
152
+ with self.lock:
153
+ return set(self._container.keys())
154
+
155
+
156
+ class HTTPHeaderDictItemView(set[tuple[str, str]]):
157
+ """
158
+ HTTPHeaderDict is unusual for a Mapping[str, str] in that it has two modes of
159
+ address.
160
+
161
+ If we directly try to get an item with a particular name, we will get a string
162
+ back that is the concatenated version of all the values:
163
+
164
+ >>> d['X-Header-Name']
165
+ 'Value1, Value2, Value3'
166
+
167
+ However, if we iterate over an HTTPHeaderDict's items, we will optionally combine
168
+ these values based on whether combine=True was called when building up the dictionary
169
+
170
+ >>> d = HTTPHeaderDict({"A": "1", "B": "foo"})
171
+ >>> d.add("A", "2", combine=True)
172
+ >>> d.add("B", "bar")
173
+ >>> list(d.items())
174
+ [
175
+ ('A', '1, 2'),
176
+ ('B', 'foo'),
177
+ ('B', 'bar'),
178
+ ]
179
+
180
+ This class conforms to the interface required by the MutableMapping ABC while
181
+ also giving us the nonstandard iteration behavior we want; items with duplicate
182
+ keys, ordered by time of first insertion.
183
+ """
184
+
185
+ _headers: HTTPHeaderDict
186
+
187
+ def __init__(self, headers: HTTPHeaderDict) -> None:
188
+ self._headers = headers
189
+
190
+ def __len__(self) -> int:
191
+ return len(list(self._headers.iteritems()))
192
+
193
+ def __iter__(self) -> typing.Iterator[tuple[str, str]]:
194
+ return self._headers.iteritems()
195
+
196
+ def __contains__(self, item: object) -> bool:
197
+ if isinstance(item, tuple) and len(item) == 2:
198
+ passed_key, passed_val = item
199
+ if isinstance(passed_key, str) and isinstance(passed_val, str):
200
+ return self._headers._has_value_for_header(passed_key, passed_val)
201
+ return False
202
+
203
+
204
+ class HTTPHeaderDict(typing.MutableMapping[str, str]):
205
+ """
206
+ :param headers:
207
+ An iterable of field-value pairs. Must not contain multiple field names
208
+ when compared case-insensitively.
209
+
210
+ :param kwargs:
211
+ Additional field-value pairs to pass in to ``dict.update``.
212
+
213
+ A ``dict`` like container for storing HTTP Headers.
214
+
215
+ Field names are stored and compared case-insensitively in compliance with
216
+ RFC 7230. Iteration provides the first case-sensitive key seen for each
217
+ case-insensitive pair.
218
+
219
+ Using ``__setitem__`` syntax overwrites fields that compare equal
220
+ case-insensitively in order to maintain ``dict``'s api. For fields that
221
+ compare equal, instead create a new ``HTTPHeaderDict`` and use ``.add``
222
+ in a loop.
223
+
224
+ If multiple fields that are equal case-insensitively are passed to the
225
+ constructor or ``.update``, the behavior is undefined and some will be
226
+ lost.
227
+
228
+ >>> headers = HTTPHeaderDict()
229
+ >>> headers.add('Set-Cookie', 'foo=bar')
230
+ >>> headers.add('set-cookie', 'baz=quxx')
231
+ >>> headers['content-length'] = '7'
232
+ >>> headers['SET-cookie']
233
+ 'foo=bar, baz=quxx'
234
+ >>> headers['Content-Length']
235
+ '7'
236
+ """
237
+
238
+ _container: typing.MutableMapping[str, list[str]]
239
+
240
+ def __init__(self, headers: ValidHTTPHeaderSource | None = None, **kwargs: str):
241
+ super().__init__()
242
+ self._container = {} # 'dict' is insert-ordered
243
+ if headers is not None:
244
+ if isinstance(headers, HTTPHeaderDict):
245
+ self._copy_from(headers)
246
+ else:
247
+ self.extend(headers)
248
+ if kwargs:
249
+ self.extend(kwargs)
250
+
251
+ def __setitem__(self, key: str, val: str) -> None:
252
+ # avoid a bytes/str comparison by decoding before httplib
253
+ if isinstance(key, bytes):
254
+ key = key.decode("latin-1")
255
+ self._container[key.lower()] = [key, val]
256
+
257
+ def __getitem__(self, key: str) -> str:
258
+ val = self._container[key.lower()]
259
+ return ", ".join(val[1:])
260
+
261
+ def __delitem__(self, key: str) -> None:
262
+ del self._container[key.lower()]
263
+
264
+ def __contains__(self, key: object) -> bool:
265
+ if isinstance(key, str):
266
+ return key.lower() in self._container
267
+ return False
268
+
269
+ def setdefault(self, key: str, default: str = "") -> str:
270
+ return super().setdefault(key, default)
271
+
272
+ def __eq__(self, other: object) -> bool:
273
+ maybe_constructable = ensure_can_construct_http_header_dict(other)
274
+ if maybe_constructable is None:
275
+ return False
276
+ else:
277
+ other_as_http_header_dict = type(self)(maybe_constructable)
278
+
279
+ return {k.lower(): v for k, v in self.itermerged()} == {
280
+ k.lower(): v for k, v in other_as_http_header_dict.itermerged()
281
+ }
282
+
283
+ def __ne__(self, other: object) -> bool:
284
+ return not self.__eq__(other)
285
+
286
+ def __len__(self) -> int:
287
+ return len(self._container)
288
+
289
+ def __iter__(self) -> typing.Iterator[str]:
290
+ # Only provide the originally cased names
291
+ for vals in self._container.values():
292
+ yield vals[0]
293
+
294
+ def discard(self, key: str) -> None:
295
+ try:
296
+ del self[key]
297
+ except KeyError:
298
+ pass
299
+
300
+ def add(self, key: str, val: str, *, combine: bool = False) -> None:
301
+ """Adds a (name, value) pair, doesn't overwrite the value if it already
302
+ exists.
303
+
304
+ If this is called with combine=True, instead of adding a new header value
305
+ as a distinct item during iteration, this will instead append the value to
306
+ any existing header value with a comma. If no existing header value exists
307
+ for the key, then the value will simply be added, ignoring the combine parameter.
308
+
309
+ >>> headers = HTTPHeaderDict(foo='bar')
310
+ >>> headers.add('Foo', 'baz')
311
+ >>> headers['foo']
312
+ 'bar, baz'
313
+ >>> list(headers.items())
314
+ [('foo', 'bar'), ('foo', 'baz')]
315
+ >>> headers.add('foo', 'quz', combine=True)
316
+ >>> list(headers.items())
317
+ [('foo', 'bar, baz, quz')]
318
+ """
319
+ # avoid a bytes/str comparison by decoding before httplib
320
+ if isinstance(key, bytes):
321
+ key = key.decode("latin-1")
322
+ key_lower = key.lower()
323
+ new_vals = [key, val]
324
+ # Keep the common case aka no item present as fast as possible
325
+ vals = self._container.setdefault(key_lower, new_vals)
326
+ if new_vals is not vals:
327
+ # if there are values here, then there is at least the initial
328
+ # key/value pair
329
+ assert len(vals) >= 2
330
+ if combine:
331
+ vals[-1] = vals[-1] + ", " + val
332
+ else:
333
+ vals.append(val)
334
+
335
+ def extend(self, *args: ValidHTTPHeaderSource, **kwargs: str) -> None:
336
+ """Generic import function for any type of header-like object.
337
+ Adapted version of MutableMapping.update in order to insert items
338
+ with self.add instead of self.__setitem__
339
+ """
340
+ if len(args) > 1:
341
+ raise TypeError(
342
+ f"extend() takes at most 1 positional arguments ({len(args)} given)"
343
+ )
344
+ other = args[0] if len(args) >= 1 else ()
345
+
346
+ if isinstance(other, HTTPHeaderDict):
347
+ for key, val in other.iteritems():
348
+ self.add(key, val)
349
+ elif isinstance(other, typing.Mapping):
350
+ for key, val in other.items():
351
+ self.add(key, val)
352
+ elif isinstance(other, typing.Iterable):
353
+ other = typing.cast(typing.Iterable[tuple[str, str]], other)
354
+ for key, value in other:
355
+ self.add(key, value)
356
+ elif hasattr(other, "keys") and hasattr(other, "__getitem__"):
357
+ # THIS IS NOT A TYPESAFE BRANCH
358
+ # In this branch, the object has a `keys` attr but is not a Mapping or any of
359
+ # the other types indicated in the method signature. We do some stuff with
360
+ # it as though it partially implements the Mapping interface, but we're not
361
+ # doing that stuff safely AT ALL.
362
+ for key in other.keys():
363
+ self.add(key, other[key])
364
+
365
+ for key, value in kwargs.items():
366
+ self.add(key, value)
367
+
368
+ @typing.overload
369
+ def getlist(self, key: str) -> list[str]: ...
370
+
371
+ @typing.overload
372
+ def getlist(self, key: str, default: _DT) -> list[str] | _DT: ...
373
+
374
+ def getlist(
375
+ self, key: str, default: _Sentinel | _DT = _Sentinel.not_passed
376
+ ) -> list[str] | _DT:
377
+ """Returns a list of all the values for the named field. Returns an
378
+ empty list if the key doesn't exist."""
379
+ try:
380
+ vals = self._container[key.lower()]
381
+ except KeyError:
382
+ if default is _Sentinel.not_passed:
383
+ # _DT is unbound; empty list is instance of List[str]
384
+ return []
385
+ # _DT is bound; default is instance of _DT
386
+ return default
387
+ else:
388
+ # _DT may or may not be bound; vals[1:] is instance of List[str], which
389
+ # meets our external interface requirement of `Union[List[str], _DT]`.
390
+ return vals[1:]
391
+
392
+ def _prepare_for_method_change(self) -> Self:
393
+ """
394
+ Remove content-specific header fields before changing the request
395
+ method to GET or HEAD according to RFC 9110, Section 15.4.
396
+ """
397
+ content_specific_headers = [
398
+ "Content-Encoding",
399
+ "Content-Language",
400
+ "Content-Location",
401
+ "Content-Type",
402
+ "Content-Length",
403
+ "Digest",
404
+ "Last-Modified",
405
+ ]
406
+ for header in content_specific_headers:
407
+ self.discard(header)
408
+ return self
409
+
410
+ # Backwards compatibility for httplib
411
+ getheaders = getlist
412
+ getallmatchingheaders = getlist
413
+ iget = getlist
414
+
415
+ # Backwards compatibility for http.cookiejar
416
+ get_all = getlist
417
+
418
+ def __repr__(self) -> str:
419
+ return f"{type(self).__name__}({dict(self.itermerged())})"
420
+
421
+ def _copy_from(self, other: HTTPHeaderDict) -> None:
422
+ for key in other:
423
+ val = other.getlist(key)
424
+ self._container[key.lower()] = [key, *val]
425
+
426
+ def copy(self) -> Self:
427
+ clone = type(self)()
428
+ clone._copy_from(self)
429
+ return clone
430
+
431
+ def iteritems(self) -> typing.Iterator[tuple[str, str]]:
432
+ """Iterate over all header lines, including duplicate ones."""
433
+ for key in self:
434
+ vals = self._container[key.lower()]
435
+ for val in vals[1:]:
436
+ yield vals[0], val
437
+
438
+ def itermerged(self) -> typing.Iterator[tuple[str, str]]:
439
+ """Iterate over all headers, merging duplicate ones together."""
440
+ for key in self:
441
+ val = self._container[key.lower()]
442
+ yield val[0], ", ".join(val[1:])
443
+
444
+ def items(self) -> HTTPHeaderDictItemView: # type: ignore[override]
445
+ return HTTPHeaderDictItemView(self)
446
+
447
+ def _has_value_for_header(self, header_name: str, potential_value: str) -> bool:
448
+ if header_name in self:
449
+ return potential_value in self._container[header_name.lower()][1:]
450
+ return False
451
+
452
+ def __ior__(self, other: object) -> HTTPHeaderDict:
453
+ # Supports extending a header dict in-place using operator |=
454
+ # combining items with add instead of __setitem__
455
+ maybe_constructable = ensure_can_construct_http_header_dict(other)
456
+ if maybe_constructable is None:
457
+ return NotImplemented
458
+ self.extend(maybe_constructable)
459
+ return self
460
+
461
+ def __or__(self, other: object) -> Self:
462
+ # Supports merging header dicts using operator |
463
+ # combining items with add instead of __setitem__
464
+ maybe_constructable = ensure_can_construct_http_header_dict(other)
465
+ if maybe_constructable is None:
466
+ return NotImplemented
467
+ result = self.copy()
468
+ result.extend(maybe_constructable)
469
+ return result
470
+
471
+ def __ror__(self, other: object) -> Self:
472
+ # Supports merging header dicts using operator | when other is on left side
473
+ # combining items with add instead of __setitem__
474
+ maybe_constructable = ensure_can_construct_http_header_dict(other)
475
+ if maybe_constructable is None:
476
+ return NotImplemented
477
+ result = type(self)(maybe_constructable)
478
+ result.extend(self)
479
+ return result
.venv/lib/python3.11/site-packages/urllib3/_version.py ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # file generated by setuptools-scm
2
+ # don't change, don't track in version control
3
+
4
+ __all__ = ["__version__", "__version_tuple__", "version", "version_tuple"]
5
+
6
+ TYPE_CHECKING = False
7
+ if TYPE_CHECKING:
8
+ from typing import Tuple
9
+ from typing import Union
10
+
11
+ VERSION_TUPLE = Tuple[Union[int, str], ...]
12
+ else:
13
+ VERSION_TUPLE = object
14
+
15
+ version: str
16
+ __version__: str
17
+ __version_tuple__: VERSION_TUPLE
18
+ version_tuple: VERSION_TUPLE
19
+
20
+ __version__ = version = '2.5.0'
21
+ __version_tuple__ = version_tuple = (2, 5, 0)
.venv/lib/python3.11/site-packages/urllib3/connectionpool.py ADDED
@@ -0,0 +1,1178 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from __future__ import annotations
2
+
3
+ import errno
4
+ import logging
5
+ import queue
6
+ import sys
7
+ import typing
8
+ import warnings
9
+ import weakref
10
+ from socket import timeout as SocketTimeout
11
+ from types import TracebackType
12
+
13
+ from ._base_connection import _TYPE_BODY
14
+ from ._collections import HTTPHeaderDict
15
+ from ._request_methods import RequestMethods
16
+ from .connection import (
17
+ BaseSSLError,
18
+ BrokenPipeError,
19
+ DummyConnection,
20
+ HTTPConnection,
21
+ HTTPException,
22
+ HTTPSConnection,
23
+ ProxyConfig,
24
+ _wrap_proxy_error,
25
+ )
26
+ from .connection import port_by_scheme as port_by_scheme
27
+ from .exceptions import (
28
+ ClosedPoolError,
29
+ EmptyPoolError,
30
+ FullPoolError,
31
+ HostChangedError,
32
+ InsecureRequestWarning,
33
+ LocationValueError,
34
+ MaxRetryError,
35
+ NewConnectionError,
36
+ ProtocolError,
37
+ ProxyError,
38
+ ReadTimeoutError,
39
+ SSLError,
40
+ TimeoutError,
41
+ )
42
+ from .response import BaseHTTPResponse
43
+ from .util.connection import is_connection_dropped
44
+ from .util.proxy import connection_requires_http_tunnel
45
+ from .util.request import _TYPE_BODY_POSITION, set_file_position
46
+ from .util.retry import Retry
47
+ from .util.ssl_match_hostname import CertificateError
48
+ from .util.timeout import _DEFAULT_TIMEOUT, _TYPE_DEFAULT, Timeout
49
+ from .util.url import Url, _encode_target
50
+ from .util.url import _normalize_host as normalize_host
51
+ from .util.url import parse_url
52
+ from .util.util import to_str
53
+
54
+ if typing.TYPE_CHECKING:
55
+ import ssl
56
+
57
+ from typing_extensions import Self
58
+
59
+ from ._base_connection import BaseHTTPConnection, BaseHTTPSConnection
60
+
61
+ log = logging.getLogger(__name__)
62
+
63
+ _TYPE_TIMEOUT = typing.Union[Timeout, float, _TYPE_DEFAULT, None]
64
+
65
+
66
+ # Pool objects
67
+ class ConnectionPool:
68
+ """
69
+ Base class for all connection pools, such as
70
+ :class:`.HTTPConnectionPool` and :class:`.HTTPSConnectionPool`.
71
+
72
+ .. note::
73
+ ConnectionPool.urlopen() does not normalize or percent-encode target URIs
74
+ which is useful if your target server doesn't support percent-encoded
75
+ target URIs.
76
+ """
77
+
78
+ scheme: str | None = None
79
+ QueueCls = queue.LifoQueue
80
+
81
+ def __init__(self, host: str, port: int | None = None) -> None:
82
+ if not host:
83
+ raise LocationValueError("No host specified.")
84
+
85
+ self.host = _normalize_host(host, scheme=self.scheme)
86
+ self.port = port
87
+
88
+ # This property uses 'normalize_host()' (not '_normalize_host()')
89
+ # to avoid removing square braces around IPv6 addresses.
90
+ # This value is sent to `HTTPConnection.set_tunnel()` if called
91
+ # because square braces are required for HTTP CONNECT tunneling.
92
+ self._tunnel_host = normalize_host(host, scheme=self.scheme).lower()
93
+
94
+ def __str__(self) -> str:
95
+ return f"{type(self).__name__}(host={self.host!r}, port={self.port!r})"
96
+
97
+ def __enter__(self) -> Self:
98
+ return self
99
+
100
+ def __exit__(
101
+ self,
102
+ exc_type: type[BaseException] | None,
103
+ exc_val: BaseException | None,
104
+ exc_tb: TracebackType | None,
105
+ ) -> typing.Literal[False]:
106
+ self.close()
107
+ # Return False to re-raise any potential exceptions
108
+ return False
109
+
110
+ def close(self) -> None:
111
+ """
112
+ Close all pooled connections and disable the pool.
113
+ """
114
+
115
+
116
+ # This is taken from http://hg.python.org/cpython/file/7aaba721ebc0/Lib/socket.py#l252
117
+ _blocking_errnos = {errno.EAGAIN, errno.EWOULDBLOCK}
118
+
119
+
120
+ class HTTPConnectionPool(ConnectionPool, RequestMethods):
121
+ """
122
+ Thread-safe connection pool for one host.
123
+
124
+ :param host:
125
+ Host used for this HTTP Connection (e.g. "localhost"), passed into
126
+ :class:`http.client.HTTPConnection`.
127
+
128
+ :param port:
129
+ Port used for this HTTP Connection (None is equivalent to 80), passed
130
+ into :class:`http.client.HTTPConnection`.
131
+
132
+ :param timeout:
133
+ Socket timeout in seconds for each individual connection. This can
134
+ be a float or integer, which sets the timeout for the HTTP request,
135
+ or an instance of :class:`urllib3.util.Timeout` which gives you more
136
+ fine-grained control over request timeouts. After the constructor has
137
+ been parsed, this is always a `urllib3.util.Timeout` object.
138
+
139
+ :param maxsize:
140
+ Number of connections to save that can be reused. More than 1 is useful
141
+ in multithreaded situations. If ``block`` is set to False, more
142
+ connections will be created but they will not be saved once they've
143
+ been used.
144
+
145
+ :param block:
146
+ If set to True, no more than ``maxsize`` connections will be used at
147
+ a time. When no free connections are available, the call will block
148
+ until a connection has been released. This is a useful side effect for
149
+ particular multithreaded situations where one does not want to use more
150
+ than maxsize connections per host to prevent flooding.
151
+
152
+ :param headers:
153
+ Headers to include with all requests, unless other headers are given
154
+ explicitly.
155
+
156
+ :param retries:
157
+ Retry configuration to use by default with requests in this pool.
158
+
159
+ :param _proxy:
160
+ Parsed proxy URL, should not be used directly, instead, see
161
+ :class:`urllib3.ProxyManager`
162
+
163
+ :param _proxy_headers:
164
+ A dictionary with proxy headers, should not be used directly,
165
+ instead, see :class:`urllib3.ProxyManager`
166
+
167
+ :param \\**conn_kw:
168
+ Additional parameters are used to create fresh :class:`urllib3.connection.HTTPConnection`,
169
+ :class:`urllib3.connection.HTTPSConnection` instances.
170
+ """
171
+
172
+ scheme = "http"
173
+ ConnectionCls: type[BaseHTTPConnection] | type[BaseHTTPSConnection] = HTTPConnection
174
+
175
+ def __init__(
176
+ self,
177
+ host: str,
178
+ port: int | None = None,
179
+ timeout: _TYPE_TIMEOUT | None = _DEFAULT_TIMEOUT,
180
+ maxsize: int = 1,
181
+ block: bool = False,
182
+ headers: typing.Mapping[str, str] | None = None,
183
+ retries: Retry | bool | int | None = None,
184
+ _proxy: Url | None = None,
185
+ _proxy_headers: typing.Mapping[str, str] | None = None,
186
+ _proxy_config: ProxyConfig | None = None,
187
+ **conn_kw: typing.Any,
188
+ ):
189
+ ConnectionPool.__init__(self, host, port)
190
+ RequestMethods.__init__(self, headers)
191
+
192
+ if not isinstance(timeout, Timeout):
193
+ timeout = Timeout.from_float(timeout)
194
+
195
+ if retries is None:
196
+ retries = Retry.DEFAULT
197
+
198
+ self.timeout = timeout
199
+ self.retries = retries
200
+
201
+ self.pool: queue.LifoQueue[typing.Any] | None = self.QueueCls(maxsize)
202
+ self.block = block
203
+
204
+ self.proxy = _proxy
205
+ self.proxy_headers = _proxy_headers or {}
206
+ self.proxy_config = _proxy_config
207
+
208
+ # Fill the queue up so that doing get() on it will block properly
209
+ for _ in range(maxsize):
210
+ self.pool.put(None)
211
+
212
+ # These are mostly for testing and debugging purposes.
213
+ self.num_connections = 0
214
+ self.num_requests = 0
215
+ self.conn_kw = conn_kw
216
+
217
+ if self.proxy:
218
+ # Enable Nagle's algorithm for proxies, to avoid packet fragmentation.
219
+ # We cannot know if the user has added default socket options, so we cannot replace the
220
+ # list.
221
+ self.conn_kw.setdefault("socket_options", [])
222
+
223
+ self.conn_kw["proxy"] = self.proxy
224
+ self.conn_kw["proxy_config"] = self.proxy_config
225
+
226
+ # Do not pass 'self' as callback to 'finalize'.
227
+ # Then the 'finalize' would keep an endless living (leak) to self.
228
+ # By just passing a reference to the pool allows the garbage collector
229
+ # to free self if nobody else has a reference to it.
230
+ pool = self.pool
231
+
232
+ # Close all the HTTPConnections in the pool before the
233
+ # HTTPConnectionPool object is garbage collected.
234
+ weakref.finalize(self, _close_pool_connections, pool)
235
+
236
+ def _new_conn(self) -> BaseHTTPConnection:
237
+ """
238
+ Return a fresh :class:`HTTPConnection`.
239
+ """
240
+ self.num_connections += 1
241
+ log.debug(
242
+ "Starting new HTTP connection (%d): %s:%s",
243
+ self.num_connections,
244
+ self.host,
245
+ self.port or "80",
246
+ )
247
+
248
+ conn = self.ConnectionCls(
249
+ host=self.host,
250
+ port=self.port,
251
+ timeout=self.timeout.connect_timeout,
252
+ **self.conn_kw,
253
+ )
254
+ return conn
255
+
256
+ def _get_conn(self, timeout: float | None = None) -> BaseHTTPConnection:
257
+ """
258
+ Get a connection. Will return a pooled connection if one is available.
259
+
260
+ If no connections are available and :prop:`.block` is ``False``, then a
261
+ fresh connection is returned.
262
+
263
+ :param timeout:
264
+ Seconds to wait before giving up and raising
265
+ :class:`urllib3.exceptions.EmptyPoolError` if the pool is empty and
266
+ :prop:`.block` is ``True``.
267
+ """
268
+ conn = None
269
+
270
+ if self.pool is None:
271
+ raise ClosedPoolError(self, "Pool is closed.")
272
+
273
+ try:
274
+ conn = self.pool.get(block=self.block, timeout=timeout)
275
+
276
+ except AttributeError: # self.pool is None
277
+ raise ClosedPoolError(self, "Pool is closed.") from None # Defensive:
278
+
279
+ except queue.Empty:
280
+ if self.block:
281
+ raise EmptyPoolError(
282
+ self,
283
+ "Pool is empty and a new connection can't be opened due to blocking mode.",
284
+ ) from None
285
+ pass # Oh well, we'll create a new connection then
286
+
287
+ # If this is a persistent connection, check if it got disconnected
288
+ if conn and is_connection_dropped(conn):
289
+ log.debug("Resetting dropped connection: %s", self.host)
290
+ conn.close()
291
+
292
+ return conn or self._new_conn()
293
+
294
+ def _put_conn(self, conn: BaseHTTPConnection | None) -> None:
295
+ """
296
+ Put a connection back into the pool.
297
+
298
+ :param conn:
299
+ Connection object for the current host and port as returned by
300
+ :meth:`._new_conn` or :meth:`._get_conn`.
301
+
302
+ If the pool is already full, the connection is closed and discarded
303
+ because we exceeded maxsize. If connections are discarded frequently,
304
+ then maxsize should be increased.
305
+
306
+ If the pool is closed, then the connection will be closed and discarded.
307
+ """
308
+ if self.pool is not None:
309
+ try:
310
+ self.pool.put(conn, block=False)
311
+ return # Everything is dandy, done.
312
+ except AttributeError:
313
+ # self.pool is None.
314
+ pass
315
+ except queue.Full:
316
+ # Connection never got put back into the pool, close it.
317
+ if conn:
318
+ conn.close()
319
+
320
+ if self.block:
321
+ # This should never happen if you got the conn from self._get_conn
322
+ raise FullPoolError(
323
+ self,
324
+ "Pool reached maximum size and no more connections are allowed.",
325
+ ) from None
326
+
327
+ log.warning(
328
+ "Connection pool is full, discarding connection: %s. Connection pool size: %s",
329
+ self.host,
330
+ self.pool.qsize(),
331
+ )
332
+
333
+ # Connection never got put back into the pool, close it.
334
+ if conn:
335
+ conn.close()
336
+
337
+ def _validate_conn(self, conn: BaseHTTPConnection) -> None:
338
+ """
339
+ Called right before a request is made, after the socket is created.
340
+ """
341
+
342
+ def _prepare_proxy(self, conn: BaseHTTPConnection) -> None:
343
+ # Nothing to do for HTTP connections.
344
+ pass
345
+
346
+ def _get_timeout(self, timeout: _TYPE_TIMEOUT) -> Timeout:
347
+ """Helper that always returns a :class:`urllib3.util.Timeout`"""
348
+ if timeout is _DEFAULT_TIMEOUT:
349
+ return self.timeout.clone()
350
+
351
+ if isinstance(timeout, Timeout):
352
+ return timeout.clone()
353
+ else:
354
+ # User passed us an int/float. This is for backwards compatibility,
355
+ # can be removed later
356
+ return Timeout.from_float(timeout)
357
+
358
+ def _raise_timeout(
359
+ self,
360
+ err: BaseSSLError | OSError | SocketTimeout,
361
+ url: str,
362
+ timeout_value: _TYPE_TIMEOUT | None,
363
+ ) -> None:
364
+ """Is the error actually a timeout? Will raise a ReadTimeout or pass"""
365
+
366
+ if isinstance(err, SocketTimeout):
367
+ raise ReadTimeoutError(
368
+ self, url, f"Read timed out. (read timeout={timeout_value})"
369
+ ) from err
370
+
371
+ # See the above comment about EAGAIN in Python 3.
372
+ if hasattr(err, "errno") and err.errno in _blocking_errnos:
373
+ raise ReadTimeoutError(
374
+ self, url, f"Read timed out. (read timeout={timeout_value})"
375
+ ) from err
376
+
377
+ def _make_request(
378
+ self,
379
+ conn: BaseHTTPConnection,
380
+ method: str,
381
+ url: str,
382
+ body: _TYPE_BODY | None = None,
383
+ headers: typing.Mapping[str, str] | None = None,
384
+ retries: Retry | None = None,
385
+ timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT,
386
+ chunked: bool = False,
387
+ response_conn: BaseHTTPConnection | None = None,
388
+ preload_content: bool = True,
389
+ decode_content: bool = True,
390
+ enforce_content_length: bool = True,
391
+ ) -> BaseHTTPResponse:
392
+ """
393
+ Perform a request on a given urllib connection object taken from our
394
+ pool.
395
+
396
+ :param conn:
397
+ a connection from one of our connection pools
398
+
399
+ :param method:
400
+ HTTP request method (such as GET, POST, PUT, etc.)
401
+
402
+ :param url:
403
+ The URL to perform the request on.
404
+
405
+ :param body:
406
+ Data to send in the request body, either :class:`str`, :class:`bytes`,
407
+ an iterable of :class:`str`/:class:`bytes`, or a file-like object.
408
+
409
+ :param headers:
410
+ Dictionary of custom headers to send, such as User-Agent,
411
+ If-None-Match, etc. If None, pool headers are used. If provided,
412
+ these headers completely replace any pool-specific headers.
413
+
414
+ :param retries:
415
+ Configure the number of retries to allow before raising a
416
+ :class:`~urllib3.exceptions.MaxRetryError` exception.
417
+
418
+ Pass ``None`` to retry until you receive a response. Pass a
419
+ :class:`~urllib3.util.retry.Retry` object for fine-grained control
420
+ over different types of retries.
421
+ Pass an integer number to retry connection errors that many times,
422
+ but no other types of errors. Pass zero to never retry.
423
+
424
+ If ``False``, then retries are disabled and any exception is raised
425
+ immediately. Also, instead of raising a MaxRetryError on redirects,
426
+ the redirect response will be returned.
427
+
428
+ :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int.
429
+
430
+ :param timeout:
431
+ If specified, overrides the default timeout for this one
432
+ request. It may be a float (in seconds) or an instance of
433
+ :class:`urllib3.util.Timeout`.
434
+
435
+ :param chunked:
436
+ If True, urllib3 will send the body using chunked transfer
437
+ encoding. Otherwise, urllib3 will send the body using the standard
438
+ content-length form. Defaults to False.
439
+
440
+ :param response_conn:
441
+ Set this to ``None`` if you will handle releasing the connection or
442
+ set the connection to have the response release it.
443
+
444
+ :param preload_content:
445
+ If True, the response's body will be preloaded during construction.
446
+
447
+ :param decode_content:
448
+ If True, will attempt to decode the body based on the
449
+ 'content-encoding' header.
450
+
451
+ :param enforce_content_length:
452
+ Enforce content length checking. Body returned by server must match
453
+ value of Content-Length header, if present. Otherwise, raise error.
454
+ """
455
+ self.num_requests += 1
456
+
457
+ timeout_obj = self._get_timeout(timeout)
458
+ timeout_obj.start_connect()
459
+ conn.timeout = Timeout.resolve_default_timeout(timeout_obj.connect_timeout)
460
+
461
+ try:
462
+ # Trigger any extra validation we need to do.
463
+ try:
464
+ self._validate_conn(conn)
465
+ except (SocketTimeout, BaseSSLError) as e:
466
+ self._raise_timeout(err=e, url=url, timeout_value=conn.timeout)
467
+ raise
468
+
469
+ # _validate_conn() starts the connection to an HTTPS proxy
470
+ # so we need to wrap errors with 'ProxyError' here too.
471
+ except (
472
+ OSError,
473
+ NewConnectionError,
474
+ TimeoutError,
475
+ BaseSSLError,
476
+ CertificateError,
477
+ SSLError,
478
+ ) as e:
479
+ new_e: Exception = e
480
+ if isinstance(e, (BaseSSLError, CertificateError)):
481
+ new_e = SSLError(e)
482
+ # If the connection didn't successfully connect to it's proxy
483
+ # then there
484
+ if isinstance(
485
+ new_e, (OSError, NewConnectionError, TimeoutError, SSLError)
486
+ ) and (conn and conn.proxy and not conn.has_connected_to_proxy):
487
+ new_e = _wrap_proxy_error(new_e, conn.proxy.scheme)
488
+ raise new_e
489
+
490
+ # conn.request() calls http.client.*.request, not the method in
491
+ # urllib3.request. It also calls makefile (recv) on the socket.
492
+ try:
493
+ conn.request(
494
+ method,
495
+ url,
496
+ body=body,
497
+ headers=headers,
498
+ chunked=chunked,
499
+ preload_content=preload_content,
500
+ decode_content=decode_content,
501
+ enforce_content_length=enforce_content_length,
502
+ )
503
+
504
+ # We are swallowing BrokenPipeError (errno.EPIPE) since the server is
505
+ # legitimately able to close the connection after sending a valid response.
506
+ # With this behaviour, the received response is still readable.
507
+ except BrokenPipeError:
508
+ pass
509
+ except OSError as e:
510
+ # MacOS/Linux
511
+ # EPROTOTYPE and ECONNRESET are needed on macOS
512
+ # https://erickt.github.io/blog/2014/11/19/adventures-in-debugging-a-potential-osx-kernel-bug/
513
+ # Condition changed later to emit ECONNRESET instead of only EPROTOTYPE.
514
+ if e.errno != errno.EPROTOTYPE and e.errno != errno.ECONNRESET:
515
+ raise
516
+
517
+ # Reset the timeout for the recv() on the socket
518
+ read_timeout = timeout_obj.read_timeout
519
+
520
+ if not conn.is_closed:
521
+ # In Python 3 socket.py will catch EAGAIN and return None when you
522
+ # try and read into the file pointer created by http.client, which
523
+ # instead raises a BadStatusLine exception. Instead of catching
524
+ # the exception and assuming all BadStatusLine exceptions are read
525
+ # timeouts, check for a zero timeout before making the request.
526
+ if read_timeout == 0:
527
+ raise ReadTimeoutError(
528
+ self, url, f"Read timed out. (read timeout={read_timeout})"
529
+ )
530
+ conn.timeout = read_timeout
531
+
532
+ # Receive the response from the server
533
+ try:
534
+ response = conn.getresponse()
535
+ except (BaseSSLError, OSError) as e:
536
+ self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
537
+ raise
538
+
539
+ # Set properties that are used by the pooling layer.
540
+ response.retries = retries
541
+ response._connection = response_conn # type: ignore[attr-defined]
542
+ response._pool = self # type: ignore[attr-defined]
543
+
544
+ log.debug(
545
+ '%s://%s:%s "%s %s %s" %s %s',
546
+ self.scheme,
547
+ self.host,
548
+ self.port,
549
+ method,
550
+ url,
551
+ response.version_string,
552
+ response.status,
553
+ response.length_remaining,
554
+ )
555
+
556
+ return response
557
+
558
+ def close(self) -> None:
559
+ """
560
+ Close all pooled connections and disable the pool.
561
+ """
562
+ if self.pool is None:
563
+ return
564
+ # Disable access to the pool
565
+ old_pool, self.pool = self.pool, None
566
+
567
+ # Close all the HTTPConnections in the pool.
568
+ _close_pool_connections(old_pool)
569
+
570
+ def is_same_host(self, url: str) -> bool:
571
+ """
572
+ Check if the given ``url`` is a member of the same host as this
573
+ connection pool.
574
+ """
575
+ if url.startswith("/"):
576
+ return True
577
+
578
+ # TODO: Add optional support for socket.gethostbyname checking.
579
+ scheme, _, host, port, *_ = parse_url(url)
580
+ scheme = scheme or "http"
581
+ if host is not None:
582
+ host = _normalize_host(host, scheme=scheme)
583
+
584
+ # Use explicit default port for comparison when none is given
585
+ if self.port and not port:
586
+ port = port_by_scheme.get(scheme)
587
+ elif not self.port and port == port_by_scheme.get(scheme):
588
+ port = None
589
+
590
+ return (scheme, host, port) == (self.scheme, self.host, self.port)
591
+
592
+ def urlopen( # type: ignore[override]
593
+ self,
594
+ method: str,
595
+ url: str,
596
+ body: _TYPE_BODY | None = None,
597
+ headers: typing.Mapping[str, str] | None = None,
598
+ retries: Retry | bool | int | None = None,
599
+ redirect: bool = True,
600
+ assert_same_host: bool = True,
601
+ timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT,
602
+ pool_timeout: int | None = None,
603
+ release_conn: bool | None = None,
604
+ chunked: bool = False,
605
+ body_pos: _TYPE_BODY_POSITION | None = None,
606
+ preload_content: bool = True,
607
+ decode_content: bool = True,
608
+ **response_kw: typing.Any,
609
+ ) -> BaseHTTPResponse:
610
+ """
611
+ Get a connection from the pool and perform an HTTP request. This is the
612
+ lowest level call for making a request, so you'll need to specify all
613
+ the raw details.
614
+
615
+ .. note::
616
+
617
+ More commonly, it's appropriate to use a convenience method
618
+ such as :meth:`request`.
619
+
620
+ .. note::
621
+
622
+ `release_conn` will only behave as expected if
623
+ `preload_content=False` because we want to make
624
+ `preload_content=False` the default behaviour someday soon without
625
+ breaking backwards compatibility.
626
+
627
+ :param method:
628
+ HTTP request method (such as GET, POST, PUT, etc.)
629
+
630
+ :param url:
631
+ The URL to perform the request on.
632
+
633
+ :param body:
634
+ Data to send in the request body, either :class:`str`, :class:`bytes`,
635
+ an iterable of :class:`str`/:class:`bytes`, or a file-like object.
636
+
637
+ :param headers:
638
+ Dictionary of custom headers to send, such as User-Agent,
639
+ If-None-Match, etc. If None, pool headers are used. If provided,
640
+ these headers completely replace any pool-specific headers.
641
+
642
+ :param retries:
643
+ Configure the number of retries to allow before raising a
644
+ :class:`~urllib3.exceptions.MaxRetryError` exception.
645
+
646
+ If ``None`` (default) will retry 3 times, see ``Retry.DEFAULT``. Pass a
647
+ :class:`~urllib3.util.retry.Retry` object for fine-grained control
648
+ over different types of retries.
649
+ Pass an integer number to retry connection errors that many times,
650
+ but no other types of errors. Pass zero to never retry.
651
+
652
+ If ``False``, then retries are disabled and any exception is raised
653
+ immediately. Also, instead of raising a MaxRetryError on redirects,
654
+ the redirect response will be returned.
655
+
656
+ :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int.
657
+
658
+ :param redirect:
659
+ If True, automatically handle redirects (status codes 301, 302,
660
+ 303, 307, 308). Each redirect counts as a retry. Disabling retries
661
+ will disable redirect, too.
662
+
663
+ :param assert_same_host:
664
+ If ``True``, will make sure that the host of the pool requests is
665
+ consistent else will raise HostChangedError. When ``False``, you can
666
+ use the pool on an HTTP proxy and request foreign hosts.
667
+
668
+ :param timeout:
669
+ If specified, overrides the default timeout for this one
670
+ request. It may be a float (in seconds) or an instance of
671
+ :class:`urllib3.util.Timeout`.
672
+
673
+ :param pool_timeout:
674
+ If set and the pool is set to block=True, then this method will
675
+ block for ``pool_timeout`` seconds and raise EmptyPoolError if no
676
+ connection is available within the time period.
677
+
678
+ :param bool preload_content:
679
+ If True, the response's body will be preloaded into memory.
680
+
681
+ :param bool decode_content:
682
+ If True, will attempt to decode the body based on the
683
+ 'content-encoding' header.
684
+
685
+ :param release_conn:
686
+ If False, then the urlopen call will not release the connection
687
+ back into the pool once a response is received (but will release if
688
+ you read the entire contents of the response such as when
689
+ `preload_content=True`). This is useful if you're not preloading
690
+ the response's content immediately. You will need to call
691
+ ``r.release_conn()`` on the response ``r`` to return the connection
692
+ back into the pool. If None, it takes the value of ``preload_content``
693
+ which defaults to ``True``.
694
+
695
+ :param bool chunked:
696
+ If True, urllib3 will send the body using chunked transfer
697
+ encoding. Otherwise, urllib3 will send the body using the standard
698
+ content-length form. Defaults to False.
699
+
700
+ :param int body_pos:
701
+ Position to seek to in file-like body in the event of a retry or
702
+ redirect. Typically this won't need to be set because urllib3 will
703
+ auto-populate the value when needed.
704
+ """
705
+ parsed_url = parse_url(url)
706
+ destination_scheme = parsed_url.scheme
707
+
708
+ if headers is None:
709
+ headers = self.headers
710
+
711
+ if not isinstance(retries, Retry):
712
+ retries = Retry.from_int(retries, redirect=redirect, default=self.retries)
713
+
714
+ if release_conn is None:
715
+ release_conn = preload_content
716
+
717
+ # Check host
718
+ if assert_same_host and not self.is_same_host(url):
719
+ raise HostChangedError(self, url, retries)
720
+
721
+ # Ensure that the URL we're connecting to is properly encoded
722
+ if url.startswith("/"):
723
+ url = to_str(_encode_target(url))
724
+ else:
725
+ url = to_str(parsed_url.url)
726
+
727
+ conn = None
728
+
729
+ # Track whether `conn` needs to be released before
730
+ # returning/raising/recursing. Update this variable if necessary, and
731
+ # leave `release_conn` constant throughout the function. That way, if
732
+ # the function recurses, the original value of `release_conn` will be
733
+ # passed down into the recursive call, and its value will be respected.
734
+ #
735
+ # See issue #651 [1] for details.
736
+ #
737
+ # [1] <https://github.com/urllib3/urllib3/issues/651>
738
+ release_this_conn = release_conn
739
+
740
+ http_tunnel_required = connection_requires_http_tunnel(
741
+ self.proxy, self.proxy_config, destination_scheme
742
+ )
743
+
744
+ # Merge the proxy headers. Only done when not using HTTP CONNECT. We
745
+ # have to copy the headers dict so we can safely change it without those
746
+ # changes being reflected in anyone else's copy.
747
+ if not http_tunnel_required:
748
+ headers = headers.copy() # type: ignore[attr-defined]
749
+ headers.update(self.proxy_headers) # type: ignore[union-attr]
750
+
751
+ # Must keep the exception bound to a separate variable or else Python 3
752
+ # complains about UnboundLocalError.
753
+ err = None
754
+
755
+ # Keep track of whether we cleanly exited the except block. This
756
+ # ensures we do proper cleanup in finally.
757
+ clean_exit = False
758
+
759
+ # Rewind body position, if needed. Record current position
760
+ # for future rewinds in the event of a redirect/retry.
761
+ body_pos = set_file_position(body, body_pos)
762
+
763
+ try:
764
+ # Request a connection from the queue.
765
+ timeout_obj = self._get_timeout(timeout)
766
+ conn = self._get_conn(timeout=pool_timeout)
767
+
768
+ conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment]
769
+
770
+ # Is this a closed/new connection that requires CONNECT tunnelling?
771
+ if self.proxy is not None and http_tunnel_required and conn.is_closed:
772
+ try:
773
+ self._prepare_proxy(conn)
774
+ except (BaseSSLError, OSError, SocketTimeout) as e:
775
+ self._raise_timeout(
776
+ err=e, url=self.proxy.url, timeout_value=conn.timeout
777
+ )
778
+ raise
779
+
780
+ # If we're going to release the connection in ``finally:``, then
781
+ # the response doesn't need to know about the connection. Otherwise
782
+ # it will also try to release it and we'll have a double-release
783
+ # mess.
784
+ response_conn = conn if not release_conn else None
785
+
786
+ # Make the request on the HTTPConnection object
787
+ response = self._make_request(
788
+ conn,
789
+ method,
790
+ url,
791
+ timeout=timeout_obj,
792
+ body=body,
793
+ headers=headers,
794
+ chunked=chunked,
795
+ retries=retries,
796
+ response_conn=response_conn,
797
+ preload_content=preload_content,
798
+ decode_content=decode_content,
799
+ **response_kw,
800
+ )
801
+
802
+ # Everything went great!
803
+ clean_exit = True
804
+
805
+ except EmptyPoolError:
806
+ # Didn't get a connection from the pool, no need to clean up
807
+ clean_exit = True
808
+ release_this_conn = False
809
+ raise
810
+
811
+ except (
812
+ TimeoutError,
813
+ HTTPException,
814
+ OSError,
815
+ ProtocolError,
816
+ BaseSSLError,
817
+ SSLError,
818
+ CertificateError,
819
+ ProxyError,
820
+ ) as e:
821
+ # Discard the connection for these exceptions. It will be
822
+ # replaced during the next _get_conn() call.
823
+ clean_exit = False
824
+ new_e: Exception = e
825
+ if isinstance(e, (BaseSSLError, CertificateError)):
826
+ new_e = SSLError(e)
827
+ if isinstance(
828
+ new_e,
829
+ (
830
+ OSError,
831
+ NewConnectionError,
832
+ TimeoutError,
833
+ SSLError,
834
+ HTTPException,
835
+ ),
836
+ ) and (conn and conn.proxy and not conn.has_connected_to_proxy):
837
+ new_e = _wrap_proxy_error(new_e, conn.proxy.scheme)
838
+ elif isinstance(new_e, (OSError, HTTPException)):
839
+ new_e = ProtocolError("Connection aborted.", new_e)
840
+
841
+ retries = retries.increment(
842
+ method, url, error=new_e, _pool=self, _stacktrace=sys.exc_info()[2]
843
+ )
844
+ retries.sleep()
845
+
846
+ # Keep track of the error for the retry warning.
847
+ err = e
848
+
849
+ finally:
850
+ if not clean_exit:
851
+ # We hit some kind of exception, handled or otherwise. We need
852
+ # to throw the connection away unless explicitly told not to.
853
+ # Close the connection, set the variable to None, and make sure
854
+ # we put the None back in the pool to avoid leaking it.
855
+ if conn:
856
+ conn.close()
857
+ conn = None
858
+ release_this_conn = True
859
+
860
+ if release_this_conn:
861
+ # Put the connection back to be reused. If the connection is
862
+ # expired then it will be None, which will get replaced with a
863
+ # fresh connection during _get_conn.
864
+ self._put_conn(conn)
865
+
866
+ if not conn:
867
+ # Try again
868
+ log.warning(
869
+ "Retrying (%r) after connection broken by '%r': %s", retries, err, url
870
+ )
871
+ return self.urlopen(
872
+ method,
873
+ url,
874
+ body,
875
+ headers,
876
+ retries,
877
+ redirect,
878
+ assert_same_host,
879
+ timeout=timeout,
880
+ pool_timeout=pool_timeout,
881
+ release_conn=release_conn,
882
+ chunked=chunked,
883
+ body_pos=body_pos,
884
+ preload_content=preload_content,
885
+ decode_content=decode_content,
886
+ **response_kw,
887
+ )
888
+
889
+ # Handle redirect?
890
+ redirect_location = redirect and response.get_redirect_location()
891
+ if redirect_location:
892
+ if response.status == 303:
893
+ # Change the method according to RFC 9110, Section 15.4.4.
894
+ method = "GET"
895
+ # And lose the body not to transfer anything sensitive.
896
+ body = None
897
+ headers = HTTPHeaderDict(headers)._prepare_for_method_change()
898
+
899
+ try:
900
+ retries = retries.increment(method, url, response=response, _pool=self)
901
+ except MaxRetryError:
902
+ if retries.raise_on_redirect:
903
+ response.drain_conn()
904
+ raise
905
+ return response
906
+
907
+ response.drain_conn()
908
+ retries.sleep_for_retry(response)
909
+ log.debug("Redirecting %s -> %s", url, redirect_location)
910
+ return self.urlopen(
911
+ method,
912
+ redirect_location,
913
+ body,
914
+ headers,
915
+ retries=retries,
916
+ redirect=redirect,
917
+ assert_same_host=assert_same_host,
918
+ timeout=timeout,
919
+ pool_timeout=pool_timeout,
920
+ release_conn=release_conn,
921
+ chunked=chunked,
922
+ body_pos=body_pos,
923
+ preload_content=preload_content,
924
+ decode_content=decode_content,
925
+ **response_kw,
926
+ )
927
+
928
+ # Check if we should retry the HTTP response.
929
+ has_retry_after = bool(response.headers.get("Retry-After"))
930
+ if retries.is_retry(method, response.status, has_retry_after):
931
+ try:
932
+ retries = retries.increment(method, url, response=response, _pool=self)
933
+ except MaxRetryError:
934
+ if retries.raise_on_status:
935
+ response.drain_conn()
936
+ raise
937
+ return response
938
+
939
+ response.drain_conn()
940
+ retries.sleep(response)
941
+ log.debug("Retry: %s", url)
942
+ return self.urlopen(
943
+ method,
944
+ url,
945
+ body,
946
+ headers,
947
+ retries=retries,
948
+ redirect=redirect,
949
+ assert_same_host=assert_same_host,
950
+ timeout=timeout,
951
+ pool_timeout=pool_timeout,
952
+ release_conn=release_conn,
953
+ chunked=chunked,
954
+ body_pos=body_pos,
955
+ preload_content=preload_content,
956
+ decode_content=decode_content,
957
+ **response_kw,
958
+ )
959
+
960
+ return response
961
+
962
+
963
+ class HTTPSConnectionPool(HTTPConnectionPool):
964
+ """
965
+ Same as :class:`.HTTPConnectionPool`, but HTTPS.
966
+
967
+ :class:`.HTTPSConnection` uses one of ``assert_fingerprint``,
968
+ ``assert_hostname`` and ``host`` in this order to verify connections.
969
+ If ``assert_hostname`` is False, no verification is done.
970
+
971
+ The ``key_file``, ``cert_file``, ``cert_reqs``, ``ca_certs``,
972
+ ``ca_cert_dir``, ``ssl_version``, ``key_password`` are only used if :mod:`ssl`
973
+ is available and are fed into :meth:`urllib3.util.ssl_wrap_socket` to upgrade
974
+ the connection socket into an SSL socket.
975
+ """
976
+
977
+ scheme = "https"
978
+ ConnectionCls: type[BaseHTTPSConnection] = HTTPSConnection
979
+
980
+ def __init__(
981
+ self,
982
+ host: str,
983
+ port: int | None = None,
984
+ timeout: _TYPE_TIMEOUT | None = _DEFAULT_TIMEOUT,
985
+ maxsize: int = 1,
986
+ block: bool = False,
987
+ headers: typing.Mapping[str, str] | None = None,
988
+ retries: Retry | bool | int | None = None,
989
+ _proxy: Url | None = None,
990
+ _proxy_headers: typing.Mapping[str, str] | None = None,
991
+ key_file: str | None = None,
992
+ cert_file: str | None = None,
993
+ cert_reqs: int | str | None = None,
994
+ key_password: str | None = None,
995
+ ca_certs: str | None = None,
996
+ ssl_version: int | str | None = None,
997
+ ssl_minimum_version: ssl.TLSVersion | None = None,
998
+ ssl_maximum_version: ssl.TLSVersion | None = None,
999
+ assert_hostname: str | typing.Literal[False] | None = None,
1000
+ assert_fingerprint: str | None = None,
1001
+ ca_cert_dir: str | None = None,
1002
+ **conn_kw: typing.Any,
1003
+ ) -> None:
1004
+ super().__init__(
1005
+ host,
1006
+ port,
1007
+ timeout,
1008
+ maxsize,
1009
+ block,
1010
+ headers,
1011
+ retries,
1012
+ _proxy,
1013
+ _proxy_headers,
1014
+ **conn_kw,
1015
+ )
1016
+
1017
+ self.key_file = key_file
1018
+ self.cert_file = cert_file
1019
+ self.cert_reqs = cert_reqs
1020
+ self.key_password = key_password
1021
+ self.ca_certs = ca_certs
1022
+ self.ca_cert_dir = ca_cert_dir
1023
+ self.ssl_version = ssl_version
1024
+ self.ssl_minimum_version = ssl_minimum_version
1025
+ self.ssl_maximum_version = ssl_maximum_version
1026
+ self.assert_hostname = assert_hostname
1027
+ self.assert_fingerprint = assert_fingerprint
1028
+
1029
+ def _prepare_proxy(self, conn: HTTPSConnection) -> None: # type: ignore[override]
1030
+ """Establishes a tunnel connection through HTTP CONNECT."""
1031
+ if self.proxy and self.proxy.scheme == "https":
1032
+ tunnel_scheme = "https"
1033
+ else:
1034
+ tunnel_scheme = "http"
1035
+
1036
+ conn.set_tunnel(
1037
+ scheme=tunnel_scheme,
1038
+ host=self._tunnel_host,
1039
+ port=self.port,
1040
+ headers=self.proxy_headers,
1041
+ )
1042
+ conn.connect()
1043
+
1044
+ def _new_conn(self) -> BaseHTTPSConnection:
1045
+ """
1046
+ Return a fresh :class:`urllib3.connection.HTTPConnection`.
1047
+ """
1048
+ self.num_connections += 1
1049
+ log.debug(
1050
+ "Starting new HTTPS connection (%d): %s:%s",
1051
+ self.num_connections,
1052
+ self.host,
1053
+ self.port or "443",
1054
+ )
1055
+
1056
+ if not self.ConnectionCls or self.ConnectionCls is DummyConnection: # type: ignore[comparison-overlap]
1057
+ raise ImportError(
1058
+ "Can't connect to HTTPS URL because the SSL module is not available."
1059
+ )
1060
+
1061
+ actual_host: str = self.host
1062
+ actual_port = self.port
1063
+ if self.proxy is not None and self.proxy.host is not None:
1064
+ actual_host = self.proxy.host
1065
+ actual_port = self.proxy.port
1066
+
1067
+ return self.ConnectionCls(
1068
+ host=actual_host,
1069
+ port=actual_port,
1070
+ timeout=self.timeout.connect_timeout,
1071
+ cert_file=self.cert_file,
1072
+ key_file=self.key_file,
1073
+ key_password=self.key_password,
1074
+ cert_reqs=self.cert_reqs,
1075
+ ca_certs=self.ca_certs,
1076
+ ca_cert_dir=self.ca_cert_dir,
1077
+ assert_hostname=self.assert_hostname,
1078
+ assert_fingerprint=self.assert_fingerprint,
1079
+ ssl_version=self.ssl_version,
1080
+ ssl_minimum_version=self.ssl_minimum_version,
1081
+ ssl_maximum_version=self.ssl_maximum_version,
1082
+ **self.conn_kw,
1083
+ )
1084
+
1085
+ def _validate_conn(self, conn: BaseHTTPConnection) -> None:
1086
+ """
1087
+ Called right before a request is made, after the socket is created.
1088
+ """
1089
+ super()._validate_conn(conn)
1090
+
1091
+ # Force connect early to allow us to validate the connection.
1092
+ if conn.is_closed:
1093
+ conn.connect()
1094
+
1095
+ # TODO revise this, see https://github.com/urllib3/urllib3/issues/2791
1096
+ if not conn.is_verified and not conn.proxy_is_verified:
1097
+ warnings.warn(
1098
+ (
1099
+ f"Unverified HTTPS request is being made to host '{conn.host}'. "
1100
+ "Adding certificate verification is strongly advised. See: "
1101
+ "https://urllib3.readthedocs.io/en/latest/advanced-usage.html"
1102
+ "#tls-warnings"
1103
+ ),
1104
+ InsecureRequestWarning,
1105
+ )
1106
+
1107
+
1108
+ def connection_from_url(url: str, **kw: typing.Any) -> HTTPConnectionPool:
1109
+ """
1110
+ Given a url, return an :class:`.ConnectionPool` instance of its host.
1111
+
1112
+ This is a shortcut for not having to parse out the scheme, host, and port
1113
+ of the url before creating an :class:`.ConnectionPool` instance.
1114
+
1115
+ :param url:
1116
+ Absolute URL string that must include the scheme. Port is optional.
1117
+
1118
+ :param \\**kw:
1119
+ Passes additional parameters to the constructor of the appropriate
1120
+ :class:`.ConnectionPool`. Useful for specifying things like
1121
+ timeout, maxsize, headers, etc.
1122
+
1123
+ Example::
1124
+
1125
+ >>> conn = connection_from_url('http://google.com/')
1126
+ >>> r = conn.request('GET', '/')
1127
+ """
1128
+ scheme, _, host, port, *_ = parse_url(url)
1129
+ scheme = scheme or "http"
1130
+ port = port or port_by_scheme.get(scheme, 80)
1131
+ if scheme == "https":
1132
+ return HTTPSConnectionPool(host, port=port, **kw) # type: ignore[arg-type]
1133
+ else:
1134
+ return HTTPConnectionPool(host, port=port, **kw) # type: ignore[arg-type]
1135
+
1136
+
1137
+ @typing.overload
1138
+ def _normalize_host(host: None, scheme: str | None) -> None: ...
1139
+
1140
+
1141
+ @typing.overload
1142
+ def _normalize_host(host: str, scheme: str | None) -> str: ...
1143
+
1144
+
1145
+ def _normalize_host(host: str | None, scheme: str | None) -> str | None:
1146
+ """
1147
+ Normalize hosts for comparisons and use with sockets.
1148
+ """
1149
+
1150
+ host = normalize_host(host, scheme)
1151
+
1152
+ # httplib doesn't like it when we include brackets in IPv6 addresses
1153
+ # Specifically, if we include brackets but also pass the port then
1154
+ # httplib crazily doubles up the square brackets on the Host header.
1155
+ # Instead, we need to make sure we never pass ``None`` as the port.
1156
+ # However, for backward compatibility reasons we can't actually
1157
+ # *assert* that. See http://bugs.python.org/issue28539
1158
+ if host and host.startswith("[") and host.endswith("]"):
1159
+ host = host[1:-1]
1160
+ return host
1161
+
1162
+
1163
+ def _url_from_pool(
1164
+ pool: HTTPConnectionPool | HTTPSConnectionPool, path: str | None = None
1165
+ ) -> str:
1166
+ """Returns the URL from a given connection pool. This is mainly used for testing and logging."""
1167
+ return Url(scheme=pool.scheme, host=pool.host, port=pool.port, path=path).url
1168
+
1169
+
1170
+ def _close_pool_connections(pool: queue.LifoQueue[typing.Any]) -> None:
1171
+ """Drains a queue of connections and closes each one."""
1172
+ try:
1173
+ while True:
1174
+ conn = pool.get(block=False)
1175
+ if conn:
1176
+ conn.close()
1177
+ except queue.Empty:
1178
+ pass # Done.
.venv/pyvenv.cfg ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ home = /home/heni/.local/share/uv/python/cpython-3.11.11-linux-x86_64-gnu/bin
2
+ implementation = CPython
3
+ uv = 0.5.9
4
+ version_info = 3.11.11
5
+ include-system-site-packages = false
6
+ prompt = LexiFreak-8B-Unleashed
README.md ADDED
@@ -0,0 +1,240 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ thumbnail: "https://huggingface.co/soundTeam/LexiFreak-8B-Unleashed/resolve/main/thumbnail.png"
3
+ license: llama3
4
+ language:
5
+ - en
6
+ base_model:
7
+ - Orenguteng/Llama-3-8B-LexiFun-Uncensored-V1
8
+ tags:
9
+ - llama3
10
+ - roleplay
11
+ - uncensored
12
+ - finetune
13
+ - brainrot
14
+
15
+ ---
16
+ <!DOCTYPE html>
17
+ <style>
18
+ html, body {
19
+ background: black;
20
+ color: #e0e0e0 !important;
21
+ font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
22
+ margin: 0;
23
+ padding: 0;
24
+ min-height: 100vh;
25
+ }
26
+ .markdown-body {
27
+ color: white;
28
+ margin: 40px auto;
29
+ padding: 40px;
30
+ border-radius: 12px;
31
+ position: relative;
32
+ overflow: hidden;
33
+ }
34
+
35
+ .markdown-body::after {
36
+ content: '';
37
+ position: absolute;
38
+ top: 0;
39
+ left: 0;
40
+ width: 100%;
41
+ height: 100%;
42
+ background: #100c14; /* background color */
43
+ pointer-events: none;
44
+ z-index: -999;
45
+ }
46
+
47
+ h1, h2, h3 {
48
+ background: linear-gradient(45deg, #3d1a66, #ffd700);
49
+ -webkit-background-clip: text;
50
+ -webkit-text-fill-color: transparent;
51
+ border-bottom: 1px solid #444;
52
+ padding-bottom: 0.3em;
53
+ }
54
+
55
+ div[style*="border:2px solid"],
56
+ div[style*="border: 2px solid"],
57
+ div[style*="border:1px solid"],
58
+ div[style*="border: 1px solid"] {
59
+ background: rgba(22, 17, 28, 0.8) !important;
60
+ border: 2px solid #ffd700 !important;
61
+ box-shadow: 0 0 15px rgba(255, 215, 0, 0.3);
62
+ border-radius: 10px;
63
+ padding: 20px;
64
+ margin: 20px 0;
65
+ }
66
+
67
+ code {
68
+ background-color: #1a1a1a !important;
69
+ border-radius: 4px;
70
+ padding: 0.2em 0.4em;
71
+ color: #ffd700;
72
+ }
73
+
74
+ pre {
75
+ background-color: #1a1a1a !important;
76
+ border: 1px solid #444;
77
+ border-radius: 8px;
78
+ padding: 16px;
79
+ }
80
+
81
+ table {
82
+ width: 100%;
83
+ border-collapse: collapse;
84
+ margin: 20px 0;
85
+ background: rgba(0,0,0,0.2);
86
+ table-layout: fixed;
87
+ color: white;
88
+ }
89
+
90
+ th, td {
91
+ border: 1px solid #444;
92
+ padding: 12px;
93
+ text-align: center;
94
+ color: white;
95
+ }
96
+
97
+ th {
98
+ background: rgba(255, 215, 0, 0.05);
99
+ }
100
+
101
+ td > span {
102
+ display: block;
103
+ padding: 4px 8px;
104
+ background: rgba(255, 215, 0, 0.1);
105
+ border-radius: 4px;
106
+ transition: all 0.3s ease;
107
+ }
108
+
109
+ td > span:hover {
110
+ background: rgba(255, 215, 0, 0.2);
111
+ transform: translateY(-1px);
112
+ }
113
+
114
+ a {
115
+ color: #ffd700;
116
+ text-decoration: none;
117
+ transition: all 0.3s ease;
118
+ }
119
+
120
+ a:hover {
121
+ color: #3d1a66;
122
+ text-decoration: underline;
123
+ }
124
+
125
+ hr {
126
+ border: 0;
127
+ height: 1px;
128
+ background: linear-gradient(90deg, transparent, #444, transparent);
129
+ margin: 40px 0;
130
+ }
131
+
132
+ img {
133
+ max-width: 100%;
134
+ border-radius: 10px;
135
+ }
136
+
137
+ details summary {
138
+ cursor: pointer;
139
+ }
140
+
141
+ details summary:hover {
142
+ color: #ffd700;
143
+ }
144
+
145
+ * {
146
+ color-scheme: dark !important;
147
+ }
148
+
149
+ .prose, .max-w-none, .px-4 {
150
+ background-color: transparent !important;
151
+ color: #e0e0e0 !important;
152
+ }
153
+ </style>
154
+ <body>
155
+ <div class="markdown-body">
156
+ <div align="center">
157
+
158
+ <img src="https://huggingface.co/soundTeam/LexiFreak-8B-Unleashed/resolve/main/thumbnail.png" alt="Model Thumbnail" width="500px" style="border: 3px solid #444; box-shadow: 0 0 15px rgba(255, 215, 0, 0.3);" />
159
+
160
+ <br>
161
+ <br>
162
+
163
+ <div style="font-size:2.5em; font-weight:bold; background: linear-gradient(45deg, #3d1a66, #FFD700); -webkit-background-clip: text; -webkit-text-fill-color: transparent;">
164
+ LexiFreak Unleashed
165
+ </div>
166
+ <div style="font-size:1.2em; color: #a0a0a0; margin-top: 10px;">
167
+ <i>A freak no longer on a leash.</i>
168
+ </div>
169
+
170
+ </div>
171
+
172
+ <div style="border:1px solid #333; border-radius:10px; padding:20px; margin:20px 0; background: rgba(0,0,0,0.4);">
173
+
174
+ ## ⛓️ Model Overview
175
+
176
+ This model is a finetune of `Orenguteng/Llama-3-8B-LexiFun-Uncensored-V1`, trained on a bunch of internet culture meme room chats that often devolved into actual roleplay. This thing is absolutely brainrotted. It sent John Pork to 10 of my friends and now I have 0 friends.
177
+
178
+ </div>
179
+
180
+ <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 20px; margin: 20px 0;">
181
+
182
+ <div style="border:2px solid; border-radius:10px; padding:20px;">
183
+
184
+ ### 💾 Quantizations
185
+ <div style="text-align: center; padding-top: 10px; font-size:1.1em; color: #a0a0a0;">
186
+ <!-- You can add links to your GGUF, EXL2, etc. here -->
187
+ Coming soon!
188
+ </div>
189
+ <!-- Example Table for when you have quants:
190
+ | Type | Link |
191
+ |:---:|:---:|
192
+ | `GGUF` | <a href="#">Link Here</a> |
193
+ | `EXL2` | <a href="#">Link Here</a> |
194
+ -->
195
+ </div>
196
+
197
+ <div style="border:2px solid; border-radius:10px; padding:20px;">
198
+
199
+ ### 족 Model Details
200
+ - **Base Model:** `Orenguteng/Llama-3-8B-LexiFun-Uncensored-V1`
201
+ - **Architecture:** Llama 3 8B
202
+ - **License:** Llama 3
203
+ - **Focus:** Rizz
204
+
205
+ </div>
206
+
207
+ </div>
208
+
209
+ <div style="border: 2px solid; border-radius: 10px; padding: 20px; margin: 20px 0;">
210
+
211
+ ## ⚙️ Recommended Samplers
212
+
213
+ Good luck, higher temperatures increase the brainrot a little
214
+
215
+ ```yaml
216
+ temperature: 0.69
217
+ min_p: 0.01
218
+ ```
219
+
220
+ </div>
221
+
222
+ <div style="border: 2px solid; border-radius: 10px; padding: 20px; margin: 20px 0;">
223
+
224
+ ## 🖋��� Prompt Format
225
+
226
+ This model uses the Llama 3 Instruct format. Ensure your inputs are structured correctly for optimal performance.
227
+
228
+ </div>
229
+
230
+ <hr>
231
+
232
+ <div align="center">
233
+ <div style="font-size:0.8em; opacity:0.8;">Model by</div>
234
+ <div style="font-size:1.5em; font-weight:bold; background: linear-gradient(45deg, #3d1a66, #FFD700); -webkit-background-clip: text; -webkit-text-fill-color: transparent;">soundTeam</div>
235
+ </div>
236
+
237
+ </div>
238
+ </body>
239
+ </html>
240
+ ```
chat_template.jinja ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ {% set loop_messages = messages %}{% for message in loop_messages %}{% set content = '<|start_header_id|>' + message['role'] + '<|end_header_id|>
2
+
3
+ '+ message['content'] | trim + eos_token %}{% if loop.index0 == 0 %}{% set content = bos_token + content %}{% endif %}{{ content }}{% endfor %}{% if add_generation_prompt %}{{ '<|start_header_id|>assistant<|end_header_id|>
4
+
5
+ ' }}{% endif %}
config.json ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "LlamaForCausalLM"
4
+ ],
5
+ "attention_bias": false,
6
+ "attention_dropout": 0.0,
7
+ "bos_token_id": 128000,
8
+ "dtype": "bfloat16",
9
+ "eos_token_id": 128009,
10
+ "head_dim": 128,
11
+ "hidden_act": "silu",
12
+ "hidden_size": 4096,
13
+ "initializer_range": 0.02,
14
+ "intermediate_size": 14336,
15
+ "max_position_embeddings": 8192,
16
+ "mlp_bias": false,
17
+ "model_type": "llama",
18
+ "num_attention_heads": 32,
19
+ "num_hidden_layers": 32,
20
+ "num_key_value_heads": 8,
21
+ "pad_token_id": 128256,
22
+ "pretraining_tp": 1,
23
+ "rms_norm_eps": 1e-05,
24
+ "rope_scaling": null,
25
+ "rope_theta": 500000.0,
26
+ "tie_word_embeddings": false,
27
+ "transformers_version": "4.56.1",
28
+ "use_cache": false,
29
+ "vocab_size": 128257,
30
+ "quantization_config": {
31
+ "quant_method": "exl3",
32
+ "version": "0.0.7",
33
+ "bits": 8.0,
34
+ "head_bits": 8,
35
+ "calibration": {
36
+ "rows": 100,
37
+ "cols": 2048
38
+ },
39
+ "out_scales": "auto"
40
+ }
41
+ }
generation_config.json ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_from_model_config": true,
3
+ "bos_token_id": 128000,
4
+ "do_sample": true,
5
+ "eos_token_id": [
6
+ 128001,
7
+ 128009
8
+ ],
9
+ "pad_token_id": 128256,
10
+ "transformers_version": "4.56.1"
11
+ }
quantization_config.json ADDED
The diff for this file is too large to render. See raw diff
 
special_tokens_map.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "bos_token": {
3
+ "content": "<|begin_of_text|>",
4
+ "lstrip": false,
5
+ "normalized": false,
6
+ "rstrip": false,
7
+ "single_word": false
8
+ },
9
+ "eos_token": {
10
+ "content": "<|eot_id|>",
11
+ "lstrip": false,
12
+ "normalized": false,
13
+ "rstrip": false,
14
+ "single_word": false
15
+ },
16
+ "pad_token": {
17
+ "content": "<|finetune_right_pad_id|>",
18
+ "lstrip": false,
19
+ "normalized": false,
20
+ "rstrip": false,
21
+ "single_word": false
22
+ }
23
+ }
tokenizer_config.json ADDED
@@ -0,0 +1,2071 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "added_tokens_decoder": {
3
+ "128000": {
4
+ "content": "<|begin_of_text|>",
5
+ "lstrip": false,
6
+ "normalized": false,
7
+ "rstrip": false,
8
+ "single_word": false,
9
+ "special": true
10
+ },
11
+ "128001": {
12
+ "content": "<|end_of_text|>",
13
+ "lstrip": false,
14
+ "normalized": false,
15
+ "rstrip": false,
16
+ "single_word": false,
17
+ "special": true
18
+ },
19
+ "128002": {
20
+ "content": "<|reserved_special_token_0|>",
21
+ "lstrip": false,
22
+ "normalized": false,
23
+ "rstrip": false,
24
+ "single_word": false,
25
+ "special": true
26
+ },
27
+ "128003": {
28
+ "content": "<|reserved_special_token_1|>",
29
+ "lstrip": false,
30
+ "normalized": false,
31
+ "rstrip": false,
32
+ "single_word": false,
33
+ "special": true
34
+ },
35
+ "128004": {
36
+ "content": "<|reserved_special_token_2|>",
37
+ "lstrip": false,
38
+ "normalized": false,
39
+ "rstrip": false,
40
+ "single_word": false,
41
+ "special": true
42
+ },
43
+ "128005": {
44
+ "content": "<|reserved_special_token_3|>",
45
+ "lstrip": false,
46
+ "normalized": false,
47
+ "rstrip": false,
48
+ "single_word": false,
49
+ "special": true
50
+ },
51
+ "128006": {
52
+ "content": "<|start_header_id|>",
53
+ "lstrip": false,
54
+ "normalized": false,
55
+ "rstrip": false,
56
+ "single_word": false,
57
+ "special": true
58
+ },
59
+ "128007": {
60
+ "content": "<|end_header_id|>",
61
+ "lstrip": false,
62
+ "normalized": false,
63
+ "rstrip": false,
64
+ "single_word": false,
65
+ "special": true
66
+ },
67
+ "128008": {
68
+ "content": "<|reserved_special_token_4|>",
69
+ "lstrip": false,
70
+ "normalized": false,
71
+ "rstrip": false,
72
+ "single_word": false,
73
+ "special": true
74
+ },
75
+ "128009": {
76
+ "content": "<|eot_id|>",
77
+ "lstrip": false,
78
+ "normalized": false,
79
+ "rstrip": false,
80
+ "single_word": false,
81
+ "special": true
82
+ },
83
+ "128010": {
84
+ "content": "<|reserved_special_token_5|>",
85
+ "lstrip": false,
86
+ "normalized": false,
87
+ "rstrip": false,
88
+ "single_word": false,
89
+ "special": true
90
+ },
91
+ "128011": {
92
+ "content": "<|reserved_special_token_6|>",
93
+ "lstrip": false,
94
+ "normalized": false,
95
+ "rstrip": false,
96
+ "single_word": false,
97
+ "special": true
98
+ },
99
+ "128012": {
100
+ "content": "<|reserved_special_token_7|>",
101
+ "lstrip": false,
102
+ "normalized": false,
103
+ "rstrip": false,
104
+ "single_word": false,
105
+ "special": true
106
+ },
107
+ "128013": {
108
+ "content": "<|reserved_special_token_8|>",
109
+ "lstrip": false,
110
+ "normalized": false,
111
+ "rstrip": false,
112
+ "single_word": false,
113
+ "special": true
114
+ },
115
+ "128014": {
116
+ "content": "<|reserved_special_token_9|>",
117
+ "lstrip": false,
118
+ "normalized": false,
119
+ "rstrip": false,
120
+ "single_word": false,
121
+ "special": true
122
+ },
123
+ "128015": {
124
+ "content": "<|reserved_special_token_10|>",
125
+ "lstrip": false,
126
+ "normalized": false,
127
+ "rstrip": false,
128
+ "single_word": false,
129
+ "special": true
130
+ },
131
+ "128016": {
132
+ "content": "<|reserved_special_token_11|>",
133
+ "lstrip": false,
134
+ "normalized": false,
135
+ "rstrip": false,
136
+ "single_word": false,
137
+ "special": true
138
+ },
139
+ "128017": {
140
+ "content": "<|reserved_special_token_12|>",
141
+ "lstrip": false,
142
+ "normalized": false,
143
+ "rstrip": false,
144
+ "single_word": false,
145
+ "special": true
146
+ },
147
+ "128018": {
148
+ "content": "<|reserved_special_token_13|>",
149
+ "lstrip": false,
150
+ "normalized": false,
151
+ "rstrip": false,
152
+ "single_word": false,
153
+ "special": true
154
+ },
155
+ "128019": {
156
+ "content": "<|reserved_special_token_14|>",
157
+ "lstrip": false,
158
+ "normalized": false,
159
+ "rstrip": false,
160
+ "single_word": false,
161
+ "special": true
162
+ },
163
+ "128020": {
164
+ "content": "<|reserved_special_token_15|>",
165
+ "lstrip": false,
166
+ "normalized": false,
167
+ "rstrip": false,
168
+ "single_word": false,
169
+ "special": true
170
+ },
171
+ "128021": {
172
+ "content": "<|reserved_special_token_16|>",
173
+ "lstrip": false,
174
+ "normalized": false,
175
+ "rstrip": false,
176
+ "single_word": false,
177
+ "special": true
178
+ },
179
+ "128022": {
180
+ "content": "<|reserved_special_token_17|>",
181
+ "lstrip": false,
182
+ "normalized": false,
183
+ "rstrip": false,
184
+ "single_word": false,
185
+ "special": true
186
+ },
187
+ "128023": {
188
+ "content": "<|reserved_special_token_18|>",
189
+ "lstrip": false,
190
+ "normalized": false,
191
+ "rstrip": false,
192
+ "single_word": false,
193
+ "special": true
194
+ },
195
+ "128024": {
196
+ "content": "<|reserved_special_token_19|>",
197
+ "lstrip": false,
198
+ "normalized": false,
199
+ "rstrip": false,
200
+ "single_word": false,
201
+ "special": true
202
+ },
203
+ "128025": {
204
+ "content": "<|reserved_special_token_20|>",
205
+ "lstrip": false,
206
+ "normalized": false,
207
+ "rstrip": false,
208
+ "single_word": false,
209
+ "special": true
210
+ },
211
+ "128026": {
212
+ "content": "<|reserved_special_token_21|>",
213
+ "lstrip": false,
214
+ "normalized": false,
215
+ "rstrip": false,
216
+ "single_word": false,
217
+ "special": true
218
+ },
219
+ "128027": {
220
+ "content": "<|reserved_special_token_22|>",
221
+ "lstrip": false,
222
+ "normalized": false,
223
+ "rstrip": false,
224
+ "single_word": false,
225
+ "special": true
226
+ },
227
+ "128028": {
228
+ "content": "<|reserved_special_token_23|>",
229
+ "lstrip": false,
230
+ "normalized": false,
231
+ "rstrip": false,
232
+ "single_word": false,
233
+ "special": true
234
+ },
235
+ "128029": {
236
+ "content": "<|reserved_special_token_24|>",
237
+ "lstrip": false,
238
+ "normalized": false,
239
+ "rstrip": false,
240
+ "single_word": false,
241
+ "special": true
242
+ },
243
+ "128030": {
244
+ "content": "<|reserved_special_token_25|>",
245
+ "lstrip": false,
246
+ "normalized": false,
247
+ "rstrip": false,
248
+ "single_word": false,
249
+ "special": true
250
+ },
251
+ "128031": {
252
+ "content": "<|reserved_special_token_26|>",
253
+ "lstrip": false,
254
+ "normalized": false,
255
+ "rstrip": false,
256
+ "single_word": false,
257
+ "special": true
258
+ },
259
+ "128032": {
260
+ "content": "<|reserved_special_token_27|>",
261
+ "lstrip": false,
262
+ "normalized": false,
263
+ "rstrip": false,
264
+ "single_word": false,
265
+ "special": true
266
+ },
267
+ "128033": {
268
+ "content": "<|reserved_special_token_28|>",
269
+ "lstrip": false,
270
+ "normalized": false,
271
+ "rstrip": false,
272
+ "single_word": false,
273
+ "special": true
274
+ },
275
+ "128034": {
276
+ "content": "<|reserved_special_token_29|>",
277
+ "lstrip": false,
278
+ "normalized": false,
279
+ "rstrip": false,
280
+ "single_word": false,
281
+ "special": true
282
+ },
283
+ "128035": {
284
+ "content": "<|reserved_special_token_30|>",
285
+ "lstrip": false,
286
+ "normalized": false,
287
+ "rstrip": false,
288
+ "single_word": false,
289
+ "special": true
290
+ },
291
+ "128036": {
292
+ "content": "<|reserved_special_token_31|>",
293
+ "lstrip": false,
294
+ "normalized": false,
295
+ "rstrip": false,
296
+ "single_word": false,
297
+ "special": true
298
+ },
299
+ "128037": {
300
+ "content": "<|reserved_special_token_32|>",
301
+ "lstrip": false,
302
+ "normalized": false,
303
+ "rstrip": false,
304
+ "single_word": false,
305
+ "special": true
306
+ },
307
+ "128038": {
308
+ "content": "<|reserved_special_token_33|>",
309
+ "lstrip": false,
310
+ "normalized": false,
311
+ "rstrip": false,
312
+ "single_word": false,
313
+ "special": true
314
+ },
315
+ "128039": {
316
+ "content": "<|reserved_special_token_34|>",
317
+ "lstrip": false,
318
+ "normalized": false,
319
+ "rstrip": false,
320
+ "single_word": false,
321
+ "special": true
322
+ },
323
+ "128040": {
324
+ "content": "<|reserved_special_token_35|>",
325
+ "lstrip": false,
326
+ "normalized": false,
327
+ "rstrip": false,
328
+ "single_word": false,
329
+ "special": true
330
+ },
331
+ "128041": {
332
+ "content": "<|reserved_special_token_36|>",
333
+ "lstrip": false,
334
+ "normalized": false,
335
+ "rstrip": false,
336
+ "single_word": false,
337
+ "special": true
338
+ },
339
+ "128042": {
340
+ "content": "<|reserved_special_token_37|>",
341
+ "lstrip": false,
342
+ "normalized": false,
343
+ "rstrip": false,
344
+ "single_word": false,
345
+ "special": true
346
+ },
347
+ "128043": {
348
+ "content": "<|reserved_special_token_38|>",
349
+ "lstrip": false,
350
+ "normalized": false,
351
+ "rstrip": false,
352
+ "single_word": false,
353
+ "special": true
354
+ },
355
+ "128044": {
356
+ "content": "<|reserved_special_token_39|>",
357
+ "lstrip": false,
358
+ "normalized": false,
359
+ "rstrip": false,
360
+ "single_word": false,
361
+ "special": true
362
+ },
363
+ "128045": {
364
+ "content": "<|reserved_special_token_40|>",
365
+ "lstrip": false,
366
+ "normalized": false,
367
+ "rstrip": false,
368
+ "single_word": false,
369
+ "special": true
370
+ },
371
+ "128046": {
372
+ "content": "<|reserved_special_token_41|>",
373
+ "lstrip": false,
374
+ "normalized": false,
375
+ "rstrip": false,
376
+ "single_word": false,
377
+ "special": true
378
+ },
379
+ "128047": {
380
+ "content": "<|reserved_special_token_42|>",
381
+ "lstrip": false,
382
+ "normalized": false,
383
+ "rstrip": false,
384
+ "single_word": false,
385
+ "special": true
386
+ },
387
+ "128048": {
388
+ "content": "<|reserved_special_token_43|>",
389
+ "lstrip": false,
390
+ "normalized": false,
391
+ "rstrip": false,
392
+ "single_word": false,
393
+ "special": true
394
+ },
395
+ "128049": {
396
+ "content": "<|reserved_special_token_44|>",
397
+ "lstrip": false,
398
+ "normalized": false,
399
+ "rstrip": false,
400
+ "single_word": false,
401
+ "special": true
402
+ },
403
+ "128050": {
404
+ "content": "<|reserved_special_token_45|>",
405
+ "lstrip": false,
406
+ "normalized": false,
407
+ "rstrip": false,
408
+ "single_word": false,
409
+ "special": true
410
+ },
411
+ "128051": {
412
+ "content": "<|reserved_special_token_46|>",
413
+ "lstrip": false,
414
+ "normalized": false,
415
+ "rstrip": false,
416
+ "single_word": false,
417
+ "special": true
418
+ },
419
+ "128052": {
420
+ "content": "<|reserved_special_token_47|>",
421
+ "lstrip": false,
422
+ "normalized": false,
423
+ "rstrip": false,
424
+ "single_word": false,
425
+ "special": true
426
+ },
427
+ "128053": {
428
+ "content": "<|reserved_special_token_48|>",
429
+ "lstrip": false,
430
+ "normalized": false,
431
+ "rstrip": false,
432
+ "single_word": false,
433
+ "special": true
434
+ },
435
+ "128054": {
436
+ "content": "<|reserved_special_token_49|>",
437
+ "lstrip": false,
438
+ "normalized": false,
439
+ "rstrip": false,
440
+ "single_word": false,
441
+ "special": true
442
+ },
443
+ "128055": {
444
+ "content": "<|reserved_special_token_50|>",
445
+ "lstrip": false,
446
+ "normalized": false,
447
+ "rstrip": false,
448
+ "single_word": false,
449
+ "special": true
450
+ },
451
+ "128056": {
452
+ "content": "<|reserved_special_token_51|>",
453
+ "lstrip": false,
454
+ "normalized": false,
455
+ "rstrip": false,
456
+ "single_word": false,
457
+ "special": true
458
+ },
459
+ "128057": {
460
+ "content": "<|reserved_special_token_52|>",
461
+ "lstrip": false,
462
+ "normalized": false,
463
+ "rstrip": false,
464
+ "single_word": false,
465
+ "special": true
466
+ },
467
+ "128058": {
468
+ "content": "<|reserved_special_token_53|>",
469
+ "lstrip": false,
470
+ "normalized": false,
471
+ "rstrip": false,
472
+ "single_word": false,
473
+ "special": true
474
+ },
475
+ "128059": {
476
+ "content": "<|reserved_special_token_54|>",
477
+ "lstrip": false,
478
+ "normalized": false,
479
+ "rstrip": false,
480
+ "single_word": false,
481
+ "special": true
482
+ },
483
+ "128060": {
484
+ "content": "<|reserved_special_token_55|>",
485
+ "lstrip": false,
486
+ "normalized": false,
487
+ "rstrip": false,
488
+ "single_word": false,
489
+ "special": true
490
+ },
491
+ "128061": {
492
+ "content": "<|reserved_special_token_56|>",
493
+ "lstrip": false,
494
+ "normalized": false,
495
+ "rstrip": false,
496
+ "single_word": false,
497
+ "special": true
498
+ },
499
+ "128062": {
500
+ "content": "<|reserved_special_token_57|>",
501
+ "lstrip": false,
502
+ "normalized": false,
503
+ "rstrip": false,
504
+ "single_word": false,
505
+ "special": true
506
+ },
507
+ "128063": {
508
+ "content": "<|reserved_special_token_58|>",
509
+ "lstrip": false,
510
+ "normalized": false,
511
+ "rstrip": false,
512
+ "single_word": false,
513
+ "special": true
514
+ },
515
+ "128064": {
516
+ "content": "<|reserved_special_token_59|>",
517
+ "lstrip": false,
518
+ "normalized": false,
519
+ "rstrip": false,
520
+ "single_word": false,
521
+ "special": true
522
+ },
523
+ "128065": {
524
+ "content": "<|reserved_special_token_60|>",
525
+ "lstrip": false,
526
+ "normalized": false,
527
+ "rstrip": false,
528
+ "single_word": false,
529
+ "special": true
530
+ },
531
+ "128066": {
532
+ "content": "<|reserved_special_token_61|>",
533
+ "lstrip": false,
534
+ "normalized": false,
535
+ "rstrip": false,
536
+ "single_word": false,
537
+ "special": true
538
+ },
539
+ "128067": {
540
+ "content": "<|reserved_special_token_62|>",
541
+ "lstrip": false,
542
+ "normalized": false,
543
+ "rstrip": false,
544
+ "single_word": false,
545
+ "special": true
546
+ },
547
+ "128068": {
548
+ "content": "<|reserved_special_token_63|>",
549
+ "lstrip": false,
550
+ "normalized": false,
551
+ "rstrip": false,
552
+ "single_word": false,
553
+ "special": true
554
+ },
555
+ "128069": {
556
+ "content": "<|reserved_special_token_64|>",
557
+ "lstrip": false,
558
+ "normalized": false,
559
+ "rstrip": false,
560
+ "single_word": false,
561
+ "special": true
562
+ },
563
+ "128070": {
564
+ "content": "<|reserved_special_token_65|>",
565
+ "lstrip": false,
566
+ "normalized": false,
567
+ "rstrip": false,
568
+ "single_word": false,
569
+ "special": true
570
+ },
571
+ "128071": {
572
+ "content": "<|reserved_special_token_66|>",
573
+ "lstrip": false,
574
+ "normalized": false,
575
+ "rstrip": false,
576
+ "single_word": false,
577
+ "special": true
578
+ },
579
+ "128072": {
580
+ "content": "<|reserved_special_token_67|>",
581
+ "lstrip": false,
582
+ "normalized": false,
583
+ "rstrip": false,
584
+ "single_word": false,
585
+ "special": true
586
+ },
587
+ "128073": {
588
+ "content": "<|reserved_special_token_68|>",
589
+ "lstrip": false,
590
+ "normalized": false,
591
+ "rstrip": false,
592
+ "single_word": false,
593
+ "special": true
594
+ },
595
+ "128074": {
596
+ "content": "<|reserved_special_token_69|>",
597
+ "lstrip": false,
598
+ "normalized": false,
599
+ "rstrip": false,
600
+ "single_word": false,
601
+ "special": true
602
+ },
603
+ "128075": {
604
+ "content": "<|reserved_special_token_70|>",
605
+ "lstrip": false,
606
+ "normalized": false,
607
+ "rstrip": false,
608
+ "single_word": false,
609
+ "special": true
610
+ },
611
+ "128076": {
612
+ "content": "<|reserved_special_token_71|>",
613
+ "lstrip": false,
614
+ "normalized": false,
615
+ "rstrip": false,
616
+ "single_word": false,
617
+ "special": true
618
+ },
619
+ "128077": {
620
+ "content": "<|reserved_special_token_72|>",
621
+ "lstrip": false,
622
+ "normalized": false,
623
+ "rstrip": false,
624
+ "single_word": false,
625
+ "special": true
626
+ },
627
+ "128078": {
628
+ "content": "<|reserved_special_token_73|>",
629
+ "lstrip": false,
630
+ "normalized": false,
631
+ "rstrip": false,
632
+ "single_word": false,
633
+ "special": true
634
+ },
635
+ "128079": {
636
+ "content": "<|reserved_special_token_74|>",
637
+ "lstrip": false,
638
+ "normalized": false,
639
+ "rstrip": false,
640
+ "single_word": false,
641
+ "special": true
642
+ },
643
+ "128080": {
644
+ "content": "<|reserved_special_token_75|>",
645
+ "lstrip": false,
646
+ "normalized": false,
647
+ "rstrip": false,
648
+ "single_word": false,
649
+ "special": true
650
+ },
651
+ "128081": {
652
+ "content": "<|reserved_special_token_76|>",
653
+ "lstrip": false,
654
+ "normalized": false,
655
+ "rstrip": false,
656
+ "single_word": false,
657
+ "special": true
658
+ },
659
+ "128082": {
660
+ "content": "<|reserved_special_token_77|>",
661
+ "lstrip": false,
662
+ "normalized": false,
663
+ "rstrip": false,
664
+ "single_word": false,
665
+ "special": true
666
+ },
667
+ "128083": {
668
+ "content": "<|reserved_special_token_78|>",
669
+ "lstrip": false,
670
+ "normalized": false,
671
+ "rstrip": false,
672
+ "single_word": false,
673
+ "special": true
674
+ },
675
+ "128084": {
676
+ "content": "<|reserved_special_token_79|>",
677
+ "lstrip": false,
678
+ "normalized": false,
679
+ "rstrip": false,
680
+ "single_word": false,
681
+ "special": true
682
+ },
683
+ "128085": {
684
+ "content": "<|reserved_special_token_80|>",
685
+ "lstrip": false,
686
+ "normalized": false,
687
+ "rstrip": false,
688
+ "single_word": false,
689
+ "special": true
690
+ },
691
+ "128086": {
692
+ "content": "<|reserved_special_token_81|>",
693
+ "lstrip": false,
694
+ "normalized": false,
695
+ "rstrip": false,
696
+ "single_word": false,
697
+ "special": true
698
+ },
699
+ "128087": {
700
+ "content": "<|reserved_special_token_82|>",
701
+ "lstrip": false,
702
+ "normalized": false,
703
+ "rstrip": false,
704
+ "single_word": false,
705
+ "special": true
706
+ },
707
+ "128088": {
708
+ "content": "<|reserved_special_token_83|>",
709
+ "lstrip": false,
710
+ "normalized": false,
711
+ "rstrip": false,
712
+ "single_word": false,
713
+ "special": true
714
+ },
715
+ "128089": {
716
+ "content": "<|reserved_special_token_84|>",
717
+ "lstrip": false,
718
+ "normalized": false,
719
+ "rstrip": false,
720
+ "single_word": false,
721
+ "special": true
722
+ },
723
+ "128090": {
724
+ "content": "<|reserved_special_token_85|>",
725
+ "lstrip": false,
726
+ "normalized": false,
727
+ "rstrip": false,
728
+ "single_word": false,
729
+ "special": true
730
+ },
731
+ "128091": {
732
+ "content": "<|reserved_special_token_86|>",
733
+ "lstrip": false,
734
+ "normalized": false,
735
+ "rstrip": false,
736
+ "single_word": false,
737
+ "special": true
738
+ },
739
+ "128092": {
740
+ "content": "<|reserved_special_token_87|>",
741
+ "lstrip": false,
742
+ "normalized": false,
743
+ "rstrip": false,
744
+ "single_word": false,
745
+ "special": true
746
+ },
747
+ "128093": {
748
+ "content": "<|reserved_special_token_88|>",
749
+ "lstrip": false,
750
+ "normalized": false,
751
+ "rstrip": false,
752
+ "single_word": false,
753
+ "special": true
754
+ },
755
+ "128094": {
756
+ "content": "<|reserved_special_token_89|>",
757
+ "lstrip": false,
758
+ "normalized": false,
759
+ "rstrip": false,
760
+ "single_word": false,
761
+ "special": true
762
+ },
763
+ "128095": {
764
+ "content": "<|reserved_special_token_90|>",
765
+ "lstrip": false,
766
+ "normalized": false,
767
+ "rstrip": false,
768
+ "single_word": false,
769
+ "special": true
770
+ },
771
+ "128096": {
772
+ "content": "<|reserved_special_token_91|>",
773
+ "lstrip": false,
774
+ "normalized": false,
775
+ "rstrip": false,
776
+ "single_word": false,
777
+ "special": true
778
+ },
779
+ "128097": {
780
+ "content": "<|reserved_special_token_92|>",
781
+ "lstrip": false,
782
+ "normalized": false,
783
+ "rstrip": false,
784
+ "single_word": false,
785
+ "special": true
786
+ },
787
+ "128098": {
788
+ "content": "<|reserved_special_token_93|>",
789
+ "lstrip": false,
790
+ "normalized": false,
791
+ "rstrip": false,
792
+ "single_word": false,
793
+ "special": true
794
+ },
795
+ "128099": {
796
+ "content": "<|reserved_special_token_94|>",
797
+ "lstrip": false,
798
+ "normalized": false,
799
+ "rstrip": false,
800
+ "single_word": false,
801
+ "special": true
802
+ },
803
+ "128100": {
804
+ "content": "<|reserved_special_token_95|>",
805
+ "lstrip": false,
806
+ "normalized": false,
807
+ "rstrip": false,
808
+ "single_word": false,
809
+ "special": true
810
+ },
811
+ "128101": {
812
+ "content": "<|reserved_special_token_96|>",
813
+ "lstrip": false,
814
+ "normalized": false,
815
+ "rstrip": false,
816
+ "single_word": false,
817
+ "special": true
818
+ },
819
+ "128102": {
820
+ "content": "<|reserved_special_token_97|>",
821
+ "lstrip": false,
822
+ "normalized": false,
823
+ "rstrip": false,
824
+ "single_word": false,
825
+ "special": true
826
+ },
827
+ "128103": {
828
+ "content": "<|reserved_special_token_98|>",
829
+ "lstrip": false,
830
+ "normalized": false,
831
+ "rstrip": false,
832
+ "single_word": false,
833
+ "special": true
834
+ },
835
+ "128104": {
836
+ "content": "<|reserved_special_token_99|>",
837
+ "lstrip": false,
838
+ "normalized": false,
839
+ "rstrip": false,
840
+ "single_word": false,
841
+ "special": true
842
+ },
843
+ "128105": {
844
+ "content": "<|reserved_special_token_100|>",
845
+ "lstrip": false,
846
+ "normalized": false,
847
+ "rstrip": false,
848
+ "single_word": false,
849
+ "special": true
850
+ },
851
+ "128106": {
852
+ "content": "<|reserved_special_token_101|>",
853
+ "lstrip": false,
854
+ "normalized": false,
855
+ "rstrip": false,
856
+ "single_word": false,
857
+ "special": true
858
+ },
859
+ "128107": {
860
+ "content": "<|reserved_special_token_102|>",
861
+ "lstrip": false,
862
+ "normalized": false,
863
+ "rstrip": false,
864
+ "single_word": false,
865
+ "special": true
866
+ },
867
+ "128108": {
868
+ "content": "<|reserved_special_token_103|>",
869
+ "lstrip": false,
870
+ "normalized": false,
871
+ "rstrip": false,
872
+ "single_word": false,
873
+ "special": true
874
+ },
875
+ "128109": {
876
+ "content": "<|reserved_special_token_104|>",
877
+ "lstrip": false,
878
+ "normalized": false,
879
+ "rstrip": false,
880
+ "single_word": false,
881
+ "special": true
882
+ },
883
+ "128110": {
884
+ "content": "<|reserved_special_token_105|>",
885
+ "lstrip": false,
886
+ "normalized": false,
887
+ "rstrip": false,
888
+ "single_word": false,
889
+ "special": true
890
+ },
891
+ "128111": {
892
+ "content": "<|reserved_special_token_106|>",
893
+ "lstrip": false,
894
+ "normalized": false,
895
+ "rstrip": false,
896
+ "single_word": false,
897
+ "special": true
898
+ },
899
+ "128112": {
900
+ "content": "<|reserved_special_token_107|>",
901
+ "lstrip": false,
902
+ "normalized": false,
903
+ "rstrip": false,
904
+ "single_word": false,
905
+ "special": true
906
+ },
907
+ "128113": {
908
+ "content": "<|reserved_special_token_108|>",
909
+ "lstrip": false,
910
+ "normalized": false,
911
+ "rstrip": false,
912
+ "single_word": false,
913
+ "special": true
914
+ },
915
+ "128114": {
916
+ "content": "<|reserved_special_token_109|>",
917
+ "lstrip": false,
918
+ "normalized": false,
919
+ "rstrip": false,
920
+ "single_word": false,
921
+ "special": true
922
+ },
923
+ "128115": {
924
+ "content": "<|reserved_special_token_110|>",
925
+ "lstrip": false,
926
+ "normalized": false,
927
+ "rstrip": false,
928
+ "single_word": false,
929
+ "special": true
930
+ },
931
+ "128116": {
932
+ "content": "<|reserved_special_token_111|>",
933
+ "lstrip": false,
934
+ "normalized": false,
935
+ "rstrip": false,
936
+ "single_word": false,
937
+ "special": true
938
+ },
939
+ "128117": {
940
+ "content": "<|reserved_special_token_112|>",
941
+ "lstrip": false,
942
+ "normalized": false,
943
+ "rstrip": false,
944
+ "single_word": false,
945
+ "special": true
946
+ },
947
+ "128118": {
948
+ "content": "<|reserved_special_token_113|>",
949
+ "lstrip": false,
950
+ "normalized": false,
951
+ "rstrip": false,
952
+ "single_word": false,
953
+ "special": true
954
+ },
955
+ "128119": {
956
+ "content": "<|reserved_special_token_114|>",
957
+ "lstrip": false,
958
+ "normalized": false,
959
+ "rstrip": false,
960
+ "single_word": false,
961
+ "special": true
962
+ },
963
+ "128120": {
964
+ "content": "<|reserved_special_token_115|>",
965
+ "lstrip": false,
966
+ "normalized": false,
967
+ "rstrip": false,
968
+ "single_word": false,
969
+ "special": true
970
+ },
971
+ "128121": {
972
+ "content": "<|reserved_special_token_116|>",
973
+ "lstrip": false,
974
+ "normalized": false,
975
+ "rstrip": false,
976
+ "single_word": false,
977
+ "special": true
978
+ },
979
+ "128122": {
980
+ "content": "<|reserved_special_token_117|>",
981
+ "lstrip": false,
982
+ "normalized": false,
983
+ "rstrip": false,
984
+ "single_word": false,
985
+ "special": true
986
+ },
987
+ "128123": {
988
+ "content": "<|reserved_special_token_118|>",
989
+ "lstrip": false,
990
+ "normalized": false,
991
+ "rstrip": false,
992
+ "single_word": false,
993
+ "special": true
994
+ },
995
+ "128124": {
996
+ "content": "<|reserved_special_token_119|>",
997
+ "lstrip": false,
998
+ "normalized": false,
999
+ "rstrip": false,
1000
+ "single_word": false,
1001
+ "special": true
1002
+ },
1003
+ "128125": {
1004
+ "content": "<|reserved_special_token_120|>",
1005
+ "lstrip": false,
1006
+ "normalized": false,
1007
+ "rstrip": false,
1008
+ "single_word": false,
1009
+ "special": true
1010
+ },
1011
+ "128126": {
1012
+ "content": "<|reserved_special_token_121|>",
1013
+ "lstrip": false,
1014
+ "normalized": false,
1015
+ "rstrip": false,
1016
+ "single_word": false,
1017
+ "special": true
1018
+ },
1019
+ "128127": {
1020
+ "content": "<|reserved_special_token_122|>",
1021
+ "lstrip": false,
1022
+ "normalized": false,
1023
+ "rstrip": false,
1024
+ "single_word": false,
1025
+ "special": true
1026
+ },
1027
+ "128128": {
1028
+ "content": "<|reserved_special_token_123|>",
1029
+ "lstrip": false,
1030
+ "normalized": false,
1031
+ "rstrip": false,
1032
+ "single_word": false,
1033
+ "special": true
1034
+ },
1035
+ "128129": {
1036
+ "content": "<|reserved_special_token_124|>",
1037
+ "lstrip": false,
1038
+ "normalized": false,
1039
+ "rstrip": false,
1040
+ "single_word": false,
1041
+ "special": true
1042
+ },
1043
+ "128130": {
1044
+ "content": "<|reserved_special_token_125|>",
1045
+ "lstrip": false,
1046
+ "normalized": false,
1047
+ "rstrip": false,
1048
+ "single_word": false,
1049
+ "special": true
1050
+ },
1051
+ "128131": {
1052
+ "content": "<|reserved_special_token_126|>",
1053
+ "lstrip": false,
1054
+ "normalized": false,
1055
+ "rstrip": false,
1056
+ "single_word": false,
1057
+ "special": true
1058
+ },
1059
+ "128132": {
1060
+ "content": "<|reserved_special_token_127|>",
1061
+ "lstrip": false,
1062
+ "normalized": false,
1063
+ "rstrip": false,
1064
+ "single_word": false,
1065
+ "special": true
1066
+ },
1067
+ "128133": {
1068
+ "content": "<|reserved_special_token_128|>",
1069
+ "lstrip": false,
1070
+ "normalized": false,
1071
+ "rstrip": false,
1072
+ "single_word": false,
1073
+ "special": true
1074
+ },
1075
+ "128134": {
1076
+ "content": "<|reserved_special_token_129|>",
1077
+ "lstrip": false,
1078
+ "normalized": false,
1079
+ "rstrip": false,
1080
+ "single_word": false,
1081
+ "special": true
1082
+ },
1083
+ "128135": {
1084
+ "content": "<|reserved_special_token_130|>",
1085
+ "lstrip": false,
1086
+ "normalized": false,
1087
+ "rstrip": false,
1088
+ "single_word": false,
1089
+ "special": true
1090
+ },
1091
+ "128136": {
1092
+ "content": "<|reserved_special_token_131|>",
1093
+ "lstrip": false,
1094
+ "normalized": false,
1095
+ "rstrip": false,
1096
+ "single_word": false,
1097
+ "special": true
1098
+ },
1099
+ "128137": {
1100
+ "content": "<|reserved_special_token_132|>",
1101
+ "lstrip": false,
1102
+ "normalized": false,
1103
+ "rstrip": false,
1104
+ "single_word": false,
1105
+ "special": true
1106
+ },
1107
+ "128138": {
1108
+ "content": "<|reserved_special_token_133|>",
1109
+ "lstrip": false,
1110
+ "normalized": false,
1111
+ "rstrip": false,
1112
+ "single_word": false,
1113
+ "special": true
1114
+ },
1115
+ "128139": {
1116
+ "content": "<|reserved_special_token_134|>",
1117
+ "lstrip": false,
1118
+ "normalized": false,
1119
+ "rstrip": false,
1120
+ "single_word": false,
1121
+ "special": true
1122
+ },
1123
+ "128140": {
1124
+ "content": "<|reserved_special_token_135|>",
1125
+ "lstrip": false,
1126
+ "normalized": false,
1127
+ "rstrip": false,
1128
+ "single_word": false,
1129
+ "special": true
1130
+ },
1131
+ "128141": {
1132
+ "content": "<|reserved_special_token_136|>",
1133
+ "lstrip": false,
1134
+ "normalized": false,
1135
+ "rstrip": false,
1136
+ "single_word": false,
1137
+ "special": true
1138
+ },
1139
+ "128142": {
1140
+ "content": "<|reserved_special_token_137|>",
1141
+ "lstrip": false,
1142
+ "normalized": false,
1143
+ "rstrip": false,
1144
+ "single_word": false,
1145
+ "special": true
1146
+ },
1147
+ "128143": {
1148
+ "content": "<|reserved_special_token_138|>",
1149
+ "lstrip": false,
1150
+ "normalized": false,
1151
+ "rstrip": false,
1152
+ "single_word": false,
1153
+ "special": true
1154
+ },
1155
+ "128144": {
1156
+ "content": "<|reserved_special_token_139|>",
1157
+ "lstrip": false,
1158
+ "normalized": false,
1159
+ "rstrip": false,
1160
+ "single_word": false,
1161
+ "special": true
1162
+ },
1163
+ "128145": {
1164
+ "content": "<|reserved_special_token_140|>",
1165
+ "lstrip": false,
1166
+ "normalized": false,
1167
+ "rstrip": false,
1168
+ "single_word": false,
1169
+ "special": true
1170
+ },
1171
+ "128146": {
1172
+ "content": "<|reserved_special_token_141|>",
1173
+ "lstrip": false,
1174
+ "normalized": false,
1175
+ "rstrip": false,
1176
+ "single_word": false,
1177
+ "special": true
1178
+ },
1179
+ "128147": {
1180
+ "content": "<|reserved_special_token_142|>",
1181
+ "lstrip": false,
1182
+ "normalized": false,
1183
+ "rstrip": false,
1184
+ "single_word": false,
1185
+ "special": true
1186
+ },
1187
+ "128148": {
1188
+ "content": "<|reserved_special_token_143|>",
1189
+ "lstrip": false,
1190
+ "normalized": false,
1191
+ "rstrip": false,
1192
+ "single_word": false,
1193
+ "special": true
1194
+ },
1195
+ "128149": {
1196
+ "content": "<|reserved_special_token_144|>",
1197
+ "lstrip": false,
1198
+ "normalized": false,
1199
+ "rstrip": false,
1200
+ "single_word": false,
1201
+ "special": true
1202
+ },
1203
+ "128150": {
1204
+ "content": "<|reserved_special_token_145|>",
1205
+ "lstrip": false,
1206
+ "normalized": false,
1207
+ "rstrip": false,
1208
+ "single_word": false,
1209
+ "special": true
1210
+ },
1211
+ "128151": {
1212
+ "content": "<|reserved_special_token_146|>",
1213
+ "lstrip": false,
1214
+ "normalized": false,
1215
+ "rstrip": false,
1216
+ "single_word": false,
1217
+ "special": true
1218
+ },
1219
+ "128152": {
1220
+ "content": "<|reserved_special_token_147|>",
1221
+ "lstrip": false,
1222
+ "normalized": false,
1223
+ "rstrip": false,
1224
+ "single_word": false,
1225
+ "special": true
1226
+ },
1227
+ "128153": {
1228
+ "content": "<|reserved_special_token_148|>",
1229
+ "lstrip": false,
1230
+ "normalized": false,
1231
+ "rstrip": false,
1232
+ "single_word": false,
1233
+ "special": true
1234
+ },
1235
+ "128154": {
1236
+ "content": "<|reserved_special_token_149|>",
1237
+ "lstrip": false,
1238
+ "normalized": false,
1239
+ "rstrip": false,
1240
+ "single_word": false,
1241
+ "special": true
1242
+ },
1243
+ "128155": {
1244
+ "content": "<|reserved_special_token_150|>",
1245
+ "lstrip": false,
1246
+ "normalized": false,
1247
+ "rstrip": false,
1248
+ "single_word": false,
1249
+ "special": true
1250
+ },
1251
+ "128156": {
1252
+ "content": "<|reserved_special_token_151|>",
1253
+ "lstrip": false,
1254
+ "normalized": false,
1255
+ "rstrip": false,
1256
+ "single_word": false,
1257
+ "special": true
1258
+ },
1259
+ "128157": {
1260
+ "content": "<|reserved_special_token_152|>",
1261
+ "lstrip": false,
1262
+ "normalized": false,
1263
+ "rstrip": false,
1264
+ "single_word": false,
1265
+ "special": true
1266
+ },
1267
+ "128158": {
1268
+ "content": "<|reserved_special_token_153|>",
1269
+ "lstrip": false,
1270
+ "normalized": false,
1271
+ "rstrip": false,
1272
+ "single_word": false,
1273
+ "special": true
1274
+ },
1275
+ "128159": {
1276
+ "content": "<|reserved_special_token_154|>",
1277
+ "lstrip": false,
1278
+ "normalized": false,
1279
+ "rstrip": false,
1280
+ "single_word": false,
1281
+ "special": true
1282
+ },
1283
+ "128160": {
1284
+ "content": "<|reserved_special_token_155|>",
1285
+ "lstrip": false,
1286
+ "normalized": false,
1287
+ "rstrip": false,
1288
+ "single_word": false,
1289
+ "special": true
1290
+ },
1291
+ "128161": {
1292
+ "content": "<|reserved_special_token_156|>",
1293
+ "lstrip": false,
1294
+ "normalized": false,
1295
+ "rstrip": false,
1296
+ "single_word": false,
1297
+ "special": true
1298
+ },
1299
+ "128162": {
1300
+ "content": "<|reserved_special_token_157|>",
1301
+ "lstrip": false,
1302
+ "normalized": false,
1303
+ "rstrip": false,
1304
+ "single_word": false,
1305
+ "special": true
1306
+ },
1307
+ "128163": {
1308
+ "content": "<|reserved_special_token_158|>",
1309
+ "lstrip": false,
1310
+ "normalized": false,
1311
+ "rstrip": false,
1312
+ "single_word": false,
1313
+ "special": true
1314
+ },
1315
+ "128164": {
1316
+ "content": "<|reserved_special_token_159|>",
1317
+ "lstrip": false,
1318
+ "normalized": false,
1319
+ "rstrip": false,
1320
+ "single_word": false,
1321
+ "special": true
1322
+ },
1323
+ "128165": {
1324
+ "content": "<|reserved_special_token_160|>",
1325
+ "lstrip": false,
1326
+ "normalized": false,
1327
+ "rstrip": false,
1328
+ "single_word": false,
1329
+ "special": true
1330
+ },
1331
+ "128166": {
1332
+ "content": "<|reserved_special_token_161|>",
1333
+ "lstrip": false,
1334
+ "normalized": false,
1335
+ "rstrip": false,
1336
+ "single_word": false,
1337
+ "special": true
1338
+ },
1339
+ "128167": {
1340
+ "content": "<|reserved_special_token_162|>",
1341
+ "lstrip": false,
1342
+ "normalized": false,
1343
+ "rstrip": false,
1344
+ "single_word": false,
1345
+ "special": true
1346
+ },
1347
+ "128168": {
1348
+ "content": "<|reserved_special_token_163|>",
1349
+ "lstrip": false,
1350
+ "normalized": false,
1351
+ "rstrip": false,
1352
+ "single_word": false,
1353
+ "special": true
1354
+ },
1355
+ "128169": {
1356
+ "content": "<|reserved_special_token_164|>",
1357
+ "lstrip": false,
1358
+ "normalized": false,
1359
+ "rstrip": false,
1360
+ "single_word": false,
1361
+ "special": true
1362
+ },
1363
+ "128170": {
1364
+ "content": "<|reserved_special_token_165|>",
1365
+ "lstrip": false,
1366
+ "normalized": false,
1367
+ "rstrip": false,
1368
+ "single_word": false,
1369
+ "special": true
1370
+ },
1371
+ "128171": {
1372
+ "content": "<|reserved_special_token_166|>",
1373
+ "lstrip": false,
1374
+ "normalized": false,
1375
+ "rstrip": false,
1376
+ "single_word": false,
1377
+ "special": true
1378
+ },
1379
+ "128172": {
1380
+ "content": "<|reserved_special_token_167|>",
1381
+ "lstrip": false,
1382
+ "normalized": false,
1383
+ "rstrip": false,
1384
+ "single_word": false,
1385
+ "special": true
1386
+ },
1387
+ "128173": {
1388
+ "content": "<|reserved_special_token_168|>",
1389
+ "lstrip": false,
1390
+ "normalized": false,
1391
+ "rstrip": false,
1392
+ "single_word": false,
1393
+ "special": true
1394
+ },
1395
+ "128174": {
1396
+ "content": "<|reserved_special_token_169|>",
1397
+ "lstrip": false,
1398
+ "normalized": false,
1399
+ "rstrip": false,
1400
+ "single_word": false,
1401
+ "special": true
1402
+ },
1403
+ "128175": {
1404
+ "content": "<|reserved_special_token_170|>",
1405
+ "lstrip": false,
1406
+ "normalized": false,
1407
+ "rstrip": false,
1408
+ "single_word": false,
1409
+ "special": true
1410
+ },
1411
+ "128176": {
1412
+ "content": "<|reserved_special_token_171|>",
1413
+ "lstrip": false,
1414
+ "normalized": false,
1415
+ "rstrip": false,
1416
+ "single_word": false,
1417
+ "special": true
1418
+ },
1419
+ "128177": {
1420
+ "content": "<|reserved_special_token_172|>",
1421
+ "lstrip": false,
1422
+ "normalized": false,
1423
+ "rstrip": false,
1424
+ "single_word": false,
1425
+ "special": true
1426
+ },
1427
+ "128178": {
1428
+ "content": "<|reserved_special_token_173|>",
1429
+ "lstrip": false,
1430
+ "normalized": false,
1431
+ "rstrip": false,
1432
+ "single_word": false,
1433
+ "special": true
1434
+ },
1435
+ "128179": {
1436
+ "content": "<|reserved_special_token_174|>",
1437
+ "lstrip": false,
1438
+ "normalized": false,
1439
+ "rstrip": false,
1440
+ "single_word": false,
1441
+ "special": true
1442
+ },
1443
+ "128180": {
1444
+ "content": "<|reserved_special_token_175|>",
1445
+ "lstrip": false,
1446
+ "normalized": false,
1447
+ "rstrip": false,
1448
+ "single_word": false,
1449
+ "special": true
1450
+ },
1451
+ "128181": {
1452
+ "content": "<|reserved_special_token_176|>",
1453
+ "lstrip": false,
1454
+ "normalized": false,
1455
+ "rstrip": false,
1456
+ "single_word": false,
1457
+ "special": true
1458
+ },
1459
+ "128182": {
1460
+ "content": "<|reserved_special_token_177|>",
1461
+ "lstrip": false,
1462
+ "normalized": false,
1463
+ "rstrip": false,
1464
+ "single_word": false,
1465
+ "special": true
1466
+ },
1467
+ "128183": {
1468
+ "content": "<|reserved_special_token_178|>",
1469
+ "lstrip": false,
1470
+ "normalized": false,
1471
+ "rstrip": false,
1472
+ "single_word": false,
1473
+ "special": true
1474
+ },
1475
+ "128184": {
1476
+ "content": "<|reserved_special_token_179|>",
1477
+ "lstrip": false,
1478
+ "normalized": false,
1479
+ "rstrip": false,
1480
+ "single_word": false,
1481
+ "special": true
1482
+ },
1483
+ "128185": {
1484
+ "content": "<|reserved_special_token_180|>",
1485
+ "lstrip": false,
1486
+ "normalized": false,
1487
+ "rstrip": false,
1488
+ "single_word": false,
1489
+ "special": true
1490
+ },
1491
+ "128186": {
1492
+ "content": "<|reserved_special_token_181|>",
1493
+ "lstrip": false,
1494
+ "normalized": false,
1495
+ "rstrip": false,
1496
+ "single_word": false,
1497
+ "special": true
1498
+ },
1499
+ "128187": {
1500
+ "content": "<|reserved_special_token_182|>",
1501
+ "lstrip": false,
1502
+ "normalized": false,
1503
+ "rstrip": false,
1504
+ "single_word": false,
1505
+ "special": true
1506
+ },
1507
+ "128188": {
1508
+ "content": "<|reserved_special_token_183|>",
1509
+ "lstrip": false,
1510
+ "normalized": false,
1511
+ "rstrip": false,
1512
+ "single_word": false,
1513
+ "special": true
1514
+ },
1515
+ "128189": {
1516
+ "content": "<|reserved_special_token_184|>",
1517
+ "lstrip": false,
1518
+ "normalized": false,
1519
+ "rstrip": false,
1520
+ "single_word": false,
1521
+ "special": true
1522
+ },
1523
+ "128190": {
1524
+ "content": "<|reserved_special_token_185|>",
1525
+ "lstrip": false,
1526
+ "normalized": false,
1527
+ "rstrip": false,
1528
+ "single_word": false,
1529
+ "special": true
1530
+ },
1531
+ "128191": {
1532
+ "content": "<|reserved_special_token_186|>",
1533
+ "lstrip": false,
1534
+ "normalized": false,
1535
+ "rstrip": false,
1536
+ "single_word": false,
1537
+ "special": true
1538
+ },
1539
+ "128192": {
1540
+ "content": "<|reserved_special_token_187|>",
1541
+ "lstrip": false,
1542
+ "normalized": false,
1543
+ "rstrip": false,
1544
+ "single_word": false,
1545
+ "special": true
1546
+ },
1547
+ "128193": {
1548
+ "content": "<|reserved_special_token_188|>",
1549
+ "lstrip": false,
1550
+ "normalized": false,
1551
+ "rstrip": false,
1552
+ "single_word": false,
1553
+ "special": true
1554
+ },
1555
+ "128194": {
1556
+ "content": "<|reserved_special_token_189|>",
1557
+ "lstrip": false,
1558
+ "normalized": false,
1559
+ "rstrip": false,
1560
+ "single_word": false,
1561
+ "special": true
1562
+ },
1563
+ "128195": {
1564
+ "content": "<|reserved_special_token_190|>",
1565
+ "lstrip": false,
1566
+ "normalized": false,
1567
+ "rstrip": false,
1568
+ "single_word": false,
1569
+ "special": true
1570
+ },
1571
+ "128196": {
1572
+ "content": "<|reserved_special_token_191|>",
1573
+ "lstrip": false,
1574
+ "normalized": false,
1575
+ "rstrip": false,
1576
+ "single_word": false,
1577
+ "special": true
1578
+ },
1579
+ "128197": {
1580
+ "content": "<|reserved_special_token_192|>",
1581
+ "lstrip": false,
1582
+ "normalized": false,
1583
+ "rstrip": false,
1584
+ "single_word": false,
1585
+ "special": true
1586
+ },
1587
+ "128198": {
1588
+ "content": "<|reserved_special_token_193|>",
1589
+ "lstrip": false,
1590
+ "normalized": false,
1591
+ "rstrip": false,
1592
+ "single_word": false,
1593
+ "special": true
1594
+ },
1595
+ "128199": {
1596
+ "content": "<|reserved_special_token_194|>",
1597
+ "lstrip": false,
1598
+ "normalized": false,
1599
+ "rstrip": false,
1600
+ "single_word": false,
1601
+ "special": true
1602
+ },
1603
+ "128200": {
1604
+ "content": "<|reserved_special_token_195|>",
1605
+ "lstrip": false,
1606
+ "normalized": false,
1607
+ "rstrip": false,
1608
+ "single_word": false,
1609
+ "special": true
1610
+ },
1611
+ "128201": {
1612
+ "content": "<|reserved_special_token_196|>",
1613
+ "lstrip": false,
1614
+ "normalized": false,
1615
+ "rstrip": false,
1616
+ "single_word": false,
1617
+ "special": true
1618
+ },
1619
+ "128202": {
1620
+ "content": "<|reserved_special_token_197|>",
1621
+ "lstrip": false,
1622
+ "normalized": false,
1623
+ "rstrip": false,
1624
+ "single_word": false,
1625
+ "special": true
1626
+ },
1627
+ "128203": {
1628
+ "content": "<|reserved_special_token_198|>",
1629
+ "lstrip": false,
1630
+ "normalized": false,
1631
+ "rstrip": false,
1632
+ "single_word": false,
1633
+ "special": true
1634
+ },
1635
+ "128204": {
1636
+ "content": "<|reserved_special_token_199|>",
1637
+ "lstrip": false,
1638
+ "normalized": false,
1639
+ "rstrip": false,
1640
+ "single_word": false,
1641
+ "special": true
1642
+ },
1643
+ "128205": {
1644
+ "content": "<|reserved_special_token_200|>",
1645
+ "lstrip": false,
1646
+ "normalized": false,
1647
+ "rstrip": false,
1648
+ "single_word": false,
1649
+ "special": true
1650
+ },
1651
+ "128206": {
1652
+ "content": "<|reserved_special_token_201|>",
1653
+ "lstrip": false,
1654
+ "normalized": false,
1655
+ "rstrip": false,
1656
+ "single_word": false,
1657
+ "special": true
1658
+ },
1659
+ "128207": {
1660
+ "content": "<|reserved_special_token_202|>",
1661
+ "lstrip": false,
1662
+ "normalized": false,
1663
+ "rstrip": false,
1664
+ "single_word": false,
1665
+ "special": true
1666
+ },
1667
+ "128208": {
1668
+ "content": "<|reserved_special_token_203|>",
1669
+ "lstrip": false,
1670
+ "normalized": false,
1671
+ "rstrip": false,
1672
+ "single_word": false,
1673
+ "special": true
1674
+ },
1675
+ "128209": {
1676
+ "content": "<|reserved_special_token_204|>",
1677
+ "lstrip": false,
1678
+ "normalized": false,
1679
+ "rstrip": false,
1680
+ "single_word": false,
1681
+ "special": true
1682
+ },
1683
+ "128210": {
1684
+ "content": "<|reserved_special_token_205|>",
1685
+ "lstrip": false,
1686
+ "normalized": false,
1687
+ "rstrip": false,
1688
+ "single_word": false,
1689
+ "special": true
1690
+ },
1691
+ "128211": {
1692
+ "content": "<|reserved_special_token_206|>",
1693
+ "lstrip": false,
1694
+ "normalized": false,
1695
+ "rstrip": false,
1696
+ "single_word": false,
1697
+ "special": true
1698
+ },
1699
+ "128212": {
1700
+ "content": "<|reserved_special_token_207|>",
1701
+ "lstrip": false,
1702
+ "normalized": false,
1703
+ "rstrip": false,
1704
+ "single_word": false,
1705
+ "special": true
1706
+ },
1707
+ "128213": {
1708
+ "content": "<|reserved_special_token_208|>",
1709
+ "lstrip": false,
1710
+ "normalized": false,
1711
+ "rstrip": false,
1712
+ "single_word": false,
1713
+ "special": true
1714
+ },
1715
+ "128214": {
1716
+ "content": "<|reserved_special_token_209|>",
1717
+ "lstrip": false,
1718
+ "normalized": false,
1719
+ "rstrip": false,
1720
+ "single_word": false,
1721
+ "special": true
1722
+ },
1723
+ "128215": {
1724
+ "content": "<|reserved_special_token_210|>",
1725
+ "lstrip": false,
1726
+ "normalized": false,
1727
+ "rstrip": false,
1728
+ "single_word": false,
1729
+ "special": true
1730
+ },
1731
+ "128216": {
1732
+ "content": "<|reserved_special_token_211|>",
1733
+ "lstrip": false,
1734
+ "normalized": false,
1735
+ "rstrip": false,
1736
+ "single_word": false,
1737
+ "special": true
1738
+ },
1739
+ "128217": {
1740
+ "content": "<|reserved_special_token_212|>",
1741
+ "lstrip": false,
1742
+ "normalized": false,
1743
+ "rstrip": false,
1744
+ "single_word": false,
1745
+ "special": true
1746
+ },
1747
+ "128218": {
1748
+ "content": "<|reserved_special_token_213|>",
1749
+ "lstrip": false,
1750
+ "normalized": false,
1751
+ "rstrip": false,
1752
+ "single_word": false,
1753
+ "special": true
1754
+ },
1755
+ "128219": {
1756
+ "content": "<|reserved_special_token_214|>",
1757
+ "lstrip": false,
1758
+ "normalized": false,
1759
+ "rstrip": false,
1760
+ "single_word": false,
1761
+ "special": true
1762
+ },
1763
+ "128220": {
1764
+ "content": "<|reserved_special_token_215|>",
1765
+ "lstrip": false,
1766
+ "normalized": false,
1767
+ "rstrip": false,
1768
+ "single_word": false,
1769
+ "special": true
1770
+ },
1771
+ "128221": {
1772
+ "content": "<|reserved_special_token_216|>",
1773
+ "lstrip": false,
1774
+ "normalized": false,
1775
+ "rstrip": false,
1776
+ "single_word": false,
1777
+ "special": true
1778
+ },
1779
+ "128222": {
1780
+ "content": "<|reserved_special_token_217|>",
1781
+ "lstrip": false,
1782
+ "normalized": false,
1783
+ "rstrip": false,
1784
+ "single_word": false,
1785
+ "special": true
1786
+ },
1787
+ "128223": {
1788
+ "content": "<|reserved_special_token_218|>",
1789
+ "lstrip": false,
1790
+ "normalized": false,
1791
+ "rstrip": false,
1792
+ "single_word": false,
1793
+ "special": true
1794
+ },
1795
+ "128224": {
1796
+ "content": "<|reserved_special_token_219|>",
1797
+ "lstrip": false,
1798
+ "normalized": false,
1799
+ "rstrip": false,
1800
+ "single_word": false,
1801
+ "special": true
1802
+ },
1803
+ "128225": {
1804
+ "content": "<|reserved_special_token_220|>",
1805
+ "lstrip": false,
1806
+ "normalized": false,
1807
+ "rstrip": false,
1808
+ "single_word": false,
1809
+ "special": true
1810
+ },
1811
+ "128226": {
1812
+ "content": "<|reserved_special_token_221|>",
1813
+ "lstrip": false,
1814
+ "normalized": false,
1815
+ "rstrip": false,
1816
+ "single_word": false,
1817
+ "special": true
1818
+ },
1819
+ "128227": {
1820
+ "content": "<|reserved_special_token_222|>",
1821
+ "lstrip": false,
1822
+ "normalized": false,
1823
+ "rstrip": false,
1824
+ "single_word": false,
1825
+ "special": true
1826
+ },
1827
+ "128228": {
1828
+ "content": "<|reserved_special_token_223|>",
1829
+ "lstrip": false,
1830
+ "normalized": false,
1831
+ "rstrip": false,
1832
+ "single_word": false,
1833
+ "special": true
1834
+ },
1835
+ "128229": {
1836
+ "content": "<|reserved_special_token_224|>",
1837
+ "lstrip": false,
1838
+ "normalized": false,
1839
+ "rstrip": false,
1840
+ "single_word": false,
1841
+ "special": true
1842
+ },
1843
+ "128230": {
1844
+ "content": "<|reserved_special_token_225|>",
1845
+ "lstrip": false,
1846
+ "normalized": false,
1847
+ "rstrip": false,
1848
+ "single_word": false,
1849
+ "special": true
1850
+ },
1851
+ "128231": {
1852
+ "content": "<|reserved_special_token_226|>",
1853
+ "lstrip": false,
1854
+ "normalized": false,
1855
+ "rstrip": false,
1856
+ "single_word": false,
1857
+ "special": true
1858
+ },
1859
+ "128232": {
1860
+ "content": "<|reserved_special_token_227|>",
1861
+ "lstrip": false,
1862
+ "normalized": false,
1863
+ "rstrip": false,
1864
+ "single_word": false,
1865
+ "special": true
1866
+ },
1867
+ "128233": {
1868
+ "content": "<|reserved_special_token_228|>",
1869
+ "lstrip": false,
1870
+ "normalized": false,
1871
+ "rstrip": false,
1872
+ "single_word": false,
1873
+ "special": true
1874
+ },
1875
+ "128234": {
1876
+ "content": "<|reserved_special_token_229|>",
1877
+ "lstrip": false,
1878
+ "normalized": false,
1879
+ "rstrip": false,
1880
+ "single_word": false,
1881
+ "special": true
1882
+ },
1883
+ "128235": {
1884
+ "content": "<|reserved_special_token_230|>",
1885
+ "lstrip": false,
1886
+ "normalized": false,
1887
+ "rstrip": false,
1888
+ "single_word": false,
1889
+ "special": true
1890
+ },
1891
+ "128236": {
1892
+ "content": "<|reserved_special_token_231|>",
1893
+ "lstrip": false,
1894
+ "normalized": false,
1895
+ "rstrip": false,
1896
+ "single_word": false,
1897
+ "special": true
1898
+ },
1899
+ "128237": {
1900
+ "content": "<|reserved_special_token_232|>",
1901
+ "lstrip": false,
1902
+ "normalized": false,
1903
+ "rstrip": false,
1904
+ "single_word": false,
1905
+ "special": true
1906
+ },
1907
+ "128238": {
1908
+ "content": "<|reserved_special_token_233|>",
1909
+ "lstrip": false,
1910
+ "normalized": false,
1911
+ "rstrip": false,
1912
+ "single_word": false,
1913
+ "special": true
1914
+ },
1915
+ "128239": {
1916
+ "content": "<|reserved_special_token_234|>",
1917
+ "lstrip": false,
1918
+ "normalized": false,
1919
+ "rstrip": false,
1920
+ "single_word": false,
1921
+ "special": true
1922
+ },
1923
+ "128240": {
1924
+ "content": "<|reserved_special_token_235|>",
1925
+ "lstrip": false,
1926
+ "normalized": false,
1927
+ "rstrip": false,
1928
+ "single_word": false,
1929
+ "special": true
1930
+ },
1931
+ "128241": {
1932
+ "content": "<|reserved_special_token_236|>",
1933
+ "lstrip": false,
1934
+ "normalized": false,
1935
+ "rstrip": false,
1936
+ "single_word": false,
1937
+ "special": true
1938
+ },
1939
+ "128242": {
1940
+ "content": "<|reserved_special_token_237|>",
1941
+ "lstrip": false,
1942
+ "normalized": false,
1943
+ "rstrip": false,
1944
+ "single_word": false,
1945
+ "special": true
1946
+ },
1947
+ "128243": {
1948
+ "content": "<|reserved_special_token_238|>",
1949
+ "lstrip": false,
1950
+ "normalized": false,
1951
+ "rstrip": false,
1952
+ "single_word": false,
1953
+ "special": true
1954
+ },
1955
+ "128244": {
1956
+ "content": "<|reserved_special_token_239|>",
1957
+ "lstrip": false,
1958
+ "normalized": false,
1959
+ "rstrip": false,
1960
+ "single_word": false,
1961
+ "special": true
1962
+ },
1963
+ "128245": {
1964
+ "content": "<|reserved_special_token_240|>",
1965
+ "lstrip": false,
1966
+ "normalized": false,
1967
+ "rstrip": false,
1968
+ "single_word": false,
1969
+ "special": true
1970
+ },
1971
+ "128246": {
1972
+ "content": "<|reserved_special_token_241|>",
1973
+ "lstrip": false,
1974
+ "normalized": false,
1975
+ "rstrip": false,
1976
+ "single_word": false,
1977
+ "special": true
1978
+ },
1979
+ "128247": {
1980
+ "content": "<|reserved_special_token_242|>",
1981
+ "lstrip": false,
1982
+ "normalized": false,
1983
+ "rstrip": false,
1984
+ "single_word": false,
1985
+ "special": true
1986
+ },
1987
+ "128248": {
1988
+ "content": "<|reserved_special_token_243|>",
1989
+ "lstrip": false,
1990
+ "normalized": false,
1991
+ "rstrip": false,
1992
+ "single_word": false,
1993
+ "special": true
1994
+ },
1995
+ "128249": {
1996
+ "content": "<|reserved_special_token_244|>",
1997
+ "lstrip": false,
1998
+ "normalized": false,
1999
+ "rstrip": false,
2000
+ "single_word": false,
2001
+ "special": true
2002
+ },
2003
+ "128250": {
2004
+ "content": "<|reserved_special_token_245|>",
2005
+ "lstrip": false,
2006
+ "normalized": false,
2007
+ "rstrip": false,
2008
+ "single_word": false,
2009
+ "special": true
2010
+ },
2011
+ "128251": {
2012
+ "content": "<|reserved_special_token_246|>",
2013
+ "lstrip": false,
2014
+ "normalized": false,
2015
+ "rstrip": false,
2016
+ "single_word": false,
2017
+ "special": true
2018
+ },
2019
+ "128252": {
2020
+ "content": "<|reserved_special_token_247|>",
2021
+ "lstrip": false,
2022
+ "normalized": false,
2023
+ "rstrip": false,
2024
+ "single_word": false,
2025
+ "special": true
2026
+ },
2027
+ "128253": {
2028
+ "content": "<|reserved_special_token_248|>",
2029
+ "lstrip": false,
2030
+ "normalized": false,
2031
+ "rstrip": false,
2032
+ "single_word": false,
2033
+ "special": true
2034
+ },
2035
+ "128254": {
2036
+ "content": "<|reserved_special_token_249|>",
2037
+ "lstrip": false,
2038
+ "normalized": false,
2039
+ "rstrip": false,
2040
+ "single_word": false,
2041
+ "special": true
2042
+ },
2043
+ "128255": {
2044
+ "content": "<|reserved_special_token_250|>",
2045
+ "lstrip": false,
2046
+ "normalized": false,
2047
+ "rstrip": false,
2048
+ "single_word": false,
2049
+ "special": true
2050
+ },
2051
+ "128256": {
2052
+ "content": "<|finetune_right_pad_id|>",
2053
+ "lstrip": false,
2054
+ "normalized": false,
2055
+ "rstrip": false,
2056
+ "single_word": false,
2057
+ "special": true
2058
+ }
2059
+ },
2060
+ "bos_token": "<|begin_of_text|>",
2061
+ "clean_up_tokenization_spaces": true,
2062
+ "eos_token": "<|eot_id|>",
2063
+ "extra_special_tokens": {},
2064
+ "model_input_names": [
2065
+ "input_ids",
2066
+ "attention_mask"
2067
+ ],
2068
+ "model_max_length": 1000000000000000019884624838656,
2069
+ "pad_token": "<|finetune_right_pad_id|>",
2070
+ "tokenizer_class": "PreTrainedTokenizerFast"
2071
+ }