CI_CD updates
This commit is contained in:
parent
4182185595
commit
9f1dc86819
247
.venv/bin/Activate.ps1
Normal file
247
.venv/bin/Activate.ps1
Normal file
@ -0,0 +1,247 @@
|
|||||||
|
<#
|
||||||
|
.Synopsis
|
||||||
|
Activate a Python virtual environment for the current PowerShell session.
|
||||||
|
|
||||||
|
.Description
|
||||||
|
Pushes the python executable for a virtual environment to the front of the
|
||||||
|
$Env:PATH environment variable and sets the prompt to signify that you are
|
||||||
|
in a Python virtual environment. Makes use of the command line switches as
|
||||||
|
well as the `pyvenv.cfg` file values present in the virtual environment.
|
||||||
|
|
||||||
|
.Parameter VenvDir
|
||||||
|
Path to the directory that contains the virtual environment to activate. The
|
||||||
|
default value for this is the parent of the directory that the Activate.ps1
|
||||||
|
script is located within.
|
||||||
|
|
||||||
|
.Parameter Prompt
|
||||||
|
The prompt prefix to display when this virtual environment is activated. By
|
||||||
|
default, this prompt is the name of the virtual environment folder (VenvDir)
|
||||||
|
surrounded by parentheses and followed by a single space (ie. '(.venv) ').
|
||||||
|
|
||||||
|
.Example
|
||||||
|
Activate.ps1
|
||||||
|
Activates the Python virtual environment that contains the Activate.ps1 script.
|
||||||
|
|
||||||
|
.Example
|
||||||
|
Activate.ps1 -Verbose
|
||||||
|
Activates the Python virtual environment that contains the Activate.ps1 script,
|
||||||
|
and shows extra information about the activation as it executes.
|
||||||
|
|
||||||
|
.Example
|
||||||
|
Activate.ps1 -VenvDir C:\Users\MyUser\Common\.venv
|
||||||
|
Activates the Python virtual environment located in the specified location.
|
||||||
|
|
||||||
|
.Example
|
||||||
|
Activate.ps1 -Prompt "MyPython"
|
||||||
|
Activates the Python virtual environment that contains the Activate.ps1 script,
|
||||||
|
and prefixes the current prompt with the specified string (surrounded in
|
||||||
|
parentheses) while the virtual environment is active.
|
||||||
|
|
||||||
|
.Notes
|
||||||
|
On Windows, it may be required to enable this Activate.ps1 script by setting the
|
||||||
|
execution policy for the user. You can do this by issuing the following PowerShell
|
||||||
|
command:
|
||||||
|
|
||||||
|
PS C:\> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
|
||||||
|
|
||||||
|
For more information on Execution Policies:
|
||||||
|
https://go.microsoft.com/fwlink/?LinkID=135170
|
||||||
|
|
||||||
|
#>
|
||||||
|
Param(
|
||||||
|
[Parameter(Mandatory = $false)]
|
||||||
|
[String]
|
||||||
|
$VenvDir,
|
||||||
|
[Parameter(Mandatory = $false)]
|
||||||
|
[String]
|
||||||
|
$Prompt
|
||||||
|
)
|
||||||
|
|
||||||
|
<# Function declarations --------------------------------------------------- #>
|
||||||
|
|
||||||
|
<#
|
||||||
|
.Synopsis
|
||||||
|
Remove all shell session elements added by the Activate script, including the
|
||||||
|
addition of the virtual environment's Python executable from the beginning of
|
||||||
|
the PATH variable.
|
||||||
|
|
||||||
|
.Parameter NonDestructive
|
||||||
|
If present, do not remove this function from the global namespace for the
|
||||||
|
session.
|
||||||
|
|
||||||
|
#>
|
||||||
|
function global:deactivate ([switch]$NonDestructive) {
|
||||||
|
# Revert to original values
|
||||||
|
|
||||||
|
# The prior prompt:
|
||||||
|
if (Test-Path -Path Function:_OLD_VIRTUAL_PROMPT) {
|
||||||
|
Copy-Item -Path Function:_OLD_VIRTUAL_PROMPT -Destination Function:prompt
|
||||||
|
Remove-Item -Path Function:_OLD_VIRTUAL_PROMPT
|
||||||
|
}
|
||||||
|
|
||||||
|
# The prior PYTHONHOME:
|
||||||
|
if (Test-Path -Path Env:_OLD_VIRTUAL_PYTHONHOME) {
|
||||||
|
Copy-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME -Destination Env:PYTHONHOME
|
||||||
|
Remove-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME
|
||||||
|
}
|
||||||
|
|
||||||
|
# The prior PATH:
|
||||||
|
if (Test-Path -Path Env:_OLD_VIRTUAL_PATH) {
|
||||||
|
Copy-Item -Path Env:_OLD_VIRTUAL_PATH -Destination Env:PATH
|
||||||
|
Remove-Item -Path Env:_OLD_VIRTUAL_PATH
|
||||||
|
}
|
||||||
|
|
||||||
|
# Just remove the VIRTUAL_ENV altogether:
|
||||||
|
if (Test-Path -Path Env:VIRTUAL_ENV) {
|
||||||
|
Remove-Item -Path env:VIRTUAL_ENV
|
||||||
|
}
|
||||||
|
|
||||||
|
# Just remove VIRTUAL_ENV_PROMPT altogether.
|
||||||
|
if (Test-Path -Path Env:VIRTUAL_ENV_PROMPT) {
|
||||||
|
Remove-Item -Path env:VIRTUAL_ENV_PROMPT
|
||||||
|
}
|
||||||
|
|
||||||
|
# Just remove the _PYTHON_VENV_PROMPT_PREFIX altogether:
|
||||||
|
if (Get-Variable -Name "_PYTHON_VENV_PROMPT_PREFIX" -ErrorAction SilentlyContinue) {
|
||||||
|
Remove-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Scope Global -Force
|
||||||
|
}
|
||||||
|
|
||||||
|
# Leave deactivate function in the global namespace if requested:
|
||||||
|
if (-not $NonDestructive) {
|
||||||
|
Remove-Item -Path function:deactivate
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
<#
|
||||||
|
.Description
|
||||||
|
Get-PyVenvConfig parses the values from the pyvenv.cfg file located in the
|
||||||
|
given folder, and returns them in a map.
|
||||||
|
|
||||||
|
For each line in the pyvenv.cfg file, if that line can be parsed into exactly
|
||||||
|
two strings separated by `=` (with any amount of whitespace surrounding the =)
|
||||||
|
then it is considered a `key = value` line. The left hand string is the key,
|
||||||
|
the right hand is the value.
|
||||||
|
|
||||||
|
If the value starts with a `'` or a `"` then the first and last character is
|
||||||
|
stripped from the value before being captured.
|
||||||
|
|
||||||
|
.Parameter ConfigDir
|
||||||
|
Path to the directory that contains the `pyvenv.cfg` file.
|
||||||
|
#>
|
||||||
|
function Get-PyVenvConfig(
|
||||||
|
[String]
|
||||||
|
$ConfigDir
|
||||||
|
) {
|
||||||
|
Write-Verbose "Given ConfigDir=$ConfigDir, obtain values in pyvenv.cfg"
|
||||||
|
|
||||||
|
# Ensure the file exists, and issue a warning if it doesn't (but still allow the function to continue).
|
||||||
|
$pyvenvConfigPath = Join-Path -Resolve -Path $ConfigDir -ChildPath 'pyvenv.cfg' -ErrorAction Continue
|
||||||
|
|
||||||
|
# An empty map will be returned if no config file is found.
|
||||||
|
$pyvenvConfig = @{ }
|
||||||
|
|
||||||
|
if ($pyvenvConfigPath) {
|
||||||
|
|
||||||
|
Write-Verbose "File exists, parse `key = value` lines"
|
||||||
|
$pyvenvConfigContent = Get-Content -Path $pyvenvConfigPath
|
||||||
|
|
||||||
|
$pyvenvConfigContent | ForEach-Object {
|
||||||
|
$keyval = $PSItem -split "\s*=\s*", 2
|
||||||
|
if ($keyval[0] -and $keyval[1]) {
|
||||||
|
$val = $keyval[1]
|
||||||
|
|
||||||
|
# Remove extraneous quotations around a string value.
|
||||||
|
if ("'""".Contains($val.Substring(0, 1))) {
|
||||||
|
$val = $val.Substring(1, $val.Length - 2)
|
||||||
|
}
|
||||||
|
|
||||||
|
$pyvenvConfig[$keyval[0]] = $val
|
||||||
|
Write-Verbose "Adding Key: '$($keyval[0])'='$val'"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $pyvenvConfig
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
<# Begin Activate script --------------------------------------------------- #>
|
||||||
|
|
||||||
|
# Determine the containing directory of this script
|
||||||
|
$VenvExecPath = Split-Path -Parent $MyInvocation.MyCommand.Definition
|
||||||
|
$VenvExecDir = Get-Item -Path $VenvExecPath
|
||||||
|
|
||||||
|
Write-Verbose "Activation script is located in path: '$VenvExecPath'"
|
||||||
|
Write-Verbose "VenvExecDir Fullname: '$($VenvExecDir.FullName)"
|
||||||
|
Write-Verbose "VenvExecDir Name: '$($VenvExecDir.Name)"
|
||||||
|
|
||||||
|
# Set values required in priority: CmdLine, ConfigFile, Default
|
||||||
|
# First, get the location of the virtual environment, it might not be
|
||||||
|
# VenvExecDir if specified on the command line.
|
||||||
|
if ($VenvDir) {
|
||||||
|
Write-Verbose "VenvDir given as parameter, using '$VenvDir' to determine values"
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Verbose "VenvDir not given as a parameter, using parent directory name as VenvDir."
|
||||||
|
$VenvDir = $VenvExecDir.Parent.FullName.TrimEnd("\\/")
|
||||||
|
Write-Verbose "VenvDir=$VenvDir"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Next, read the `pyvenv.cfg` file to determine any required value such
|
||||||
|
# as `prompt`.
|
||||||
|
$pyvenvCfg = Get-PyVenvConfig -ConfigDir $VenvDir
|
||||||
|
|
||||||
|
# Next, set the prompt from the command line, or the config file, or
|
||||||
|
# just use the name of the virtual environment folder.
|
||||||
|
if ($Prompt) {
|
||||||
|
Write-Verbose "Prompt specified as argument, using '$Prompt'"
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Verbose "Prompt not specified as argument to script, checking pyvenv.cfg value"
|
||||||
|
if ($pyvenvCfg -and $pyvenvCfg['prompt']) {
|
||||||
|
Write-Verbose " Setting based on value in pyvenv.cfg='$($pyvenvCfg['prompt'])'"
|
||||||
|
$Prompt = $pyvenvCfg['prompt'];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Verbose " Setting prompt based on parent's directory's name. (Is the directory name passed to venv module when creating the virtual environment)"
|
||||||
|
Write-Verbose " Got leaf-name of $VenvDir='$(Split-Path -Path $venvDir -Leaf)'"
|
||||||
|
$Prompt = Split-Path -Path $venvDir -Leaf
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Verbose "Prompt = '$Prompt'"
|
||||||
|
Write-Verbose "VenvDir='$VenvDir'"
|
||||||
|
|
||||||
|
# Deactivate any currently active virtual environment, but leave the
|
||||||
|
# deactivate function in place.
|
||||||
|
deactivate -nondestructive
|
||||||
|
|
||||||
|
# Now set the environment variable VIRTUAL_ENV, used by many tools to determine
|
||||||
|
# that there is an activated venv.
|
||||||
|
$env:VIRTUAL_ENV = $VenvDir
|
||||||
|
|
||||||
|
if (-not $Env:VIRTUAL_ENV_DISABLE_PROMPT) {
|
||||||
|
|
||||||
|
Write-Verbose "Setting prompt to '$Prompt'"
|
||||||
|
|
||||||
|
# Set the prompt to include the env name
|
||||||
|
# Make sure _OLD_VIRTUAL_PROMPT is global
|
||||||
|
function global:_OLD_VIRTUAL_PROMPT { "" }
|
||||||
|
Copy-Item -Path function:prompt -Destination function:_OLD_VIRTUAL_PROMPT
|
||||||
|
New-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Description "Python virtual environment prompt prefix" -Scope Global -Option ReadOnly -Visibility Public -Value $Prompt
|
||||||
|
|
||||||
|
function global:prompt {
|
||||||
|
Write-Host -NoNewline -ForegroundColor Green "($_PYTHON_VENV_PROMPT_PREFIX) "
|
||||||
|
_OLD_VIRTUAL_PROMPT
|
||||||
|
}
|
||||||
|
$env:VIRTUAL_ENV_PROMPT = $Prompt
|
||||||
|
}
|
||||||
|
|
||||||
|
# Clear PYTHONHOME
|
||||||
|
if (Test-Path -Path Env:PYTHONHOME) {
|
||||||
|
Copy-Item -Path Env:PYTHONHOME -Destination Env:_OLD_VIRTUAL_PYTHONHOME
|
||||||
|
Remove-Item -Path Env:PYTHONHOME
|
||||||
|
}
|
||||||
|
|
||||||
|
# Add the venv to the PATH
|
||||||
|
Copy-Item -Path Env:PATH -Destination Env:_OLD_VIRTUAL_PATH
|
||||||
|
$Env:PATH = "$VenvExecDir$([System.IO.Path]::PathSeparator)$Env:PATH"
|
BIN
.venv/bin/__pycache__/rst2html.cpython-311.pyc
Normal file
BIN
.venv/bin/__pycache__/rst2html.cpython-311.pyc
Normal file
Binary file not shown.
BIN
.venv/bin/__pycache__/rst2html4.cpython-311.pyc
Normal file
BIN
.venv/bin/__pycache__/rst2html4.cpython-311.pyc
Normal file
Binary file not shown.
BIN
.venv/bin/__pycache__/rst2html5.cpython-311.pyc
Normal file
BIN
.venv/bin/__pycache__/rst2html5.cpython-311.pyc
Normal file
Binary file not shown.
BIN
.venv/bin/__pycache__/rst2latex.cpython-311.pyc
Normal file
BIN
.venv/bin/__pycache__/rst2latex.cpython-311.pyc
Normal file
Binary file not shown.
BIN
.venv/bin/__pycache__/rst2man.cpython-311.pyc
Normal file
BIN
.venv/bin/__pycache__/rst2man.cpython-311.pyc
Normal file
Binary file not shown.
BIN
.venv/bin/__pycache__/rst2odt.cpython-311.pyc
Normal file
BIN
.venv/bin/__pycache__/rst2odt.cpython-311.pyc
Normal file
Binary file not shown.
BIN
.venv/bin/__pycache__/rst2odt_prepstyles.cpython-311.pyc
Normal file
BIN
.venv/bin/__pycache__/rst2odt_prepstyles.cpython-311.pyc
Normal file
Binary file not shown.
BIN
.venv/bin/__pycache__/rst2pseudoxml.cpython-311.pyc
Normal file
BIN
.venv/bin/__pycache__/rst2pseudoxml.cpython-311.pyc
Normal file
Binary file not shown.
BIN
.venv/bin/__pycache__/rst2s5.cpython-311.pyc
Normal file
BIN
.venv/bin/__pycache__/rst2s5.cpython-311.pyc
Normal file
Binary file not shown.
BIN
.venv/bin/__pycache__/rst2xetex.cpython-311.pyc
Normal file
BIN
.venv/bin/__pycache__/rst2xetex.cpython-311.pyc
Normal file
Binary file not shown.
BIN
.venv/bin/__pycache__/rst2xml.cpython-311.pyc
Normal file
BIN
.venv/bin/__pycache__/rst2xml.cpython-311.pyc
Normal file
Binary file not shown.
BIN
.venv/bin/__pycache__/rstpep2html.cpython-311.pyc
Normal file
BIN
.venv/bin/__pycache__/rstpep2html.cpython-311.pyc
Normal file
Binary file not shown.
69
.venv/bin/activate
Normal file
69
.venv/bin/activate
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
# This file must be used with "source bin/activate" *from bash*
|
||||||
|
# you cannot run it directly
|
||||||
|
|
||||||
|
deactivate () {
|
||||||
|
# reset old environment variables
|
||||||
|
if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then
|
||||||
|
PATH="${_OLD_VIRTUAL_PATH:-}"
|
||||||
|
export PATH
|
||||||
|
unset _OLD_VIRTUAL_PATH
|
||||||
|
fi
|
||||||
|
if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then
|
||||||
|
PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}"
|
||||||
|
export PYTHONHOME
|
||||||
|
unset _OLD_VIRTUAL_PYTHONHOME
|
||||||
|
fi
|
||||||
|
|
||||||
|
# This should detect bash and zsh, which have a hash command that must
|
||||||
|
# be called to get it to forget past commands. Without forgetting
|
||||||
|
# past commands the $PATH changes we made may not be respected
|
||||||
|
if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then
|
||||||
|
hash -r 2> /dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then
|
||||||
|
PS1="${_OLD_VIRTUAL_PS1:-}"
|
||||||
|
export PS1
|
||||||
|
unset _OLD_VIRTUAL_PS1
|
||||||
|
fi
|
||||||
|
|
||||||
|
unset VIRTUAL_ENV
|
||||||
|
unset VIRTUAL_ENV_PROMPT
|
||||||
|
if [ ! "${1:-}" = "nondestructive" ] ; then
|
||||||
|
# Self destruct!
|
||||||
|
unset -f deactivate
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# unset irrelevant variables
|
||||||
|
deactivate nondestructive
|
||||||
|
|
||||||
|
VIRTUAL_ENV="/home/aridgway/blog/blog/.venv"
|
||||||
|
export VIRTUAL_ENV
|
||||||
|
|
||||||
|
_OLD_VIRTUAL_PATH="$PATH"
|
||||||
|
PATH="$VIRTUAL_ENV/bin:$PATH"
|
||||||
|
export PATH
|
||||||
|
|
||||||
|
# unset PYTHONHOME if set
|
||||||
|
# this will fail if PYTHONHOME is set to the empty string (which is bad anyway)
|
||||||
|
# could use `if (set -u; : $PYTHONHOME) ;` in bash
|
||||||
|
if [ -n "${PYTHONHOME:-}" ] ; then
|
||||||
|
_OLD_VIRTUAL_PYTHONHOME="${PYTHONHOME:-}"
|
||||||
|
unset PYTHONHOME
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then
|
||||||
|
_OLD_VIRTUAL_PS1="${PS1:-}"
|
||||||
|
PS1="(.venv) ${PS1:-}"
|
||||||
|
export PS1
|
||||||
|
VIRTUAL_ENV_PROMPT="(.venv) "
|
||||||
|
export VIRTUAL_ENV_PROMPT
|
||||||
|
fi
|
||||||
|
|
||||||
|
# This should detect bash and zsh, which have a hash command that must
|
||||||
|
# be called to get it to forget past commands. Without forgetting
|
||||||
|
# past commands the $PATH changes we made may not be respected
|
||||||
|
if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then
|
||||||
|
hash -r 2> /dev/null
|
||||||
|
fi
|
26
.venv/bin/activate.csh
Normal file
26
.venv/bin/activate.csh
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
# This file must be used with "source bin/activate.csh" *from csh*.
|
||||||
|
# You cannot run it directly.
|
||||||
|
# Created by Davide Di Blasi <davidedb@gmail.com>.
|
||||||
|
# Ported to Python 3.3 venv by Andrew Svetlov <andrew.svetlov@gmail.com>
|
||||||
|
|
||||||
|
alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; unsetenv VIRTUAL_ENV_PROMPT; test "\!:*" != "nondestructive" && unalias deactivate'
|
||||||
|
|
||||||
|
# Unset irrelevant variables.
|
||||||
|
deactivate nondestructive
|
||||||
|
|
||||||
|
setenv VIRTUAL_ENV "/home/aridgway/blog/blog/.venv"
|
||||||
|
|
||||||
|
set _OLD_VIRTUAL_PATH="$PATH"
|
||||||
|
setenv PATH "$VIRTUAL_ENV/bin:$PATH"
|
||||||
|
|
||||||
|
|
||||||
|
set _OLD_VIRTUAL_PROMPT="$prompt"
|
||||||
|
|
||||||
|
if (! "$?VIRTUAL_ENV_DISABLE_PROMPT") then
|
||||||
|
set prompt = "(.venv) $prompt"
|
||||||
|
setenv VIRTUAL_ENV_PROMPT "(.venv) "
|
||||||
|
endif
|
||||||
|
|
||||||
|
alias pydoc python -m pydoc
|
||||||
|
|
||||||
|
rehash
|
69
.venv/bin/activate.fish
Normal file
69
.venv/bin/activate.fish
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
# This file must be used with "source <venv>/bin/activate.fish" *from fish*
|
||||||
|
# (https://fishshell.com/); you cannot run it directly.
|
||||||
|
|
||||||
|
function deactivate -d "Exit virtual environment and return to normal shell environment"
|
||||||
|
# reset old environment variables
|
||||||
|
if test -n "$_OLD_VIRTUAL_PATH"
|
||||||
|
set -gx PATH $_OLD_VIRTUAL_PATH
|
||||||
|
set -e _OLD_VIRTUAL_PATH
|
||||||
|
end
|
||||||
|
if test -n "$_OLD_VIRTUAL_PYTHONHOME"
|
||||||
|
set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME
|
||||||
|
set -e _OLD_VIRTUAL_PYTHONHOME
|
||||||
|
end
|
||||||
|
|
||||||
|
if test -n "$_OLD_FISH_PROMPT_OVERRIDE"
|
||||||
|
set -e _OLD_FISH_PROMPT_OVERRIDE
|
||||||
|
# prevents error when using nested fish instances (Issue #93858)
|
||||||
|
if functions -q _old_fish_prompt
|
||||||
|
functions -e fish_prompt
|
||||||
|
functions -c _old_fish_prompt fish_prompt
|
||||||
|
functions -e _old_fish_prompt
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
set -e VIRTUAL_ENV
|
||||||
|
set -e VIRTUAL_ENV_PROMPT
|
||||||
|
if test "$argv[1]" != "nondestructive"
|
||||||
|
# Self-destruct!
|
||||||
|
functions -e deactivate
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# Unset irrelevant variables.
|
||||||
|
deactivate nondestructive
|
||||||
|
|
||||||
|
set -gx VIRTUAL_ENV "/home/aridgway/blog/blog/.venv"
|
||||||
|
|
||||||
|
set -gx _OLD_VIRTUAL_PATH $PATH
|
||||||
|
set -gx PATH "$VIRTUAL_ENV/bin" $PATH
|
||||||
|
|
||||||
|
# Unset PYTHONHOME if set.
|
||||||
|
if set -q PYTHONHOME
|
||||||
|
set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME
|
||||||
|
set -e PYTHONHOME
|
||||||
|
end
|
||||||
|
|
||||||
|
if test -z "$VIRTUAL_ENV_DISABLE_PROMPT"
|
||||||
|
# fish uses a function instead of an env var to generate the prompt.
|
||||||
|
|
||||||
|
# Save the current fish_prompt function as the function _old_fish_prompt.
|
||||||
|
functions -c fish_prompt _old_fish_prompt
|
||||||
|
|
||||||
|
# With the original prompt function renamed, we can override with our own.
|
||||||
|
function fish_prompt
|
||||||
|
# Save the return status of the last command.
|
||||||
|
set -l old_status $status
|
||||||
|
|
||||||
|
# Output the venv prompt; color taken from the blue of the Python logo.
|
||||||
|
printf "%s%s%s" (set_color 4B8BBE) "(.venv) " (set_color normal)
|
||||||
|
|
||||||
|
# Restore the return status of the previous command.
|
||||||
|
echo "exit $old_status" | .
|
||||||
|
# Output the original/"old" prompt.
|
||||||
|
_old_fish_prompt
|
||||||
|
end
|
||||||
|
|
||||||
|
set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV"
|
||||||
|
set -gx VIRTUAL_ENV_PROMPT "(.venv) "
|
||||||
|
end
|
8
.venv/bin/docutils
Executable file
8
.venv/bin/docutils
Executable file
@ -0,0 +1,8 @@
|
|||||||
|
#!/home/aridgway/blog/blog/.venv/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
from docutils.__main__ import main
|
||||||
|
if __name__ == '__main__':
|
||||||
|
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||||
|
sys.exit(main())
|
8
.venv/bin/markdown-it
Executable file
8
.venv/bin/markdown-it
Executable file
@ -0,0 +1,8 @@
|
|||||||
|
#!/home/aridgway/blog/blog/.venv/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
from markdown_it.cli.parse import main
|
||||||
|
if __name__ == '__main__':
|
||||||
|
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||||
|
sys.exit(main())
|
8
.venv/bin/markdown_py
Executable file
8
.venv/bin/markdown_py
Executable file
@ -0,0 +1,8 @@
|
|||||||
|
#!/home/aridgway/blog/blog/.venv/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
from markdown.__main__ import run
|
||||||
|
if __name__ == '__main__':
|
||||||
|
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||||
|
sys.exit(run())
|
8
.venv/bin/pelican
Executable file
8
.venv/bin/pelican
Executable file
@ -0,0 +1,8 @@
|
|||||||
|
#!/home/aridgway/blog/blog/.venv/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
from pelican.__main__ import main
|
||||||
|
if __name__ == '__main__':
|
||||||
|
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||||
|
sys.exit(main())
|
8
.venv/bin/pelican-import
Executable file
8
.venv/bin/pelican-import
Executable file
@ -0,0 +1,8 @@
|
|||||||
|
#!/home/aridgway/blog/blog/.venv/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
from pelican.tools.pelican_import import main
|
||||||
|
if __name__ == '__main__':
|
||||||
|
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||||
|
sys.exit(main())
|
8
.venv/bin/pelican-plugins
Executable file
8
.venv/bin/pelican-plugins
Executable file
@ -0,0 +1,8 @@
|
|||||||
|
#!/home/aridgway/blog/blog/.venv/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
from pelican.plugins._utils import list_plugins
|
||||||
|
if __name__ == '__main__':
|
||||||
|
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||||
|
sys.exit(list_plugins())
|
8
.venv/bin/pelican-quickstart
Executable file
8
.venv/bin/pelican-quickstart
Executable file
@ -0,0 +1,8 @@
|
|||||||
|
#!/home/aridgway/blog/blog/.venv/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
from pelican.tools.pelican_quickstart import main
|
||||||
|
if __name__ == '__main__':
|
||||||
|
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||||
|
sys.exit(main())
|
8
.venv/bin/pelican-themes
Executable file
8
.venv/bin/pelican-themes
Executable file
@ -0,0 +1,8 @@
|
|||||||
|
#!/home/aridgway/blog/blog/.venv/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
from pelican.tools.pelican_themes import main
|
||||||
|
if __name__ == '__main__':
|
||||||
|
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||||
|
sys.exit(main())
|
8
.venv/bin/pip
Executable file
8
.venv/bin/pip
Executable file
@ -0,0 +1,8 @@
|
|||||||
|
#!/home/aridgway/blog/blog/.venv/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
from pip._internal.cli.main import main
|
||||||
|
if __name__ == '__main__':
|
||||||
|
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||||
|
sys.exit(main())
|
8
.venv/bin/pip3
Executable file
8
.venv/bin/pip3
Executable file
@ -0,0 +1,8 @@
|
|||||||
|
#!/home/aridgway/blog/blog/.venv/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
from pip._internal.cli.main import main
|
||||||
|
if __name__ == '__main__':
|
||||||
|
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||||
|
sys.exit(main())
|
8
.venv/bin/pip3.11
Executable file
8
.venv/bin/pip3.11
Executable file
@ -0,0 +1,8 @@
|
|||||||
|
#!/home/aridgway/blog/blog/.venv/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
from pip._internal.cli.main import main
|
||||||
|
if __name__ == '__main__':
|
||||||
|
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||||
|
sys.exit(main())
|
8
.venv/bin/pygmentize
Executable file
8
.venv/bin/pygmentize
Executable file
@ -0,0 +1,8 @@
|
|||||||
|
#!/home/aridgway/blog/blog/.venv/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
from pygments.cmdline import main
|
||||||
|
if __name__ == '__main__':
|
||||||
|
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||||
|
sys.exit(main())
|
1
.venv/bin/python
Symbolic link
1
.venv/bin/python
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
/usr/bin/python
|
1
.venv/bin/python3
Symbolic link
1
.venv/bin/python3
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
python
|
1
.venv/bin/python3.11
Symbolic link
1
.venv/bin/python3.11
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
python
|
23
.venv/bin/rst2html.py
Executable file
23
.venv/bin/rst2html.py
Executable file
@ -0,0 +1,23 @@
|
|||||||
|
#!/home/aridgway/blog/blog/.venv/bin/python
|
||||||
|
|
||||||
|
# $Id: rst2html.py 9115 2022-07-28 17:06:24Z milde $
|
||||||
|
# Author: David Goodger <goodger@python.org>
|
||||||
|
# Copyright: This module has been placed in the public domain.
|
||||||
|
|
||||||
|
"""
|
||||||
|
A minimal front end to the Docutils Publisher, producing HTML.
|
||||||
|
"""
|
||||||
|
|
||||||
|
try:
|
||||||
|
import locale
|
||||||
|
locale.setlocale(locale.LC_ALL, '')
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
from docutils.core import publish_cmdline, default_description
|
||||||
|
|
||||||
|
|
||||||
|
description = ('Generates (X)HTML documents from standalone reStructuredText '
|
||||||
|
'sources. ' + default_description)
|
||||||
|
|
||||||
|
publish_cmdline(writer_name='html', description=description)
|
26
.venv/bin/rst2html4.py
Executable file
26
.venv/bin/rst2html4.py
Executable file
@ -0,0 +1,26 @@
|
|||||||
|
#!/home/aridgway/blog/blog/.venv/bin/python
|
||||||
|
|
||||||
|
# $Id: rst2html4.py 9115 2022-07-28 17:06:24Z milde $
|
||||||
|
# Author: David Goodger <goodger@python.org>
|
||||||
|
# Copyright: This module has been placed in the public domain.
|
||||||
|
|
||||||
|
"""
|
||||||
|
A minimal front end to the Docutils Publisher, producing (X)HTML.
|
||||||
|
|
||||||
|
The output conforms to XHTML 1.0 transitional
|
||||||
|
and almost to HTML 4.01 transitional (except for closing empty tags).
|
||||||
|
"""
|
||||||
|
|
||||||
|
try:
|
||||||
|
import locale
|
||||||
|
locale.setlocale(locale.LC_ALL, '')
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
from docutils.core import publish_cmdline, default_description
|
||||||
|
|
||||||
|
|
||||||
|
description = ('Generates (X)HTML documents from standalone reStructuredText '
|
||||||
|
'sources. ' + default_description)
|
||||||
|
|
||||||
|
publish_cmdline(writer_name='html4', description=description)
|
33
.venv/bin/rst2html5.py
Executable file
33
.venv/bin/rst2html5.py
Executable file
@ -0,0 +1,33 @@
|
|||||||
|
#!/home/aridgway/blog/blog/.venv/bin/python
|
||||||
|
# :Copyright: © 2015 Günter Milde.
|
||||||
|
# :License: Released under the terms of the `2-Clause BSD license`_, in short:
|
||||||
|
#
|
||||||
|
# Copying and distribution of this file, with or without modification,
|
||||||
|
# are permitted in any medium without royalty provided the copyright
|
||||||
|
# notice and this notice are preserved.
|
||||||
|
# This file is offered as-is, without any warranty.
|
||||||
|
#
|
||||||
|
# .. _2-Clause BSD license: https://opensource.org/licenses/BSD-2-Clause
|
||||||
|
#
|
||||||
|
# Revision: $Revision: 9021 $
|
||||||
|
# Date: $Date: 2022-03-04 16:54:22 +0100 (Fr, 04. Mär 2022) $
|
||||||
|
|
||||||
|
"""
|
||||||
|
A minimal front end to the Docutils Publisher, producing HTML 5 documents.
|
||||||
|
|
||||||
|
The output is also valid XML.
|
||||||
|
"""
|
||||||
|
|
||||||
|
try:
|
||||||
|
import locale # module missing in Jython
|
||||||
|
locale.setlocale(locale.LC_ALL, '')
|
||||||
|
except locale.Error:
|
||||||
|
pass
|
||||||
|
|
||||||
|
from docutils.core import publish_cmdline, default_description
|
||||||
|
|
||||||
|
description = ('Generates HTML5 documents from standalone '
|
||||||
|
'reStructuredText sources.\n'
|
||||||
|
+ default_description)
|
||||||
|
|
||||||
|
publish_cmdline(writer_name='html5', description=description)
|
26
.venv/bin/rst2latex.py
Executable file
26
.venv/bin/rst2latex.py
Executable file
@ -0,0 +1,26 @@
|
|||||||
|
#!/home/aridgway/blog/blog/.venv/bin/python
|
||||||
|
|
||||||
|
# $Id: rst2latex.py 9115 2022-07-28 17:06:24Z milde $
|
||||||
|
# Author: David Goodger <goodger@python.org>
|
||||||
|
# Copyright: This module has been placed in the public domain.
|
||||||
|
|
||||||
|
"""
|
||||||
|
A minimal front end to the Docutils Publisher, producing LaTeX.
|
||||||
|
"""
|
||||||
|
|
||||||
|
try:
|
||||||
|
import locale
|
||||||
|
locale.setlocale(locale.LC_ALL, '')
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
from docutils.core import publish_cmdline
|
||||||
|
|
||||||
|
description = ('Generates LaTeX documents from standalone reStructuredText '
|
||||||
|
'sources. '
|
||||||
|
'Reads from <source> (default is stdin) and writes to '
|
||||||
|
'<destination> (default is stdout). See '
|
||||||
|
'<https://docutils.sourceforge.io/docs/user/latex.html> for '
|
||||||
|
'the full reference.')
|
||||||
|
|
||||||
|
publish_cmdline(writer_name='latex', description=description)
|
27
.venv/bin/rst2man.py
Executable file
27
.venv/bin/rst2man.py
Executable file
@ -0,0 +1,27 @@
|
|||||||
|
#!/home/aridgway/blog/blog/.venv/bin/python
|
||||||
|
|
||||||
|
# Author:
|
||||||
|
# Contact: grubert@users.sf.net
|
||||||
|
# Copyright: This module has been placed in the public domain.
|
||||||
|
|
||||||
|
"""
|
||||||
|
man.py
|
||||||
|
======
|
||||||
|
|
||||||
|
This module provides a simple command line interface that uses the
|
||||||
|
man page writer to output from ReStructuredText source.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import locale
|
||||||
|
try:
|
||||||
|
locale.setlocale(locale.LC_ALL, '')
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
from docutils.core import publish_cmdline, default_description
|
||||||
|
from docutils.writers import manpage
|
||||||
|
|
||||||
|
description = ("Generates plain unix manual documents. "
|
||||||
|
+ default_description)
|
||||||
|
|
||||||
|
publish_cmdline(writer=manpage.Writer(), description=description)
|
28
.venv/bin/rst2odt.py
Executable file
28
.venv/bin/rst2odt.py
Executable file
@ -0,0 +1,28 @@
|
|||||||
|
#!/home/aridgway/blog/blog/.venv/bin/python
|
||||||
|
|
||||||
|
# $Id: rst2odt.py 9115 2022-07-28 17:06:24Z milde $
|
||||||
|
# Author: Dave Kuhlman <dkuhlman@rexx.com>
|
||||||
|
# Copyright: This module has been placed in the public domain.
|
||||||
|
|
||||||
|
"""
|
||||||
|
A front end to the Docutils Publisher, producing OpenOffice documents.
|
||||||
|
"""
|
||||||
|
|
||||||
|
try:
|
||||||
|
import locale
|
||||||
|
locale.setlocale(locale.LC_ALL, '')
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
from docutils.core import publish_cmdline_to_binary, default_description
|
||||||
|
from docutils.writers.odf_odt import Writer, Reader
|
||||||
|
|
||||||
|
|
||||||
|
description = ('Generates OpenDocument/OpenOffice/ODF documents from '
|
||||||
|
'standalone reStructuredText sources. ' + default_description)
|
||||||
|
|
||||||
|
|
||||||
|
writer = Writer()
|
||||||
|
reader = Reader()
|
||||||
|
output = publish_cmdline_to_binary(reader=reader, writer=writer,
|
||||||
|
description=description)
|
20
.venv/bin/rst2odt_prepstyles.py
Executable file
20
.venv/bin/rst2odt_prepstyles.py
Executable file
@ -0,0 +1,20 @@
|
|||||||
|
#!/home/aridgway/blog/blog/.venv/bin/python
|
||||||
|
|
||||||
|
# Copyright: This module has been placed in the public domain.
|
||||||
|
|
||||||
|
"""
|
||||||
|
Adapt a word-processor-generated styles.odt for odtwriter use:
|
||||||
|
|
||||||
|
Drop page size specifications from styles.xml in STYLE_FILE.odt.
|
||||||
|
See https://docutils.sourceforge.io/docs/user/odt.html#page-size
|
||||||
|
|
||||||
|
Provisional backwards compatibility stub (to be removed in Docutils >= 0.21).
|
||||||
|
|
||||||
|
The actual code moved to the "docutils" library package and can be started
|
||||||
|
with ``python -m docutils.writers.odf_odt.prepstyles``.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from docutils.writers.odf_odt import prepstyles
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
prepstyles.main()
|
23
.venv/bin/rst2pseudoxml.py
Executable file
23
.venv/bin/rst2pseudoxml.py
Executable file
@ -0,0 +1,23 @@
|
|||||||
|
#!/home/aridgway/blog/blog/.venv/bin/python
|
||||||
|
|
||||||
|
# $Id: rst2pseudoxml.py 9115 2022-07-28 17:06:24Z milde $
|
||||||
|
# Author: David Goodger <goodger@python.org>
|
||||||
|
# Copyright: This module has been placed in the public domain.
|
||||||
|
|
||||||
|
"""
|
||||||
|
A minimal front end to the Docutils Publisher, producing pseudo-XML.
|
||||||
|
"""
|
||||||
|
|
||||||
|
try:
|
||||||
|
import locale
|
||||||
|
locale.setlocale(locale.LC_ALL, '')
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
from docutils.core import publish_cmdline, default_description
|
||||||
|
|
||||||
|
|
||||||
|
description = ('Generates pseudo-XML from standalone reStructuredText '
|
||||||
|
'sources (for testing purposes). ' + default_description)
|
||||||
|
|
||||||
|
publish_cmdline(description=description)
|
24
.venv/bin/rst2s5.py
Executable file
24
.venv/bin/rst2s5.py
Executable file
@ -0,0 +1,24 @@
|
|||||||
|
#!/home/aridgway/blog/blog/.venv/bin/python
|
||||||
|
|
||||||
|
# $Id: rst2s5.py 9115 2022-07-28 17:06:24Z milde $
|
||||||
|
# Author: Chris Liechti <cliechti@gmx.net>
|
||||||
|
# Copyright: This module has been placed in the public domain.
|
||||||
|
|
||||||
|
"""
|
||||||
|
A minimal front end to the Docutils Publisher, producing HTML slides using
|
||||||
|
the S5 template system.
|
||||||
|
"""
|
||||||
|
|
||||||
|
try:
|
||||||
|
import locale
|
||||||
|
locale.setlocale(locale.LC_ALL, '')
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
from docutils.core import publish_cmdline, default_description
|
||||||
|
|
||||||
|
|
||||||
|
description = ('Generates S5 (X)HTML slideshow documents from standalone '
|
||||||
|
'reStructuredText sources. ' + default_description)
|
||||||
|
|
||||||
|
publish_cmdline(writer_name='s5', description=description)
|
27
.venv/bin/rst2xetex.py
Executable file
27
.venv/bin/rst2xetex.py
Executable file
@ -0,0 +1,27 @@
|
|||||||
|
#!/home/aridgway/blog/blog/.venv/bin/python
|
||||||
|
|
||||||
|
# $Id: rst2xetex.py 9115 2022-07-28 17:06:24Z milde $
|
||||||
|
# Author: Guenter Milde
|
||||||
|
# Copyright: This module has been placed in the public domain.
|
||||||
|
|
||||||
|
"""
|
||||||
|
A minimal front end to the Docutils Publisher, producing Lua/XeLaTeX code.
|
||||||
|
"""
|
||||||
|
|
||||||
|
try:
|
||||||
|
import locale
|
||||||
|
locale.setlocale(locale.LC_ALL, '')
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
from docutils.core import publish_cmdline
|
||||||
|
|
||||||
|
description = ('Generates LaTeX documents from standalone reStructuredText '
|
||||||
|
'sources for compilation with the Unicode-aware TeX variants '
|
||||||
|
'XeLaTeX or LuaLaTeX. '
|
||||||
|
'Reads from <source> (default is stdin) and writes to '
|
||||||
|
'<destination> (default is stdout). See '
|
||||||
|
'<https://docutils.sourceforge.io/docs/user/latex.html> for '
|
||||||
|
'the full reference.')
|
||||||
|
|
||||||
|
publish_cmdline(writer_name='xetex', description=description)
|
23
.venv/bin/rst2xml.py
Executable file
23
.venv/bin/rst2xml.py
Executable file
@ -0,0 +1,23 @@
|
|||||||
|
#!/home/aridgway/blog/blog/.venv/bin/python
|
||||||
|
|
||||||
|
# $Id: rst2xml.py 9115 2022-07-28 17:06:24Z milde $
|
||||||
|
# Author: David Goodger <goodger@python.org>
|
||||||
|
# Copyright: This module has been placed in the public domain.
|
||||||
|
|
||||||
|
"""
|
||||||
|
A minimal front end to the Docutils Publisher, producing Docutils XML.
|
||||||
|
"""
|
||||||
|
|
||||||
|
try:
|
||||||
|
import locale
|
||||||
|
locale.setlocale(locale.LC_ALL, '')
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
from docutils.core import publish_cmdline, default_description
|
||||||
|
|
||||||
|
|
||||||
|
description = ('Generates Docutils-native XML from standalone '
|
||||||
|
'reStructuredText sources. ' + default_description)
|
||||||
|
|
||||||
|
publish_cmdline(writer_name='xml', description=description)
|
25
.venv/bin/rstpep2html.py
Executable file
25
.venv/bin/rstpep2html.py
Executable file
@ -0,0 +1,25 @@
|
|||||||
|
#!/home/aridgway/blog/blog/.venv/bin/python
|
||||||
|
|
||||||
|
# $Id: rstpep2html.py 9115 2022-07-28 17:06:24Z milde $
|
||||||
|
# Author: David Goodger <goodger@python.org>
|
||||||
|
# Copyright: This module has been placed in the public domain.
|
||||||
|
|
||||||
|
"""
|
||||||
|
A minimal front end to the Docutils Publisher, producing HTML from PEP
|
||||||
|
(Python Enhancement Proposal) documents.
|
||||||
|
"""
|
||||||
|
|
||||||
|
try:
|
||||||
|
import locale
|
||||||
|
locale.setlocale(locale.LC_ALL, '')
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
from docutils.core import publish_cmdline, default_description
|
||||||
|
|
||||||
|
|
||||||
|
description = ('Generates (X)HTML from reStructuredText-format PEP files. '
|
||||||
|
+ default_description)
|
||||||
|
|
||||||
|
publish_cmdline(reader_name='pep', writer_name='pep_html',
|
||||||
|
description=description)
|
8
.venv/bin/unidecode
Executable file
8
.venv/bin/unidecode
Executable file
@ -0,0 +1,8 @@
|
|||||||
|
#!/home/aridgway/blog/blog/.venv/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
from unidecode.util import main
|
||||||
|
if __name__ == '__main__':
|
||||||
|
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||||
|
sys.exit(main())
|
@ -0,0 +1 @@
|
|||||||
|
pip
|
@ -0,0 +1,28 @@
|
|||||||
|
Copyright 2007 Pallets
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are
|
||||||
|
met:
|
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
3. Neither the name of the copyright holder nor the names of its
|
||||||
|
contributors may be used to endorse or promote products derived from
|
||||||
|
this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
|
||||||
|
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
|
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
|
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
@ -0,0 +1,113 @@
|
|||||||
|
Metadata-Version: 2.1
|
||||||
|
Name: Jinja2
|
||||||
|
Version: 3.1.2
|
||||||
|
Summary: A very fast and expressive template engine.
|
||||||
|
Home-page: https://palletsprojects.com/p/jinja/
|
||||||
|
Author: Armin Ronacher
|
||||||
|
Author-email: armin.ronacher@active-4.com
|
||||||
|
Maintainer: Pallets
|
||||||
|
Maintainer-email: contact@palletsprojects.com
|
||||||
|
License: BSD-3-Clause
|
||||||
|
Project-URL: Donate, https://palletsprojects.com/donate
|
||||||
|
Project-URL: Documentation, https://jinja.palletsprojects.com/
|
||||||
|
Project-URL: Changes, https://jinja.palletsprojects.com/changes/
|
||||||
|
Project-URL: Source Code, https://github.com/pallets/jinja/
|
||||||
|
Project-URL: Issue Tracker, https://github.com/pallets/jinja/issues/
|
||||||
|
Project-URL: Twitter, https://twitter.com/PalletsTeam
|
||||||
|
Project-URL: Chat, https://discord.gg/pallets
|
||||||
|
Platform: UNKNOWN
|
||||||
|
Classifier: Development Status :: 5 - Production/Stable
|
||||||
|
Classifier: Environment :: Web Environment
|
||||||
|
Classifier: Intended Audience :: Developers
|
||||||
|
Classifier: License :: OSI Approved :: BSD License
|
||||||
|
Classifier: Operating System :: OS Independent
|
||||||
|
Classifier: Programming Language :: Python
|
||||||
|
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
|
||||||
|
Classifier: Topic :: Text Processing :: Markup :: HTML
|
||||||
|
Requires-Python: >=3.7
|
||||||
|
Description-Content-Type: text/x-rst
|
||||||
|
License-File: LICENSE.rst
|
||||||
|
Requires-Dist: MarkupSafe (>=2.0)
|
||||||
|
Provides-Extra: i18n
|
||||||
|
Requires-Dist: Babel (>=2.7) ; extra == 'i18n'
|
||||||
|
|
||||||
|
Jinja
|
||||||
|
=====
|
||||||
|
|
||||||
|
Jinja is a fast, expressive, extensible templating engine. Special
|
||||||
|
placeholders in the template allow writing code similar to Python
|
||||||
|
syntax. Then the template is passed data to render the final document.
|
||||||
|
|
||||||
|
It includes:
|
||||||
|
|
||||||
|
- Template inheritance and inclusion.
|
||||||
|
- Define and import macros within templates.
|
||||||
|
- HTML templates can use autoescaping to prevent XSS from untrusted
|
||||||
|
user input.
|
||||||
|
- A sandboxed environment can safely render untrusted templates.
|
||||||
|
- AsyncIO support for generating templates and calling async
|
||||||
|
functions.
|
||||||
|
- I18N support with Babel.
|
||||||
|
- Templates are compiled to optimized Python code just-in-time and
|
||||||
|
cached, or can be compiled ahead-of-time.
|
||||||
|
- Exceptions point to the correct line in templates to make debugging
|
||||||
|
easier.
|
||||||
|
- Extensible filters, tests, functions, and even syntax.
|
||||||
|
|
||||||
|
Jinja's philosophy is that while application logic belongs in Python if
|
||||||
|
possible, it shouldn't make the template designer's job difficult by
|
||||||
|
restricting functionality too much.
|
||||||
|
|
||||||
|
|
||||||
|
Installing
|
||||||
|
----------
|
||||||
|
|
||||||
|
Install and update using `pip`_:
|
||||||
|
|
||||||
|
.. code-block:: text
|
||||||
|
|
||||||
|
$ pip install -U Jinja2
|
||||||
|
|
||||||
|
.. _pip: https://pip.pypa.io/en/stable/getting-started/
|
||||||
|
|
||||||
|
|
||||||
|
In A Nutshell
|
||||||
|
-------------
|
||||||
|
|
||||||
|
.. code-block:: jinja
|
||||||
|
|
||||||
|
{% extends "base.html" %}
|
||||||
|
{% block title %}Members{% endblock %}
|
||||||
|
{% block content %}
|
||||||
|
<ul>
|
||||||
|
{% for user in users %}
|
||||||
|
<li><a href="{{ user.url }}">{{ user.username }}</a></li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
|
||||||
|
Donate
|
||||||
|
------
|
||||||
|
|
||||||
|
The Pallets organization develops and supports Jinja and other popular
|
||||||
|
packages. In order to grow the community of contributors and users, and
|
||||||
|
allow the maintainers to devote more time to the projects, `please
|
||||||
|
donate today`_.
|
||||||
|
|
||||||
|
.. _please donate today: https://palletsprojects.com/donate
|
||||||
|
|
||||||
|
|
||||||
|
Links
|
||||||
|
-----
|
||||||
|
|
||||||
|
- Documentation: https://jinja.palletsprojects.com/
|
||||||
|
- Changes: https://jinja.palletsprojects.com/changes/
|
||||||
|
- PyPI Releases: https://pypi.org/project/Jinja2/
|
||||||
|
- Source Code: https://github.com/pallets/jinja/
|
||||||
|
- Issue Tracker: https://github.com/pallets/jinja/issues/
|
||||||
|
- Website: https://palletsprojects.com/p/jinja/
|
||||||
|
- Twitter: https://twitter.com/PalletsTeam
|
||||||
|
- Chat: https://discord.gg/pallets
|
||||||
|
|
||||||
|
|
@ -0,0 +1,58 @@
|
|||||||
|
Jinja2-3.1.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||||
|
Jinja2-3.1.2.dist-info/LICENSE.rst,sha256=O0nc7kEF6ze6wQ-vG-JgQI_oXSUrjp3y4JefweCUQ3s,1475
|
||||||
|
Jinja2-3.1.2.dist-info/METADATA,sha256=PZ6v2SIidMNixR7MRUX9f7ZWsPwtXanknqiZUmRbh4U,3539
|
||||||
|
Jinja2-3.1.2.dist-info/RECORD,,
|
||||||
|
Jinja2-3.1.2.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
|
||||||
|
Jinja2-3.1.2.dist-info/entry_points.txt,sha256=zRd62fbqIyfUpsRtU7EVIFyiu1tPwfgO7EvPErnxgTE,59
|
||||||
|
Jinja2-3.1.2.dist-info/top_level.txt,sha256=PkeVWtLb3-CqjWi1fO29OCbj55EhX_chhKrCdrVe_zs,7
|
||||||
|
jinja2/__init__.py,sha256=8vGduD8ytwgD6GDSqpYc2m3aU-T7PKOAddvVXgGr_Fs,1927
|
||||||
|
jinja2/__pycache__/__init__.cpython-311.pyc,,
|
||||||
|
jinja2/__pycache__/_identifier.cpython-311.pyc,,
|
||||||
|
jinja2/__pycache__/async_utils.cpython-311.pyc,,
|
||||||
|
jinja2/__pycache__/bccache.cpython-311.pyc,,
|
||||||
|
jinja2/__pycache__/compiler.cpython-311.pyc,,
|
||||||
|
jinja2/__pycache__/constants.cpython-311.pyc,,
|
||||||
|
jinja2/__pycache__/debug.cpython-311.pyc,,
|
||||||
|
jinja2/__pycache__/defaults.cpython-311.pyc,,
|
||||||
|
jinja2/__pycache__/environment.cpython-311.pyc,,
|
||||||
|
jinja2/__pycache__/exceptions.cpython-311.pyc,,
|
||||||
|
jinja2/__pycache__/ext.cpython-311.pyc,,
|
||||||
|
jinja2/__pycache__/filters.cpython-311.pyc,,
|
||||||
|
jinja2/__pycache__/idtracking.cpython-311.pyc,,
|
||||||
|
jinja2/__pycache__/lexer.cpython-311.pyc,,
|
||||||
|
jinja2/__pycache__/loaders.cpython-311.pyc,,
|
||||||
|
jinja2/__pycache__/meta.cpython-311.pyc,,
|
||||||
|
jinja2/__pycache__/nativetypes.cpython-311.pyc,,
|
||||||
|
jinja2/__pycache__/nodes.cpython-311.pyc,,
|
||||||
|
jinja2/__pycache__/optimizer.cpython-311.pyc,,
|
||||||
|
jinja2/__pycache__/parser.cpython-311.pyc,,
|
||||||
|
jinja2/__pycache__/runtime.cpython-311.pyc,,
|
||||||
|
jinja2/__pycache__/sandbox.cpython-311.pyc,,
|
||||||
|
jinja2/__pycache__/tests.cpython-311.pyc,,
|
||||||
|
jinja2/__pycache__/utils.cpython-311.pyc,,
|
||||||
|
jinja2/__pycache__/visitor.cpython-311.pyc,,
|
||||||
|
jinja2/_identifier.py,sha256=_zYctNKzRqlk_murTNlzrju1FFJL7Va_Ijqqd7ii2lU,1958
|
||||||
|
jinja2/async_utils.py,sha256=dHlbTeaxFPtAOQEYOGYh_PHcDT0rsDaUJAFDl_0XtTg,2472
|
||||||
|
jinja2/bccache.py,sha256=mhz5xtLxCcHRAa56azOhphIAe19u1we0ojifNMClDio,14061
|
||||||
|
jinja2/compiler.py,sha256=Gs-N8ThJ7OWK4-reKoO8Wh1ZXz95MVphBKNVf75qBr8,72172
|
||||||
|
jinja2/constants.py,sha256=GMoFydBF_kdpaRKPoM5cl5MviquVRLVyZtfp5-16jg0,1433
|
||||||
|
jinja2/debug.py,sha256=iWJ432RadxJNnaMOPrjIDInz50UEgni3_HKuFXi2vuQ,6299
|
||||||
|
jinja2/defaults.py,sha256=boBcSw78h-lp20YbaXSJsqkAI2uN_mD_TtCydpeq5wU,1267
|
||||||
|
jinja2/environment.py,sha256=6uHIcc7ZblqOMdx_uYNKqRnnwAF0_nzbyeMP9FFtuh4,61349
|
||||||
|
jinja2/exceptions.py,sha256=ioHeHrWwCWNaXX1inHmHVblvc4haO7AXsjCp3GfWvx0,5071
|
||||||
|
jinja2/ext.py,sha256=ivr3P7LKbddiXDVez20EflcO3q2aHQwz9P_PgWGHVqE,31502
|
||||||
|
jinja2/filters.py,sha256=9js1V-h2RlyW90IhLiBGLM2U-k6SCy2F4BUUMgB3K9Q,53509
|
||||||
|
jinja2/idtracking.py,sha256=GfNmadir4oDALVxzn3DL9YInhJDr69ebXeA2ygfuCGA,10704
|
||||||
|
jinja2/lexer.py,sha256=DW2nX9zk-6MWp65YR2bqqj0xqCvLtD-u9NWT8AnFRxQ,29726
|
||||||
|
jinja2/loaders.py,sha256=BfptfvTVpClUd-leMkHczdyPNYFzp_n7PKOJ98iyHOg,23207
|
||||||
|
jinja2/meta.py,sha256=GNPEvifmSaU3CMxlbheBOZjeZ277HThOPUTf1RkppKQ,4396
|
||||||
|
jinja2/nativetypes.py,sha256=DXgORDPRmVWgy034H0xL8eF7qYoK3DrMxs-935d0Fzk,4226
|
||||||
|
jinja2/nodes.py,sha256=i34GPRAZexXMT6bwuf5SEyvdmS-bRCy9KMjwN5O6pjk,34550
|
||||||
|
jinja2/optimizer.py,sha256=tHkMwXxfZkbfA1KmLcqmBMSaz7RLIvvItrJcPoXTyD8,1650
|
||||||
|
jinja2/parser.py,sha256=nHd-DFHbiygvfaPtm9rcQXJChZG7DPsWfiEsqfwKerY,39595
|
||||||
|
jinja2/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
|
jinja2/runtime.py,sha256=5CmD5BjbEJxSiDNTFBeKCaq8qU4aYD2v6q2EluyExms,33476
|
||||||
|
jinja2/sandbox.py,sha256=Y0xZeXQnH6EX5VjaV2YixESxoepnRbW_3UeQosaBU3M,14584
|
||||||
|
jinja2/tests.py,sha256=Am5Z6Lmfr2XaH_npIfJJ8MdXtWsbLjMULZJulTAj30E,5905
|
||||||
|
jinja2/utils.py,sha256=u9jXESxGn8ATZNVolwmkjUVu4SA-tLgV0W7PcSfPfdQ,23965
|
||||||
|
jinja2/visitor.py,sha256=MH14C6yq24G_KVtWzjwaI7Wg14PCJIYlWW1kpkxYak0,3568
|
@ -0,0 +1,5 @@
|
|||||||
|
Wheel-Version: 1.0
|
||||||
|
Generator: bdist_wheel (0.37.1)
|
||||||
|
Root-Is-Purelib: true
|
||||||
|
Tag: py3-none-any
|
||||||
|
|
@ -0,0 +1,2 @@
|
|||||||
|
[babel.extractors]
|
||||||
|
jinja2 = jinja2.ext:babel_extract[i18n]
|
@ -0,0 +1 @@
|
|||||||
|
jinja2
|
@ -0,0 +1 @@
|
|||||||
|
pip
|
@ -0,0 +1,29 @@
|
|||||||
|
Copyright 2007, 2008 The Python Markdown Project (v. 1.7 and later)
|
||||||
|
Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
|
||||||
|
Copyright 2004 Manfred Stienstra (the original version)
|
||||||
|
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
* Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
* Neither the name of the Python Markdown Project nor the
|
||||||
|
names of its contributors may be used to endorse or promote products
|
||||||
|
derived from this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE PYTHON MARKDOWN PROJECT ''AS IS'' AND ANY
|
||||||
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
DISCLAIMED. IN NO EVENT SHALL ANY CONTRIBUTORS TO THE PYTHON MARKDOWN PROJECT
|
||||||
|
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGE.
|
@ -0,0 +1,137 @@
|
|||||||
|
Metadata-Version: 2.1
|
||||||
|
Name: Markdown
|
||||||
|
Version: 3.4.3
|
||||||
|
Summary: Python implementation of John Gruber's Markdown.
|
||||||
|
Author: Manfred Stienstra, Yuri Takhteyev
|
||||||
|
Author-email: Waylan limberg <python.markdown@gmail.com>
|
||||||
|
Maintainer: Isaac Muse
|
||||||
|
Maintainer-email: Waylan Limberg <python.markdown@gmail.com>
|
||||||
|
License: Copyright 2007, 2008 The Python Markdown Project (v. 1.7 and later)
|
||||||
|
Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
|
||||||
|
Copyright 2004 Manfred Stienstra (the original version)
|
||||||
|
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
* Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
* Neither the name of the Python Markdown Project nor the
|
||||||
|
names of its contributors may be used to endorse or promote products
|
||||||
|
derived from this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE PYTHON MARKDOWN PROJECT ''AS IS'' AND ANY
|
||||||
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
DISCLAIMED. IN NO EVENT SHALL ANY CONTRIBUTORS TO THE PYTHON MARKDOWN PROJECT
|
||||||
|
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
Project-URL: Homepage, https://Python-Markdown.github.io/
|
||||||
|
Project-URL: Documentation, https://Python-Markdown.github.io/
|
||||||
|
Project-URL: Repository, https://github.com/Python-Markdown/markdown
|
||||||
|
Project-URL: Issue Tracker, https://github.com/Python-Markdown/markdown/issues
|
||||||
|
Project-URL: Changelog, https://github.com/Python-Markdown/markdown/blob/master/docs/change_log/index.md
|
||||||
|
Keywords: markdown,markdown-parser,python-markdown,markdown-to-html
|
||||||
|
Classifier: Development Status :: 5 - Production/Stable
|
||||||
|
Classifier: License :: OSI Approved :: BSD License
|
||||||
|
Classifier: Operating System :: OS Independent
|
||||||
|
Classifier: Programming Language :: Python
|
||||||
|
Classifier: Programming Language :: Python :: 3
|
||||||
|
Classifier: Programming Language :: Python :: 3.7
|
||||||
|
Classifier: Programming Language :: Python :: 3.8
|
||||||
|
Classifier: Programming Language :: Python :: 3.9
|
||||||
|
Classifier: Programming Language :: Python :: 3.10
|
||||||
|
Classifier: Programming Language :: Python :: 3.11
|
||||||
|
Classifier: Programming Language :: Python :: 3 :: Only
|
||||||
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
||||||
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
||||||
|
Classifier: Topic :: Communications :: Email :: Filters
|
||||||
|
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content :: CGI Tools/Libraries
|
||||||
|
Classifier: Topic :: Internet :: WWW/HTTP :: Site Management
|
||||||
|
Classifier: Topic :: Software Development :: Documentation
|
||||||
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
||||||
|
Classifier: Topic :: Text Processing :: Filters
|
||||||
|
Classifier: Topic :: Text Processing :: Markup :: HTML
|
||||||
|
Classifier: Topic :: Text Processing :: Markup :: Markdown
|
||||||
|
Requires-Python: >=3.7
|
||||||
|
Description-Content-Type: text/markdown
|
||||||
|
License-File: LICENSE.md
|
||||||
|
Requires-Dist: importlib-metadata (>=4.4) ; python_version < "3.10"
|
||||||
|
Provides-Extra: testing
|
||||||
|
Requires-Dist: coverage ; extra == 'testing'
|
||||||
|
Requires-Dist: pyyaml ; extra == 'testing'
|
||||||
|
|
||||||
|
[Python-Markdown][]
|
||||||
|
===================
|
||||||
|
|
||||||
|
[![Build Status][build-button]][build]
|
||||||
|
[![Coverage Status][codecov-button]][codecov]
|
||||||
|
[![Latest Version][mdversion-button]][md-pypi]
|
||||||
|
[![Python Versions][pyversion-button]][md-pypi]
|
||||||
|
[![BSD License][bsdlicense-button]][bsdlicense]
|
||||||
|
[![Code of Conduct][codeofconduct-button]][Code of Conduct]
|
||||||
|
|
||||||
|
[build-button]: https://github.com/Python-Markdown/markdown/workflows/CI/badge.svg?event=push
|
||||||
|
[build]: https://github.com/Python-Markdown/markdown/actions?query=workflow%3ACI+event%3Apush
|
||||||
|
[codecov-button]: https://codecov.io/gh/Python-Markdown/markdown/branch/master/graph/badge.svg
|
||||||
|
[codecov]: https://codecov.io/gh/Python-Markdown/markdown
|
||||||
|
[mdversion-button]: https://img.shields.io/pypi/v/Markdown.svg
|
||||||
|
[md-pypi]: https://pypi.org/project/Markdown/
|
||||||
|
[pyversion-button]: https://img.shields.io/pypi/pyversions/Markdown.svg
|
||||||
|
[bsdlicense-button]: https://img.shields.io/badge/license-BSD-yellow.svg
|
||||||
|
[bsdlicense]: https://opensource.org/licenses/BSD-3-Clause
|
||||||
|
[codeofconduct-button]: https://img.shields.io/badge/code%20of%20conduct-contributor%20covenant-green.svg?style=flat-square
|
||||||
|
[Code of Conduct]: https://github.com/Python-Markdown/markdown/blob/master/CODE_OF_CONDUCT.md
|
||||||
|
|
||||||
|
This is a Python implementation of John Gruber's [Markdown][].
|
||||||
|
It is almost completely compliant with the reference implementation,
|
||||||
|
though there are a few known issues. See [Features][] for information
|
||||||
|
on what exactly is supported and what is not. Additional features are
|
||||||
|
supported by the [Available Extensions][].
|
||||||
|
|
||||||
|
[Python-Markdown]: https://Python-Markdown.github.io/
|
||||||
|
[Markdown]: https://daringfireball.net/projects/markdown/
|
||||||
|
[Features]: https://Python-Markdown.github.io#Features
|
||||||
|
[Available Extensions]: https://Python-Markdown.github.io/extensions
|
||||||
|
|
||||||
|
Documentation
|
||||||
|
-------------
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pip install markdown
|
||||||
|
```
|
||||||
|
```python
|
||||||
|
import markdown
|
||||||
|
html = markdown.markdown(your_text_string)
|
||||||
|
```
|
||||||
|
|
||||||
|
For more advanced [installation] and [usage] documentation, see the `docs/` directory
|
||||||
|
of the distribution or the project website at <https://Python-Markdown.github.io/>.
|
||||||
|
|
||||||
|
[installation]: https://python-markdown.github.io/install/
|
||||||
|
[usage]: https://python-markdown.github.io/reference/
|
||||||
|
|
||||||
|
See the change log at <https://Python-Markdown.github.io/change_log>.
|
||||||
|
|
||||||
|
Support
|
||||||
|
-------
|
||||||
|
|
||||||
|
You may report bugs, ask for help, and discuss various other issues on the [bug tracker][].
|
||||||
|
|
||||||
|
[bug tracker]: https://github.com/Python-Markdown/markdown/issues
|
||||||
|
|
||||||
|
Code of Conduct
|
||||||
|
---------------
|
||||||
|
|
||||||
|
Everyone interacting in the Python-Markdown project's code bases, issue trackers,
|
||||||
|
and mailing lists is expected to follow the [Code of Conduct].
|
@ -0,0 +1,74 @@
|
|||||||
|
../../../bin/markdown_py,sha256=VAfvHMS3xpAncl8WWaOc7S_pEHZHYFkHiflCWevBDQg,239
|
||||||
|
Markdown-3.4.3.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||||
|
Markdown-3.4.3.dist-info/LICENSE.md,sha256=bxGTy2NHGOZcOlN9biXr1hSCDsDvaTz8EiSBEmONZNo,1645
|
||||||
|
Markdown-3.4.3.dist-info/METADATA,sha256=B6fHm2ZWqYz1dl3MkMGyqiMPjtwXUwQaDSYIGXjSlaQ,6683
|
||||||
|
Markdown-3.4.3.dist-info/RECORD,,
|
||||||
|
Markdown-3.4.3.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
|
||||||
|
Markdown-3.4.3.dist-info/entry_points.txt,sha256=lMEyiiA_ZZyfPCBlDviBl-SiU0cfoeuEKpwxw361sKQ,1102
|
||||||
|
Markdown-3.4.3.dist-info/top_level.txt,sha256=IAxs8x618RXoH1uCqeLLxXsDefJvE_mIibr_M4sOlyk,9
|
||||||
|
markdown/__init__.py,sha256=XBsIkhLRPtAIiCAHaiPSu03JaKbHPYqO4bfD0hq6VVo,1013
|
||||||
|
markdown/__main__.py,sha256=JX1057VoovH3NA5uH5nQdQE8b0kXoeT79ZxCzFoL_kg,5803
|
||||||
|
markdown/__meta__.py,sha256=ZjYt0yeRFc5hMbElNpxk0iCfLDWPsRc-I3OO3KTteyw,1630
|
||||||
|
markdown/__pycache__/__init__.cpython-311.pyc,,
|
||||||
|
markdown/__pycache__/__main__.cpython-311.pyc,,
|
||||||
|
markdown/__pycache__/__meta__.cpython-311.pyc,,
|
||||||
|
markdown/__pycache__/blockparser.cpython-311.pyc,,
|
||||||
|
markdown/__pycache__/blockprocessors.cpython-311.pyc,,
|
||||||
|
markdown/__pycache__/core.cpython-311.pyc,,
|
||||||
|
markdown/__pycache__/htmlparser.cpython-311.pyc,,
|
||||||
|
markdown/__pycache__/inlinepatterns.cpython-311.pyc,,
|
||||||
|
markdown/__pycache__/postprocessors.cpython-311.pyc,,
|
||||||
|
markdown/__pycache__/preprocessors.cpython-311.pyc,,
|
||||||
|
markdown/__pycache__/serializers.cpython-311.pyc,,
|
||||||
|
markdown/__pycache__/test_tools.cpython-311.pyc,,
|
||||||
|
markdown/__pycache__/treeprocessors.cpython-311.pyc,,
|
||||||
|
markdown/__pycache__/util.cpython-311.pyc,,
|
||||||
|
markdown/blockparser.py,sha256=_KzFFkinAJ9LXlNP0vEc765enYUWBF7qlgxn9HSYFSk,4147
|
||||||
|
markdown/blockprocessors.py,sha256=sUHIdAsGGAEN443TusbiNOWYt38DsHV-RqJdGjumIFc,24893
|
||||||
|
markdown/core.py,sha256=fHSJjsuru2XUhYhO3ZbGElYWywATEbYolAQiu89YWBo,14652
|
||||||
|
markdown/extensions/__init__.py,sha256=8ZiiJLpbTSfp0aohALi4KbxoD9S34pxUAAIfAxbuj4E,2852
|
||||||
|
markdown/extensions/__pycache__/__init__.cpython-311.pyc,,
|
||||||
|
markdown/extensions/__pycache__/abbr.cpython-311.pyc,,
|
||||||
|
markdown/extensions/__pycache__/admonition.cpython-311.pyc,,
|
||||||
|
markdown/extensions/__pycache__/attr_list.cpython-311.pyc,,
|
||||||
|
markdown/extensions/__pycache__/codehilite.cpython-311.pyc,,
|
||||||
|
markdown/extensions/__pycache__/def_list.cpython-311.pyc,,
|
||||||
|
markdown/extensions/__pycache__/extra.cpython-311.pyc,,
|
||||||
|
markdown/extensions/__pycache__/fenced_code.cpython-311.pyc,,
|
||||||
|
markdown/extensions/__pycache__/footnotes.cpython-311.pyc,,
|
||||||
|
markdown/extensions/__pycache__/legacy_attrs.cpython-311.pyc,,
|
||||||
|
markdown/extensions/__pycache__/legacy_em.cpython-311.pyc,,
|
||||||
|
markdown/extensions/__pycache__/md_in_html.cpython-311.pyc,,
|
||||||
|
markdown/extensions/__pycache__/meta.cpython-311.pyc,,
|
||||||
|
markdown/extensions/__pycache__/nl2br.cpython-311.pyc,,
|
||||||
|
markdown/extensions/__pycache__/sane_lists.cpython-311.pyc,,
|
||||||
|
markdown/extensions/__pycache__/smarty.cpython-311.pyc,,
|
||||||
|
markdown/extensions/__pycache__/tables.cpython-311.pyc,,
|
||||||
|
markdown/extensions/__pycache__/toc.cpython-311.pyc,,
|
||||||
|
markdown/extensions/__pycache__/wikilinks.cpython-311.pyc,,
|
||||||
|
markdown/extensions/abbr.py,sha256=5TNU5ml6-H1n-fztEkgUphSTvp5yKCXaiPZMrVuRFvo,3186
|
||||||
|
markdown/extensions/admonition.py,sha256=INIecvdzQ7RLmgP8M-N6AZJ5uMd6dBfh9Uj6YibgNLk,5847
|
||||||
|
markdown/extensions/attr_list.py,sha256=nhKFY_u6BVyKW2oMUeC4wEjqFNGpDSnNXqaohuF6M7I,5988
|
||||||
|
markdown/extensions/codehilite.py,sha256=4q-ciXhIfdWGT0XxOIGpyCdTUqHvYDaBotwgbI4lckw,12906
|
||||||
|
markdown/extensions/def_list.py,sha256=HKStriCfwosWRjHgiph6hHIHwGjasEaE6UYW-_hstVo,3635
|
||||||
|
markdown/extensions/extra.py,sha256=ruwYAcbIaFxAmcT4pLoaRdw8Ok6sFTYWza7OAstcvtI,1831
|
||||||
|
markdown/extensions/fenced_code.py,sha256=Hd2RDaRWcCd4aI9fedoI6EElPmIVrD2BlvXdhRV64ik,7209
|
||||||
|
markdown/extensions/footnotes.py,sha256=eKUddjDuCAlyw0JWWzVVgGPRxOf_MVaU2GtDYP9bEgI,15851
|
||||||
|
markdown/extensions/legacy_attrs.py,sha256=qx4d8c_mxt0JZ7wP9Sfskvi3cZN-OtDGTFCi4gapZ74,2547
|
||||||
|
markdown/extensions/legacy_em.py,sha256=8mtzOGYu_FXKO7DrBVr_5v5ZH6ru1yv1TiobYBEFV5Q,1582
|
||||||
|
markdown/extensions/md_in_html.py,sha256=F4CUIa2DjDPLEIuJCbmbw9jL1mbFloPhraedynZL9Ig,15829
|
||||||
|
markdown/extensions/meta.py,sha256=EUfkzM7l7UpH__Or9K3pl8ldVddwndlCZWA3d712RAE,2331
|
||||||
|
markdown/extensions/nl2br.py,sha256=wAqTNOuf2L1NzlEvEqoID70n9y-aiYaGLkuyQk3CD0w,783
|
||||||
|
markdown/extensions/sane_lists.py,sha256=ZQmCf-247KBexVG0fc62nDvokGkV6W1uavYbieNKSG4,1505
|
||||||
|
markdown/extensions/smarty.py,sha256=4_7XB2SOWFAmG2z54F2j1P0SIsPXj4Xj2nUfQTcXMBM,10093
|
||||||
|
markdown/extensions/tables.py,sha256=3bkYFbiss78smyl4o4Dgfanno9CTMri7B7j-GTeUUHk,8107
|
||||||
|
markdown/extensions/toc.py,sha256=BOD97tUsEzHmsC7HoKQjuLNGN6NoLD8-WmlUs-26oXs,14332
|
||||||
|
markdown/extensions/wikilinks.py,sha256=GkgT9BY7b1-qW--dIwFAhC9V20RoeF13b7CFdw_V21Q,2812
|
||||||
|
markdown/htmlparser.py,sha256=k-jyjX7ADfL-bk3vyu-VDOXOWJBdMGooHeCJ0Id9Ge0,13038
|
||||||
|
markdown/inlinepatterns.py,sha256=JJB5Az1F4LPXlpiriIGw4NO9MMcskt7edU26LnAFs6w,29654
|
||||||
|
markdown/postprocessors.py,sha256=d3OZdZWaTJ3tpTPTGFR6xjcqoVOs28jsx8QdNHr2IUM,4320
|
||||||
|
markdown/preprocessors.py,sha256=-s8QGHGlX7JAIJTfCivuc-CVwTLWs0IyEU94YUT2IvQ,2742
|
||||||
|
markdown/serializers.py,sha256=_wQl-iJrPSUEQ4Q1owWYqN9qceVh6TOlAOH_i44BKAQ,6540
|
||||||
|
markdown/test_tools.py,sha256=Iht9NMNtDgtrMCNdjkMN9EWXjgsJjaFzJQVvzxo1Da0,8363
|
||||||
|
markdown/treeprocessors.py,sha256=MBnV7RyIvsLshRbkYA91EgtJX43i1wlkdca-Xfjt5jk,16240
|
||||||
|
markdown/util.py,sha256=aRtmgc-ZeiWKPSKRtqYMWElGg4qFVju-UNDhh9mANcI,11647
|
@ -0,0 +1,5 @@
|
|||||||
|
Wheel-Version: 1.0
|
||||||
|
Generator: bdist_wheel (0.40.0)
|
||||||
|
Root-Is-Purelib: true
|
||||||
|
Tag: py3-none-any
|
||||||
|
|
@ -0,0 +1,22 @@
|
|||||||
|
[console_scripts]
|
||||||
|
markdown_py = markdown.__main__:run
|
||||||
|
|
||||||
|
[markdown.extensions]
|
||||||
|
abbr = markdown.extensions.abbr:AbbrExtension
|
||||||
|
admonition = markdown.extensions.admonition:AdmonitionExtension
|
||||||
|
attr_list = markdown.extensions.attr_list:AttrListExtension
|
||||||
|
codehilite = markdown.extensions.codehilite:CodeHiliteExtension
|
||||||
|
def_list = markdown.extensions.def_list:DefListExtension
|
||||||
|
extra = markdown.extensions.extra:ExtraExtension
|
||||||
|
fenced_code = markdown.extensions.fenced_code:FencedCodeExtension
|
||||||
|
footnotes = markdown.extensions.footnotes:FootnoteExtension
|
||||||
|
legacy_attrs = markdown.extensions.legacy_attrs:LegacyAttrExtension
|
||||||
|
legacy_em = markdown.extensions.legacy_em:LegacyEmExtension
|
||||||
|
md_in_html = markdown.extensions.md_in_html:MarkdownInHtmlExtension
|
||||||
|
meta = markdown.extensions.meta:MetaExtension
|
||||||
|
nl2br = markdown.extensions.nl2br:Nl2BrExtension
|
||||||
|
sane_lists = markdown.extensions.sane_lists:SaneListExtension
|
||||||
|
smarty = markdown.extensions.smarty:SmartyExtension
|
||||||
|
tables = markdown.extensions.tables:TableExtension
|
||||||
|
toc = markdown.extensions.toc:TocExtension
|
||||||
|
wikilinks = markdown.extensions.wikilinks:WikiLinkExtension
|
@ -0,0 +1 @@
|
|||||||
|
markdown
|
@ -0,0 +1 @@
|
|||||||
|
pip
|
@ -0,0 +1,28 @@
|
|||||||
|
Copyright 2010 Pallets
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are
|
||||||
|
met:
|
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
3. Neither the name of the copyright holder nor the names of its
|
||||||
|
contributors may be used to endorse or promote products derived from
|
||||||
|
this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
|
||||||
|
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
|
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
|
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
@ -0,0 +1,93 @@
|
|||||||
|
Metadata-Version: 2.1
|
||||||
|
Name: MarkupSafe
|
||||||
|
Version: 2.1.3
|
||||||
|
Summary: Safely add untrusted strings to HTML/XML markup.
|
||||||
|
Home-page: https://palletsprojects.com/p/markupsafe/
|
||||||
|
Maintainer: Pallets
|
||||||
|
Maintainer-email: contact@palletsprojects.com
|
||||||
|
License: BSD-3-Clause
|
||||||
|
Project-URL: Donate, https://palletsprojects.com/donate
|
||||||
|
Project-URL: Documentation, https://markupsafe.palletsprojects.com/
|
||||||
|
Project-URL: Changes, https://markupsafe.palletsprojects.com/changes/
|
||||||
|
Project-URL: Source Code, https://github.com/pallets/markupsafe/
|
||||||
|
Project-URL: Issue Tracker, https://github.com/pallets/markupsafe/issues/
|
||||||
|
Project-URL: Chat, https://discord.gg/pallets
|
||||||
|
Classifier: Development Status :: 5 - Production/Stable
|
||||||
|
Classifier: Environment :: Web Environment
|
||||||
|
Classifier: Intended Audience :: Developers
|
||||||
|
Classifier: License :: OSI Approved :: BSD License
|
||||||
|
Classifier: Operating System :: OS Independent
|
||||||
|
Classifier: Programming Language :: Python
|
||||||
|
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
|
||||||
|
Classifier: Topic :: Text Processing :: Markup :: HTML
|
||||||
|
Requires-Python: >=3.7
|
||||||
|
Description-Content-Type: text/x-rst
|
||||||
|
License-File: LICENSE.rst
|
||||||
|
|
||||||
|
MarkupSafe
|
||||||
|
==========
|
||||||
|
|
||||||
|
MarkupSafe implements a text object that escapes characters so it is
|
||||||
|
safe to use in HTML and XML. Characters that have special meanings are
|
||||||
|
replaced so that they display as the actual characters. This mitigates
|
||||||
|
injection attacks, meaning untrusted user input can safely be displayed
|
||||||
|
on a page.
|
||||||
|
|
||||||
|
|
||||||
|
Installing
|
||||||
|
----------
|
||||||
|
|
||||||
|
Install and update using `pip`_:
|
||||||
|
|
||||||
|
.. code-block:: text
|
||||||
|
|
||||||
|
pip install -U MarkupSafe
|
||||||
|
|
||||||
|
.. _pip: https://pip.pypa.io/en/stable/getting-started/
|
||||||
|
|
||||||
|
|
||||||
|
Examples
|
||||||
|
--------
|
||||||
|
|
||||||
|
.. code-block:: pycon
|
||||||
|
|
||||||
|
>>> from markupsafe import Markup, escape
|
||||||
|
|
||||||
|
>>> # escape replaces special characters and wraps in Markup
|
||||||
|
>>> escape("<script>alert(document.cookie);</script>")
|
||||||
|
Markup('<script>alert(document.cookie);</script>')
|
||||||
|
|
||||||
|
>>> # wrap in Markup to mark text "safe" and prevent escaping
|
||||||
|
>>> Markup("<strong>Hello</strong>")
|
||||||
|
Markup('<strong>hello</strong>')
|
||||||
|
|
||||||
|
>>> escape(Markup("<strong>Hello</strong>"))
|
||||||
|
Markup('<strong>hello</strong>')
|
||||||
|
|
||||||
|
>>> # Markup is a str subclass
|
||||||
|
>>> # methods and operators escape their arguments
|
||||||
|
>>> template = Markup("Hello <em>{name}</em>")
|
||||||
|
>>> template.format(name='"World"')
|
||||||
|
Markup('Hello <em>"World"</em>')
|
||||||
|
|
||||||
|
|
||||||
|
Donate
|
||||||
|
------
|
||||||
|
|
||||||
|
The Pallets organization develops and supports MarkupSafe and other
|
||||||
|
popular packages. In order to grow the community of contributors and
|
||||||
|
users, and allow the maintainers to devote more time to the projects,
|
||||||
|
`please donate today`_.
|
||||||
|
|
||||||
|
.. _please donate today: https://palletsprojects.com/donate
|
||||||
|
|
||||||
|
|
||||||
|
Links
|
||||||
|
-----
|
||||||
|
|
||||||
|
- Documentation: https://markupsafe.palletsprojects.com/
|
||||||
|
- Changes: https://markupsafe.palletsprojects.com/changes/
|
||||||
|
- PyPI Releases: https://pypi.org/project/MarkupSafe/
|
||||||
|
- Source Code: https://github.com/pallets/markupsafe/
|
||||||
|
- Issue Tracker: https://github.com/pallets/markupsafe/issues/
|
||||||
|
- Chat: https://discord.gg/pallets
|
@ -0,0 +1,14 @@
|
|||||||
|
MarkupSafe-2.1.3.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||||
|
MarkupSafe-2.1.3.dist-info/LICENSE.rst,sha256=SJqOEQhQntmKN7uYPhHg9-HTHwvY-Zp5yESOf_N9B-o,1475
|
||||||
|
MarkupSafe-2.1.3.dist-info/METADATA,sha256=Wvvh4Tz-YtW24YagYdqrrrBdm9m-DjTdqJWhxlbU6-0,3003
|
||||||
|
MarkupSafe-2.1.3.dist-info/RECORD,,
|
||||||
|
MarkupSafe-2.1.3.dist-info/WHEEL,sha256=8KU227XctfdX2qUwyjQUO-ciQuZtmyPUCKmeGV6Byto,152
|
||||||
|
MarkupSafe-2.1.3.dist-info/top_level.txt,sha256=qy0Plje5IJuvsCBjejJyhDCjEAdcDLK_2agVcex8Z6U,11
|
||||||
|
markupsafe/__init__.py,sha256=xIItqrn1Bwi7FxPJO9rCVQBG0Evewue1Tl4BV0l9xEs,10338
|
||||||
|
markupsafe/__pycache__/__init__.cpython-311.pyc,,
|
||||||
|
markupsafe/__pycache__/_native.cpython-311.pyc,,
|
||||||
|
markupsafe/_native.py,sha256=GR86Qvo_GcgKmKreA1WmYN9ud17OFwkww8E-fiW-57s,1713
|
||||||
|
markupsafe/_speedups.c,sha256=X2XvQVtIdcK4Usz70BvkzoOfjTCmQlDkkjYSn-swE0g,7083
|
||||||
|
markupsafe/_speedups.cpython-311-x86_64-linux-gnu.so,sha256=7e82QrIqSWEZfAkAJBQHPuVy7ci8nD07GQHDlGXn1hU,53656
|
||||||
|
markupsafe/_speedups.pyi,sha256=vfMCsOgbAXRNLUXkyuyonG8uEWKYU4PDqNuMaDELAYw,229
|
||||||
|
markupsafe/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@ -0,0 +1,6 @@
|
|||||||
|
Wheel-Version: 1.0
|
||||||
|
Generator: bdist_wheel (0.40.0)
|
||||||
|
Root-Is-Purelib: false
|
||||||
|
Tag: cp311-cp311-manylinux_2_17_x86_64
|
||||||
|
Tag: cp311-cp311-manylinux2014_x86_64
|
||||||
|
|
@ -0,0 +1 @@
|
|||||||
|
markupsafe
|
@ -0,0 +1,270 @@
|
|||||||
|
Pygments is written and maintained by Georg Brandl <georg@python.org>.
|
||||||
|
|
||||||
|
Major developers are Tim Hatch <tim@timhatch.com> and Armin Ronacher
|
||||||
|
<armin.ronacher@active-4.com>.
|
||||||
|
|
||||||
|
Other contributors, listed alphabetically, are:
|
||||||
|
|
||||||
|
* Sam Aaron -- Ioke lexer
|
||||||
|
* Jean Abou Samra -- LilyPond lexer
|
||||||
|
* João Abecasis -- JSLT lexer
|
||||||
|
* Ali Afshar -- image formatter
|
||||||
|
* Thomas Aglassinger -- Easytrieve, JCL, Rexx, Transact-SQL and VBScript
|
||||||
|
lexers
|
||||||
|
* Maxence Ahlouche -- PostgreSQL Explain lexer
|
||||||
|
* Muthiah Annamalai -- Ezhil lexer
|
||||||
|
* Kumar Appaiah -- Debian control lexer
|
||||||
|
* Andreas Amann -- AppleScript lexer
|
||||||
|
* Timothy Armstrong -- Dart lexer fixes
|
||||||
|
* Jeffrey Arnold -- R/S, Rd, BUGS, Jags, and Stan lexers
|
||||||
|
* Eiríkr Åsheim -- Uxntal lexer
|
||||||
|
* Jeremy Ashkenas -- CoffeeScript lexer
|
||||||
|
* José Joaquín Atria -- Praat lexer
|
||||||
|
* Stefan Matthias Aust -- Smalltalk lexer
|
||||||
|
* Lucas Bajolet -- Nit lexer
|
||||||
|
* Ben Bangert -- Mako lexers
|
||||||
|
* Max Battcher -- Darcs patch lexer
|
||||||
|
* Thomas Baruchel -- APL lexer
|
||||||
|
* Tim Baumann -- (Literate) Agda lexer
|
||||||
|
* Paul Baumgart, 280 North, Inc. -- Objective-J lexer
|
||||||
|
* Michael Bayer -- Myghty lexers
|
||||||
|
* Thomas Beale -- Archetype lexers
|
||||||
|
* John Benediktsson -- Factor lexer
|
||||||
|
* Trevor Bergeron -- mIRC formatter
|
||||||
|
* Vincent Bernat -- LessCSS lexer
|
||||||
|
* Christopher Bertels -- Fancy lexer
|
||||||
|
* Sébastien Bigaret -- QVT Operational lexer
|
||||||
|
* Jarrett Billingsley -- MiniD lexer
|
||||||
|
* Adam Blinkinsop -- Haskell, Redcode lexers
|
||||||
|
* Stéphane Blondon -- Procfile, SGF and Sieve lexers
|
||||||
|
* Frits van Bommel -- assembler lexers
|
||||||
|
* Pierre Bourdon -- bugfixes
|
||||||
|
* Martijn Braam -- Kernel log lexer, BARE lexer
|
||||||
|
* Matthias Bussonnier -- ANSI style handling for terminal-256 formatter
|
||||||
|
* chebee7i -- Python traceback lexer improvements
|
||||||
|
* Hiram Chirino -- Scaml and Jade lexers
|
||||||
|
* Mauricio Caceres -- SAS and Stata lexers.
|
||||||
|
* Ian Cooper -- VGL lexer
|
||||||
|
* David Corbett -- Inform, Jasmin, JSGF, Snowball, and TADS 3 lexers
|
||||||
|
* Leaf Corcoran -- MoonScript lexer
|
||||||
|
* Christopher Creutzig -- MuPAD lexer
|
||||||
|
* Daniël W. Crompton -- Pike lexer
|
||||||
|
* Pete Curry -- bugfixes
|
||||||
|
* Bryan Davis -- EBNF lexer
|
||||||
|
* Bruno Deferrari -- Shen lexer
|
||||||
|
* Walter Dörwald -- UL4 lexer
|
||||||
|
* Luke Drummond -- Meson lexer
|
||||||
|
* Giedrius Dubinskas -- HTML formatter improvements
|
||||||
|
* Owen Durni -- Haxe lexer
|
||||||
|
* Alexander Dutton, Oxford University Computing Services -- SPARQL lexer
|
||||||
|
* James Edwards -- Terraform lexer
|
||||||
|
* Nick Efford -- Python 3 lexer
|
||||||
|
* Sven Efftinge -- Xtend lexer
|
||||||
|
* Artem Egorkine -- terminal256 formatter
|
||||||
|
* Matthew Fernandez -- CAmkES lexer
|
||||||
|
* Paweł Fertyk -- GDScript lexer, HTML formatter improvements
|
||||||
|
* Michael Ficarra -- CPSA lexer
|
||||||
|
* James H. Fisher -- PostScript lexer
|
||||||
|
* William S. Fulton -- SWIG lexer
|
||||||
|
* Carlos Galdino -- Elixir and Elixir Console lexers
|
||||||
|
* Michael Galloy -- IDL lexer
|
||||||
|
* Naveen Garg -- Autohotkey lexer
|
||||||
|
* Simon Garnotel -- FreeFem++ lexer
|
||||||
|
* Laurent Gautier -- R/S lexer
|
||||||
|
* Alex Gaynor -- PyPy log lexer
|
||||||
|
* Richard Gerkin -- Igor Pro lexer
|
||||||
|
* Alain Gilbert -- TypeScript lexer
|
||||||
|
* Alex Gilding -- BlitzBasic lexer
|
||||||
|
* GitHub, Inc -- DASM16, Augeas, TOML, and Slash lexers
|
||||||
|
* Bertrand Goetzmann -- Groovy lexer
|
||||||
|
* Krzysiek Goj -- Scala lexer
|
||||||
|
* Rostyslav Golda -- FloScript lexer
|
||||||
|
* Andrey Golovizin -- BibTeX lexers
|
||||||
|
* Matt Good -- Genshi, Cheetah lexers
|
||||||
|
* Michał Górny -- vim modeline support
|
||||||
|
* Alex Gosse -- TrafficScript lexer
|
||||||
|
* Patrick Gotthardt -- PHP namespaces support
|
||||||
|
* Hubert Gruniaux -- C and C++ lexer improvements
|
||||||
|
* Olivier Guibe -- Asymptote lexer
|
||||||
|
* Phil Hagelberg -- Fennel lexer
|
||||||
|
* Florian Hahn -- Boogie lexer
|
||||||
|
* Martin Harriman -- SNOBOL lexer
|
||||||
|
* Matthew Harrison -- SVG formatter
|
||||||
|
* Steven Hazel -- Tcl lexer
|
||||||
|
* Dan Michael Heggø -- Turtle lexer
|
||||||
|
* Aslak Hellesøy -- Gherkin lexer
|
||||||
|
* Greg Hendershott -- Racket lexer
|
||||||
|
* Justin Hendrick -- ParaSail lexer
|
||||||
|
* Jordi Gutiérrez Hermoso -- Octave lexer
|
||||||
|
* David Hess, Fish Software, Inc. -- Objective-J lexer
|
||||||
|
* Ken Hilton -- Typographic Number Theory and Arrow lexers
|
||||||
|
* Varun Hiremath -- Debian control lexer
|
||||||
|
* Rob Hoelz -- Perl 6 lexer
|
||||||
|
* Doug Hogan -- Mscgen lexer
|
||||||
|
* Ben Hollis -- Mason lexer
|
||||||
|
* Max Horn -- GAP lexer
|
||||||
|
* Fred Hornsey -- OMG IDL Lexer
|
||||||
|
* Alastair Houghton -- Lexer inheritance facility
|
||||||
|
* Tim Howard -- BlitzMax lexer
|
||||||
|
* Dustin Howett -- Logos lexer
|
||||||
|
* Ivan Inozemtsev -- Fantom lexer
|
||||||
|
* Hiroaki Itoh -- Shell console rewrite, Lexers for PowerShell session,
|
||||||
|
MSDOS session, BC, WDiff
|
||||||
|
* Brian R. Jackson -- Tea lexer
|
||||||
|
* Christian Jann -- ShellSession lexer
|
||||||
|
* Dennis Kaarsemaker -- sources.list lexer
|
||||||
|
* Dmitri Kabak -- Inferno Limbo lexer
|
||||||
|
* Igor Kalnitsky -- vhdl lexer
|
||||||
|
* Colin Kennedy - USD lexer
|
||||||
|
* Alexander Kit -- MaskJS lexer
|
||||||
|
* Pekka Klärck -- Robot Framework lexer
|
||||||
|
* Gerwin Klein -- Isabelle lexer
|
||||||
|
* Eric Knibbe -- Lasso lexer
|
||||||
|
* Stepan Koltsov -- Clay lexer
|
||||||
|
* Oliver Kopp - Friendly grayscale style
|
||||||
|
* Adam Koprowski -- Opa lexer
|
||||||
|
* Benjamin Kowarsch -- Modula-2 lexer
|
||||||
|
* Domen Kožar -- Nix lexer
|
||||||
|
* Oleh Krekel -- Emacs Lisp lexer
|
||||||
|
* Alexander Kriegisch -- Kconfig and AspectJ lexers
|
||||||
|
* Marek Kubica -- Scheme lexer
|
||||||
|
* Jochen Kupperschmidt -- Markdown processor
|
||||||
|
* Gerd Kurzbach -- Modelica lexer
|
||||||
|
* Jon Larimer, Google Inc. -- Smali lexer
|
||||||
|
* Olov Lassus -- Dart lexer
|
||||||
|
* Matt Layman -- TAP lexer
|
||||||
|
* Kristian Lyngstøl -- Varnish lexers
|
||||||
|
* Sylvestre Ledru -- Scilab lexer
|
||||||
|
* Chee Sing Lee -- Flatline lexer
|
||||||
|
* Mark Lee -- Vala lexer
|
||||||
|
* Pete Lomax -- Phix lexer
|
||||||
|
* Valentin Lorentz -- C++ lexer improvements
|
||||||
|
* Ben Mabey -- Gherkin lexer
|
||||||
|
* Angus MacArthur -- QML lexer
|
||||||
|
* Louis Mandel -- X10 lexer
|
||||||
|
* Louis Marchand -- Eiffel lexer
|
||||||
|
* Simone Margaritelli -- Hybris lexer
|
||||||
|
* Tim Martin - World of Warcraft TOC lexer
|
||||||
|
* Kirk McDonald -- D lexer
|
||||||
|
* Gordon McGregor -- SystemVerilog lexer
|
||||||
|
* Stephen McKamey -- Duel/JBST lexer
|
||||||
|
* Brian McKenna -- F# lexer
|
||||||
|
* Charles McLaughlin -- Puppet lexer
|
||||||
|
* Kurt McKee -- Tera Term macro lexer, PostgreSQL updates, MySQL overhaul, JSON lexer
|
||||||
|
* Joe Eli McIlvain -- Savi lexer
|
||||||
|
* Lukas Meuser -- BBCode formatter, Lua lexer
|
||||||
|
* Cat Miller -- Pig lexer
|
||||||
|
* Paul Miller -- LiveScript lexer
|
||||||
|
* Hong Minhee -- HTTP lexer
|
||||||
|
* Michael Mior -- Awk lexer
|
||||||
|
* Bruce Mitchener -- Dylan lexer rewrite
|
||||||
|
* Reuben Morais -- SourcePawn lexer
|
||||||
|
* Jon Morton -- Rust lexer
|
||||||
|
* Paulo Moura -- Logtalk lexer
|
||||||
|
* Mher Movsisyan -- DTD lexer
|
||||||
|
* Dejan Muhamedagic -- Crmsh lexer
|
||||||
|
* Adrien Nayrat -- PostgreSQL Explain lexer
|
||||||
|
* Ana Nelson -- Ragel, ANTLR, R console lexers
|
||||||
|
* David Neto, Google LLC -- WebGPU Shading Language lexer
|
||||||
|
* Kurt Neufeld -- Markdown lexer
|
||||||
|
* Nam T. Nguyen -- Monokai style
|
||||||
|
* Jesper Noehr -- HTML formatter "anchorlinenos"
|
||||||
|
* Mike Nolta -- Julia lexer
|
||||||
|
* Avery Nortonsmith -- Pointless lexer
|
||||||
|
* Jonas Obrist -- BBCode lexer
|
||||||
|
* Edward O'Callaghan -- Cryptol lexer
|
||||||
|
* David Oliva -- Rebol lexer
|
||||||
|
* Pat Pannuto -- nesC lexer
|
||||||
|
* Jon Parise -- Protocol buffers and Thrift lexers
|
||||||
|
* Benjamin Peterson -- Test suite refactoring
|
||||||
|
* Ronny Pfannschmidt -- BBCode lexer
|
||||||
|
* Dominik Picheta -- Nimrod lexer
|
||||||
|
* Andrew Pinkham -- RTF Formatter Refactoring
|
||||||
|
* Clément Prévost -- UrbiScript lexer
|
||||||
|
* Tanner Prynn -- cmdline -x option and loading lexers from files
|
||||||
|
* Oleh Prypin -- Crystal lexer (based on Ruby lexer)
|
||||||
|
* Nick Psaris -- K and Q lexers
|
||||||
|
* Xidorn Quan -- Web IDL lexer
|
||||||
|
* Elias Rabel -- Fortran fixed form lexer
|
||||||
|
* raichoo -- Idris lexer
|
||||||
|
* Daniel Ramirez -- GDScript lexer
|
||||||
|
* Kashif Rasul -- CUDA lexer
|
||||||
|
* Nathan Reed -- HLSL lexer
|
||||||
|
* Justin Reidy -- MXML lexer
|
||||||
|
* Norman Richards -- JSON lexer
|
||||||
|
* Corey Richardson -- Rust lexer updates
|
||||||
|
* Fabrizio Riguzzi -- cplint leder
|
||||||
|
* Lubomir Rintel -- GoodData MAQL and CL lexers
|
||||||
|
* Andre Roberge -- Tango style
|
||||||
|
* Georg Rollinger -- HSAIL lexer
|
||||||
|
* Michiel Roos -- TypoScript lexer
|
||||||
|
* Konrad Rudolph -- LaTeX formatter enhancements
|
||||||
|
* Mario Ruggier -- Evoque lexers
|
||||||
|
* Miikka Salminen -- Lovelace style, Hexdump lexer, lexer enhancements
|
||||||
|
* Stou Sandalski -- NumPy, FORTRAN, tcsh and XSLT lexers
|
||||||
|
* Matteo Sasso -- Common Lisp lexer
|
||||||
|
* Joe Schafer -- Ada lexer
|
||||||
|
* Max Schillinger -- TiddlyWiki5 lexer
|
||||||
|
* Andrew Schmidt -- X++ lexer
|
||||||
|
* Ken Schutte -- Matlab lexers
|
||||||
|
* René Schwaiger -- Rainbow Dash style
|
||||||
|
* Sebastian Schweizer -- Whiley lexer
|
||||||
|
* Tassilo Schweyer -- Io, MOOCode lexers
|
||||||
|
* Pablo Seminario -- PromQL lexer
|
||||||
|
* Ted Shaw -- AutoIt lexer
|
||||||
|
* Joerg Sieker -- ABAP lexer
|
||||||
|
* Robert Simmons -- Standard ML lexer
|
||||||
|
* Kirill Simonov -- YAML lexer
|
||||||
|
* Corbin Simpson -- Monte lexer
|
||||||
|
* Ville Skyttä -- ASCII armored lexer
|
||||||
|
* Alexander Smishlajev -- Visual FoxPro lexer
|
||||||
|
* Steve Spigarelli -- XQuery lexer
|
||||||
|
* Jerome St-Louis -- eC lexer
|
||||||
|
* Camil Staps -- Clean and NuSMV lexers; Solarized style
|
||||||
|
* James Strachan -- Kotlin lexer
|
||||||
|
* Tom Stuart -- Treetop lexer
|
||||||
|
* Colin Sullivan -- SuperCollider lexer
|
||||||
|
* Ben Swift -- Extempore lexer
|
||||||
|
* tatt61880 -- Kuin lexer
|
||||||
|
* Edoardo Tenani -- Arduino lexer
|
||||||
|
* Tiberius Teng -- default style overhaul
|
||||||
|
* Jeremy Thurgood -- Erlang, Squid config lexers
|
||||||
|
* Brian Tiffin -- OpenCOBOL lexer
|
||||||
|
* Bob Tolbert -- Hy lexer
|
||||||
|
* Doug Torrance -- Macaulay2 lexer
|
||||||
|
* Matthias Trute -- Forth lexer
|
||||||
|
* Tuoa Spi T4 -- Bdd lexer
|
||||||
|
* Erick Tryzelaar -- Felix lexer
|
||||||
|
* Alexander Udalov -- Kotlin lexer improvements
|
||||||
|
* Thomas Van Doren -- Chapel lexer
|
||||||
|
* Daniele Varrazzo -- PostgreSQL lexers
|
||||||
|
* Abe Voelker -- OpenEdge ABL lexer
|
||||||
|
* Pepijn de Vos -- HTML formatter CTags support
|
||||||
|
* Matthias Vallentin -- Bro lexer
|
||||||
|
* Benoît Vinot -- AMPL lexer
|
||||||
|
* Linh Vu Hong -- RSL lexer
|
||||||
|
* Immanuel Washington -- Smithy lexer
|
||||||
|
* Nathan Weizenbaum -- Haml and Sass lexers
|
||||||
|
* Nathan Whetsell -- Csound lexers
|
||||||
|
* Dietmar Winkler -- Modelica lexer
|
||||||
|
* Nils Winter -- Smalltalk lexer
|
||||||
|
* Davy Wybiral -- Clojure lexer
|
||||||
|
* Whitney Young -- ObjectiveC lexer
|
||||||
|
* Diego Zamboni -- CFengine3 lexer
|
||||||
|
* Enrique Zamudio -- Ceylon lexer
|
||||||
|
* Alex Zimin -- Nemerle lexer
|
||||||
|
* Rob Zimmerman -- Kal lexer
|
||||||
|
* Vincent Zurczak -- Roboconf lexer
|
||||||
|
* Hubert Gruniaux -- C and C++ lexer improvements
|
||||||
|
* Thomas Symalla -- AMDGPU Lexer
|
||||||
|
* 15b3 -- Image Formatter improvements
|
||||||
|
* Fabian Neumann -- CDDL lexer
|
||||||
|
* Thomas Duboucher -- CDDL lexer
|
||||||
|
* Philipp Imhof -- Pango Markup formatter
|
||||||
|
* Thomas Voss -- Sed lexer
|
||||||
|
* Martin Fischer -- WCAG contrast testing
|
||||||
|
* Marc Auberer -- Spice lexer
|
||||||
|
* Amr Hesham -- Carbon lexer
|
||||||
|
* diskdance -- Wikitext lexer
|
||||||
|
|
||||||
|
Many thanks for all contributions!
|
@ -0,0 +1 @@
|
|||||||
|
pip
|
@ -0,0 +1,25 @@
|
|||||||
|
Copyright (c) 2006-2022 by the respective authors (see AUTHORS file).
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are
|
||||||
|
met:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
* Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
@ -0,0 +1,56 @@
|
|||||||
|
Metadata-Version: 2.1
|
||||||
|
Name: Pygments
|
||||||
|
Version: 2.15.1
|
||||||
|
Summary: Pygments is a syntax highlighting package written in Python.
|
||||||
|
Author-email: Georg Brandl <georg@python.org>
|
||||||
|
Maintainer: Matthäus G. Chajdas
|
||||||
|
Maintainer-email: Georg Brandl <georg@python.org>, Jean Abou Samra <jean@abou-samra.fr>
|
||||||
|
License: BSD-2-Clause
|
||||||
|
Project-URL: Homepage, https://pygments.org
|
||||||
|
Project-URL: Documentation, https://pygments.org/docs
|
||||||
|
Project-URL: Source, https://github.com/pygments/pygments
|
||||||
|
Project-URL: Bug Tracker, https://github.com/pygments/pygments/issues
|
||||||
|
Project-URL: Changelog, https://github.com/pygments/pygments/blob/master/CHANGES
|
||||||
|
Keywords: syntax highlighting
|
||||||
|
Classifier: Development Status :: 6 - Mature
|
||||||
|
Classifier: Intended Audience :: Developers
|
||||||
|
Classifier: Intended Audience :: End Users/Desktop
|
||||||
|
Classifier: Intended Audience :: System Administrators
|
||||||
|
Classifier: License :: OSI Approved :: BSD License
|
||||||
|
Classifier: Operating System :: OS Independent
|
||||||
|
Classifier: Programming Language :: Python
|
||||||
|
Classifier: Programming Language :: Python :: 3
|
||||||
|
Classifier: Programming Language :: Python :: 3.7
|
||||||
|
Classifier: Programming Language :: Python :: 3.8
|
||||||
|
Classifier: Programming Language :: Python :: 3.9
|
||||||
|
Classifier: Programming Language :: Python :: 3.10
|
||||||
|
Classifier: Programming Language :: Python :: 3.11
|
||||||
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
||||||
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
||||||
|
Classifier: Topic :: Text Processing :: Filters
|
||||||
|
Classifier: Topic :: Utilities
|
||||||
|
Requires-Python: >=3.7
|
||||||
|
Description-Content-Type: text/x-rst
|
||||||
|
License-File: LICENSE
|
||||||
|
License-File: AUTHORS
|
||||||
|
Provides-Extra: plugins
|
||||||
|
Requires-Dist: importlib-metadata ; (python_version < "3.8") and extra == 'plugins'
|
||||||
|
|
||||||
|
Pygments
|
||||||
|
~~~~~~~~
|
||||||
|
|
||||||
|
Pygments is a syntax highlighting package written in Python.
|
||||||
|
|
||||||
|
It is a generic syntax highlighter suitable for use in code hosting, forums,
|
||||||
|
wikis or other applications that need to prettify source code. Highlights
|
||||||
|
are:
|
||||||
|
|
||||||
|
* a wide range of over 500 languages and other text formats is supported
|
||||||
|
* special attention is paid to details, increasing quality by a fair amount
|
||||||
|
* support for new languages and formats are added easily
|
||||||
|
* a number of output formats, presently HTML, LaTeX, RTF, SVG, all image
|
||||||
|
formats that PIL supports and ANSI sequences
|
||||||
|
* it is usable as a command-line tool and as a library
|
||||||
|
|
||||||
|
Copyright 2006-2023 by the Pygments team, see ``AUTHORS``.
|
||||||
|
Licensed under the BSD, see ``LICENSE`` for details.
|
@ -0,0 +1,613 @@
|
|||||||
|
../../../bin/pygmentize,sha256=q7dlMGdlY7h4kr-eSjAhiq1mBdH-yYZFN2n0MEIePbc,240
|
||||||
|
Pygments-2.15.1.dist-info/AUTHORS,sha256=TdJddtUy7LNm2wA_GLgRetvaopiRjjIIA5WOHzsI1WE,9974
|
||||||
|
Pygments-2.15.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||||
|
Pygments-2.15.1.dist-info/LICENSE,sha256=qdZvHVJt8C4p3Oc0NtNOVuhjL0bCdbvf_HBWnogvnxc,1331
|
||||||
|
Pygments-2.15.1.dist-info/METADATA,sha256=0vGsTBqE3q3Pi2-2JjCrSimfsh4ejRVGbddETm8IXv4,2451
|
||||||
|
Pygments-2.15.1.dist-info/RECORD,,
|
||||||
|
Pygments-2.15.1.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
|
||||||
|
Pygments-2.15.1.dist-info/entry_points.txt,sha256=uUXw-XhMKBEX4pWcCtpuTTnPhL3h7OEE2jWi51VQsa8,53
|
||||||
|
Pygments-2.15.1.dist-info/top_level.txt,sha256=RjKKqrVIStoebLHdbs0yZ2Lk4rS7cxGguXsLCYvZ2Ak,9
|
||||||
|
pygments/__init__.py,sha256=KXCoLMvtF-oa7UOyFz4JxCrZe0f_7BGHMs7xzz2LFP0,2959
|
||||||
|
pygments/__main__.py,sha256=xVzk7wG94kskOfLT6ORXWRPRZZ0IAavOeRCtGXn2yEM,348
|
||||||
|
pygments/__pycache__/__init__.cpython-311.pyc,,
|
||||||
|
pygments/__pycache__/__main__.cpython-311.pyc,,
|
||||||
|
pygments/__pycache__/cmdline.cpython-311.pyc,,
|
||||||
|
pygments/__pycache__/console.cpython-311.pyc,,
|
||||||
|
pygments/__pycache__/filter.cpython-311.pyc,,
|
||||||
|
pygments/__pycache__/formatter.cpython-311.pyc,,
|
||||||
|
pygments/__pycache__/lexer.cpython-311.pyc,,
|
||||||
|
pygments/__pycache__/modeline.cpython-311.pyc,,
|
||||||
|
pygments/__pycache__/plugin.cpython-311.pyc,,
|
||||||
|
pygments/__pycache__/regexopt.cpython-311.pyc,,
|
||||||
|
pygments/__pycache__/scanner.cpython-311.pyc,,
|
||||||
|
pygments/__pycache__/sphinxext.cpython-311.pyc,,
|
||||||
|
pygments/__pycache__/style.cpython-311.pyc,,
|
||||||
|
pygments/__pycache__/token.cpython-311.pyc,,
|
||||||
|
pygments/__pycache__/unistring.cpython-311.pyc,,
|
||||||
|
pygments/__pycache__/util.cpython-311.pyc,,
|
||||||
|
pygments/cmdline.py,sha256=5BDrKb_cOcvzp0Ps8rr4rFIO8kYb15JDlEiRKpoTwWE,23530
|
||||||
|
pygments/console.py,sha256=2wZ5W-U6TudJD1_NLUwjclMpbomFM91lNv11_60sfGY,1697
|
||||||
|
pygments/filter.py,sha256=j5aLM9a9wSx6eH1oy473oSkJ02hGWNptBlVo4s1g_30,1938
|
||||||
|
pygments/filters/__init__.py,sha256=q8r8GfK3dO021TSHJdpwNwh6RHKbAL7ceCzohavWaN0,40338
|
||||||
|
pygments/filters/__pycache__/__init__.cpython-311.pyc,,
|
||||||
|
pygments/formatter.py,sha256=Yz01yT1NSQXTF8GvsLxJSmez7ErTVOsxm3M6GVPuH-w,4154
|
||||||
|
pygments/formatters/__init__.py,sha256=iRJiIk5375wDS08XLtJgTYEHzLd1_uvDGG0C85zQsfs,5388
|
||||||
|
pygments/formatters/__pycache__/__init__.cpython-311.pyc,,
|
||||||
|
pygments/formatters/__pycache__/_mapping.cpython-311.pyc,,
|
||||||
|
pygments/formatters/__pycache__/bbcode.cpython-311.pyc,,
|
||||||
|
pygments/formatters/__pycache__/groff.cpython-311.pyc,,
|
||||||
|
pygments/formatters/__pycache__/html.cpython-311.pyc,,
|
||||||
|
pygments/formatters/__pycache__/img.cpython-311.pyc,,
|
||||||
|
pygments/formatters/__pycache__/irc.cpython-311.pyc,,
|
||||||
|
pygments/formatters/__pycache__/latex.cpython-311.pyc,,
|
||||||
|
pygments/formatters/__pycache__/other.cpython-311.pyc,,
|
||||||
|
pygments/formatters/__pycache__/pangomarkup.cpython-311.pyc,,
|
||||||
|
pygments/formatters/__pycache__/rtf.cpython-311.pyc,,
|
||||||
|
pygments/formatters/__pycache__/svg.cpython-311.pyc,,
|
||||||
|
pygments/formatters/__pycache__/terminal.cpython-311.pyc,,
|
||||||
|
pygments/formatters/__pycache__/terminal256.cpython-311.pyc,,
|
||||||
|
pygments/formatters/_mapping.py,sha256=1Cw37FuQlNacnxRKmtlPX4nyLoX9_ttko5ZwscNUZZ4,4176
|
||||||
|
pygments/formatters/bbcode.py,sha256=7zcNcnoNj-dCyJlrHnmtq0V2o8ZGD14N5anFV4FQ5PE,3290
|
||||||
|
pygments/formatters/groff.py,sha256=va2xlSCN-e_i0c_Dz0dg3HV9Ajt9G45PXaCi7CEsLdg,5070
|
||||||
|
pygments/formatters/html.py,sha256=C0BdFXcODAHHHHVRiE5G6G3dUG_BHk938w90w-og1ZI,35574
|
||||||
|
pygments/formatters/img.py,sha256=kzcmeDavdndLUV9TDy-LLdr3OwlhUfep1dAT7H-nQoY,21914
|
||||||
|
pygments/formatters/irc.py,sha256=Jkze75ztayIkhNijfnFIsqOUR-Yz5fwEQM_oeWdOnRU,4945
|
||||||
|
pygments/formatters/latex.py,sha256=48gMb8ziYgyQVJ4Ofx8x3Ka2l0RBomgYgn5zjeQK_vM,19303
|
||||||
|
pygments/formatters/other.py,sha256=RzJhlXeYHyLxiC5vESy41WUK0FOqJPxvMiR6Von0z5Q,5025
|
||||||
|
pygments/formatters/pangomarkup.py,sha256=0i4H7NLsxcxzFCJU5ONDJmhlLvsSLCnaFn-FXA5SMQk,2200
|
||||||
|
pygments/formatters/rtf.py,sha256=8xghaGMBBXq2XNj-ZWNzYAeX_GqIDMqUBiJLDCulzNI,4990
|
||||||
|
pygments/formatters/svg.py,sha256=VxjE-iqarQXJEFRissuLbsooXUCVXWgObQ7c4ub-5zg,7299
|
||||||
|
pygments/formatters/terminal.py,sha256=P_dr7GLyRTIKg8LEceCOr5B5eGzGQBELA3JQOMvZ8VA,4626
|
||||||
|
pygments/formatters/terminal256.py,sha256=_xYtNUUTAie5Bh7S98nrt7XIlLUURzDykosP7tT7044,11717
|
||||||
|
pygments/lexer.py,sha256=MXnx0PyK98ubxsr6GQQ7D3kJey3CQJeqcJlr6vpmpjA,34541
|
||||||
|
pygments/lexers/__init__.py,sha256=zIVAQGUmmzrjrNGeOEn0j178RNUqIb6bN8dnqIihfSA,12082
|
||||||
|
pygments/lexers/__pycache__/__init__.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/_ada_builtins.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/_asy_builtins.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/_cl_builtins.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/_cocoa_builtins.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/_csound_builtins.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/_css_builtins.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/_julia_builtins.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/_lasso_builtins.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/_lilypond_builtins.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/_lua_builtins.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/_mapping.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/_mql_builtins.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/_mysql_builtins.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/_openedge_builtins.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/_php_builtins.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/_postgres_builtins.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/_qlik_builtins.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/_scheme_builtins.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/_scilab_builtins.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/_sourcemod_builtins.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/_stan_builtins.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/_stata_builtins.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/_tsql_builtins.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/_usd_builtins.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/_vbscript_builtins.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/_vim_builtins.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/actionscript.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/ada.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/agile.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/algebra.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/ambient.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/amdgpu.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/ampl.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/apdlexer.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/apl.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/archetype.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/arrow.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/arturo.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/asc.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/asm.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/automation.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/bare.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/basic.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/bdd.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/berry.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/bibtex.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/boa.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/business.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/c_cpp.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/c_like.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/capnproto.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/carbon.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/cddl.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/chapel.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/clean.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/comal.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/compiled.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/configs.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/console.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/cplint.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/crystal.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/csound.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/css.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/d.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/dalvik.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/data.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/dax.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/devicetree.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/diff.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/dotnet.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/dsls.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/dylan.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/ecl.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/eiffel.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/elm.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/elpi.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/email.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/erlang.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/esoteric.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/ezhil.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/factor.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/fantom.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/felix.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/fift.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/floscript.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/forth.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/fortran.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/foxpro.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/freefem.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/func.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/functional.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/futhark.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/gcodelexer.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/gdscript.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/go.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/grammar_notation.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/graph.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/graphics.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/graphviz.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/gsql.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/haskell.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/haxe.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/hdl.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/hexdump.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/html.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/idl.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/igor.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/inferno.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/installers.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/int_fiction.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/iolang.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/j.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/javascript.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/jmespath.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/jslt.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/jsonnet.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/julia.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/jvm.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/kuin.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/lilypond.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/lisp.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/macaulay2.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/make.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/markup.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/math.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/matlab.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/maxima.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/meson.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/mime.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/minecraft.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/mips.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/ml.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/modeling.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/modula2.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/monte.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/mosel.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/ncl.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/nimrod.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/nit.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/nix.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/oberon.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/objective.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/ooc.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/other.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/parasail.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/parsers.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/pascal.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/pawn.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/perl.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/phix.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/php.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/pointless.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/pony.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/praat.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/procfile.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/prolog.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/promql.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/python.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/q.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/qlik.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/qvt.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/r.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/rdf.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/rebol.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/resource.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/ride.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/rita.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/rnc.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/roboconf.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/robotframework.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/ruby.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/rust.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/sas.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/savi.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/scdoc.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/scripting.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/sgf.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/shell.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/sieve.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/slash.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/smalltalk.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/smithy.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/smv.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/snobol.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/solidity.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/sophia.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/special.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/spice.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/sql.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/srcinfo.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/stata.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/supercollider.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/tal.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/tcl.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/teal.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/templates.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/teraterm.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/testing.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/text.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/textedit.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/textfmts.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/theorem.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/thingsdb.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/tlb.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/tnt.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/trafficscript.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/typoscript.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/ul4.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/unicon.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/urbi.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/usd.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/varnish.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/verification.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/web.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/webassembly.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/webidl.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/webmisc.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/wgsl.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/whiley.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/wowtoc.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/wren.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/x10.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/xorg.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/yang.cpython-311.pyc,,
|
||||||
|
pygments/lexers/__pycache__/zig.cpython-311.pyc,,
|
||||||
|
pygments/lexers/_ada_builtins.py,sha256=Z5IiSpdugeKU4H-SEczWPYG6EO0e-R7lwP7thfORooU,1543
|
||||||
|
pygments/lexers/_asy_builtins.py,sha256=qn1PmuijZ0P5Mkd1hWmH1arUt03wGWR7QNZf7ACBcCQ,27287
|
||||||
|
pygments/lexers/_cl_builtins.py,sha256=n0Y1jei9ssrZ58Ev4GMxDTspYXU58TyAhLJzBApLttE,13994
|
||||||
|
pygments/lexers/_cocoa_builtins.py,sha256=LvaPwfjM2r73yJwTMNu1SiDKzWWqzhJBjN_kivnYsyo,105182
|
||||||
|
pygments/lexers/_csound_builtins.py,sha256=IY2H0Eg8iBFdmWwecXGwDC41Glrw_bWLenQCtp6DHzg,18414
|
||||||
|
pygments/lexers/_css_builtins.py,sha256=IuSVV88A8b37-XsXGF4_6P6XF5Wv3wd3SxYOS1fOGyU,12446
|
||||||
|
pygments/lexers/_julia_builtins.py,sha256=evrvUJjAKN8bCeBooXqAeGnWRc0qBqG_W2TMRPWq7Q4,11883
|
||||||
|
pygments/lexers/_lasso_builtins.py,sha256=9Ld87CsxAB9UTV77I9W6s_bv4p-kc2grOnc8Ew7cy3s,134510
|
||||||
|
pygments/lexers/_lilypond_builtins.py,sha256=rVmINQYq3iQ9-5W_jGrwW4Q9OX_zEX37I-pn5i8Ya1c,108094
|
||||||
|
pygments/lexers/_lua_builtins.py,sha256=x8gSOJzBlwMFH9XFxwgF0-3kMn066YRQTLJyM_fl22s,8116
|
||||||
|
pygments/lexers/_mapping.py,sha256=Wf3eD6HwNtDw-5X2jI31IG9bfiUhH1SBzC0SLum_qlM,65633
|
||||||
|
pygments/lexers/_mql_builtins.py,sha256=j2K4s3Ye_tYEfJEyUKxvqR3ns_ZOLHGaiPDhkGRk40k,24713
|
||||||
|
pygments/lexers/_mysql_builtins.py,sha256=8LqPsM38R2Et1U8sg-oy09aedb-jO1DgVGmssDUw6kg,25842
|
||||||
|
pygments/lexers/_openedge_builtins.py,sha256=ZK0Vwj0PfCtg5WpOXCvI0OUnozrNbQxY_HNB_JhAXQc,49398
|
||||||
|
pygments/lexers/_php_builtins.py,sha256=ns_E12wFe4Ce3EP38B0DRhAnhHTrdh7WfhjnDWgnJJ4,107930
|
||||||
|
pygments/lexers/_postgres_builtins.py,sha256=LQbzTa5ICPqTspfBk7_4JV6bkjB5lz7uuWAUNRj6W4E,13355
|
||||||
|
pygments/lexers/_qlik_builtins.py,sha256=zc-fq_8mXsR_XVzTEXFRjGbuwdACJ3O9QrMiEGfuKxQ,12595
|
||||||
|
pygments/lexers/_scheme_builtins.py,sha256=ZdZg6-MK7Zt2qqOSBUS5D9YzULtlJIuUxvk39r-HTNc,32564
|
||||||
|
pygments/lexers/_scilab_builtins.py,sha256=ib-wZROxsKBi-csMVlGBFHpzDzkT0FPn2wZZN29_9Rw,52413
|
||||||
|
pygments/lexers/_sourcemod_builtins.py,sha256=nV2ZcNTvMY7x4oQ2niSNV1XTH9bkXbcAt2-A6ODs55k,26781
|
||||||
|
pygments/lexers/_stan_builtins.py,sha256=gl_po01tnvV_tGj31jKHqaSnybhow9ElvFjYU4vWdIs,13445
|
||||||
|
pygments/lexers/_stata_builtins.py,sha256=hIGKIkcalQetIwOoN30uflOYgYIOlG3mJ6H6f82edro,27227
|
||||||
|
pygments/lexers/_tsql_builtins.py,sha256=wDKfDkftAUjPQW1RPjAwsaLE6VZeTCyCy21z44Uz7Vc,15460
|
||||||
|
pygments/lexers/_usd_builtins.py,sha256=H7AYHzkaizd4mFrMtjvI913cX9YdK4qs9JrOlIdcl7c,1658
|
||||||
|
pygments/lexers/_vbscript_builtins.py,sha256=EhzEYIk-DBIuU0sMg_davSSL1w-o3enlT1S9uzljZfM,4225
|
||||||
|
pygments/lexers/_vim_builtins.py,sha256=BG929NCy6g3LHhpj8R_ueUWqLbuIt0kyCJhxR1Q5SJo,57066
|
||||||
|
pygments/lexers/actionscript.py,sha256=lVrwbX2OYnN-KMGd4j3y0z-bWHdNxDDcf8peFMo9x2E,11676
|
||||||
|
pygments/lexers/ada.py,sha256=3PAvDXPLpvlpLCSSVl3k1RcBPm7M2LzI3ZU1MJDPqD4,5320
|
||||||
|
pygments/lexers/agile.py,sha256=C5m07vIsCir2Amrv0QK0Ah1HbTcjBOBwMdF-x2r__6E,876
|
||||||
|
pygments/lexers/algebra.py,sha256=ns54jf39mw-oh8gFZ0mj9Z2zYK98Rq5XJfA99-EjmTE,9873
|
||||||
|
pygments/lexers/ambient.py,sha256=u333k5mScy3cUUDQEJdxMQvOEX16aqpTd1DiJeTYzqE,2606
|
||||||
|
pygments/lexers/amdgpu.py,sha256=f46YvzV1sD3eEfcdkRYIjkS1YTtHyVJT5T2awL48dlo,1670
|
||||||
|
pygments/lexers/ampl.py,sha256=lfHAA0ZG4Dv38l5wTYi6InlXXXJ65FaXLjZU0tR_sWw,4177
|
||||||
|
pygments/lexers/apdlexer.py,sha256=EbgslrWGNFYOa8a-fN-PMv4_pCv3Kbdo7TIHN_DCXAg,30766
|
||||||
|
pygments/lexers/apl.py,sha256=f4QwKpfzMiUPRXCzmcBfN99TV2YVKyNzZ09Ey0bubYc,3405
|
||||||
|
pygments/lexers/archetype.py,sha256=pps0tkPaK1VPJePJg0HyaGfTTwEpApgJ-qg9MJ9a6yE,11469
|
||||||
|
pygments/lexers/arrow.py,sha256=wnI3F9Zo9HaYImF2pgksdosy3hkztFyA5GGycbtQoIM,3565
|
||||||
|
pygments/lexers/arturo.py,sha256=wIFytTnZAkKVtHVjKK5FK2XLRie_hcv8YSs1Z2UAFlA,11417
|
||||||
|
pygments/lexers/asc.py,sha256=2UWRy1MEjFFAEJhnRrbnNLkuJPxkX01rS5csR8h1kqI,1621
|
||||||
|
pygments/lexers/asm.py,sha256=2sSPg4tLOPzUTQoTAh8pL5tWbdS_KmqQSr9BTQLVRt0,41243
|
||||||
|
pygments/lexers/automation.py,sha256=Zgal7cKSlj0SaHAXx98gHjNM1tvCVIO2UykseFquNy4,19815
|
||||||
|
pygments/lexers/bare.py,sha256=0WEBxv-FSgow1RFZzaXGFo00iwklIF5FpjJZDOOWbDo,3021
|
||||||
|
pygments/lexers/basic.py,sha256=cxZ7oKq924j8_gDolL_IDV4CSN2vXKk6S7DIw2WlTc8,27923
|
||||||
|
pygments/lexers/bdd.py,sha256=JsA-W_-oICZKrZS1i7NNYrRmDRVf3iuI1PufUdMkQhU,1652
|
||||||
|
pygments/lexers/berry.py,sha256=swc0EY-bEf0wNFUhfvdkgWmP-PXV8PGvhNagqtsUqmA,3211
|
||||||
|
pygments/lexers/bibtex.py,sha256=jzuo9lEZHPKzAAMpIeIWkNTr5I1LO-TMn1V9SdyHT1o,4723
|
||||||
|
pygments/lexers/boa.py,sha256=bi5ZlPV61Xehq8bmSdFyqt3BN1jC03pB4t5Foa4vKPw,3915
|
||||||
|
pygments/lexers/business.py,sha256=-QHRTWCdabWV8SIbKZ1oLH5NQ3-blSPES8jjIbEvD_I,28112
|
||||||
|
pygments/lexers/c_cpp.py,sha256=aXnfgewGmhXwK0-Ii6prW8qT1bJdBOMnDU_C6_d6exU,17791
|
||||||
|
pygments/lexers/c_like.py,sha256=uWObWqxC4d-ZyyzEG2yajKZgpq4iINyAcqw7LMnnxZU,29206
|
||||||
|
pygments/lexers/capnproto.py,sha256=fE3wK-3ZBzPsDaFf9EkE1dnGDRhJbcCqjyBXRm8GlD4,2175
|
||||||
|
pygments/lexers/carbon.py,sha256=HA5UMPQnDa55KCqU9dm6cuvqBuEgb9ZAPv2bCV7K1SE,3231
|
||||||
|
pygments/lexers/cddl.py,sha256=PZS6611__hY36NZj8n9Q__JMXNLSm_aMWLpC51axc-M,5182
|
||||||
|
pygments/lexers/chapel.py,sha256=1oFt0h0Rh7JnF2qw1QtT0XzkUanV-Xb9Xi9B9ZcHaIA,5157
|
||||||
|
pygments/lexers/clean.py,sha256=afJe0orU7Ux_pmmrbSNYPLrTCkY_z0MJTmhUBqPtyJU,6395
|
||||||
|
pygments/lexers/comal.py,sha256=9IwxfxVBVMn7Uj2xo-WCr7RhLRDrDe6wjTdAi5hWT2g,3156
|
||||||
|
pygments/lexers/compiled.py,sha256=xv8krgoDgd07QDXVPaa5uip1kl9tBprkGT1K5-DwiWE,1407
|
||||||
|
pygments/lexers/configs.py,sha256=PChZPzlJBbeeIPPF2soAVbH7GZ653CZMPl7lOe016U0,42338
|
||||||
|
pygments/lexers/console.py,sha256=17k4Ngrs0EsaJg90ud6dle-I1SvjoOiYJ-xuGpLesTI,4148
|
||||||
|
pygments/lexers/cplint.py,sha256=HrKuhRKjK-atw1FKT_zu4FJjlHOM5BppRzoxisXbpZM,1390
|
||||||
|
pygments/lexers/crystal.py,sha256=W7v6oZtbm-aqiM9IOqIypKkudxQICWRdoy-ZyWUdt6s,15756
|
||||||
|
pygments/lexers/csound.py,sha256=yuzpCdZuHDmr2eaNodglDrCgX1W62xtQvjitnHlXC6s,16994
|
||||||
|
pygments/lexers/css.py,sha256=lZKXESVwZRYTjjRkyB4cYpXk9CHcVxU_embzFRtPhhY,25322
|
||||||
|
pygments/lexers/d.py,sha256=f1dFv2mAXqLKSJQ59m66u1Mj9us3fDskxltlrJ8EBmM,9875
|
||||||
|
pygments/lexers/dalvik.py,sha256=0Ii9KIUWT5FkJkLKuUcHoHPhav4eEHqsWZL2_ikP1ZU,4607
|
||||||
|
pygments/lexers/data.py,sha256=86RLrfLKYxNhjE_1eTjiz0HJxY-393QyyEC37lN98bk,26940
|
||||||
|
pygments/lexers/dax.py,sha256=od3D5zfaryI5MO93E_OA-TUpekAcjXv73l6kNit57oI,8099
|
||||||
|
pygments/lexers/devicetree.py,sha256=4GKiuZC5bYwG_gIl30fZH8VV2zo4cqwdemQrQgWH7ZQ,4020
|
||||||
|
pygments/lexers/diff.py,sha256=VAyAFRFmyMH865rEJ37I3TpyrpLUoEMU95durw6HLRc,5278
|
||||||
|
pygments/lexers/dotnet.py,sha256=VjJWh7vslMNIoQdPFNUlAZI0ExuLFV6EdrywYaIjqQU,37623
|
||||||
|
pygments/lexers/dsls.py,sha256=iSiDn_HsIeiYx8PFUTai5KHzISWLbClz2hwQudFrgmg,36774
|
||||||
|
pygments/lexers/dylan.py,sha256=kTowexiIoOnu-xJ9evkuMBc_7Yr1vxzMITbsCcM_WdI,10380
|
||||||
|
pygments/lexers/ecl.py,sha256=Cezl6tWf-a8hMEEUfJqYI3EPf6sSS3kRz0GiOuFIQ4Y,6372
|
||||||
|
pygments/lexers/eiffel.py,sha256=jt_49tqubN-gLnobCJn10oWxkCW5MosbUBtm5XjnaI4,2690
|
||||||
|
pygments/lexers/elm.py,sha256=OpKdJV4nlVGBv8G8lDeeLdQPbDzaJWtn-TJmS8N9N5w,3152
|
||||||
|
pygments/lexers/elpi.py,sha256=3_dxhdKG3yO7yeK4r52XmDt6-UZ2vEuI7FZe5jTcSlg,6370
|
||||||
|
pygments/lexers/email.py,sha256=EB3YvRDEP6_B6B1wzq0vS4_zrBX52zdyXxiNI3KHgxs,4742
|
||||||
|
pygments/lexers/erlang.py,sha256=EhFx_0D9w85DCJR9FyUprFPiaDvJps3xy-Kn4whWcjs,19170
|
||||||
|
pygments/lexers/esoteric.py,sha256=V--w2W-Jyl4yB8A00f4GikVeZXe_5lWHE0RMnfuoLTY,10396
|
||||||
|
pygments/lexers/ezhil.py,sha256=xu9wMEESVWCLgNitSS0IS855TSJ3Yb2KXBrxmYqHKSo,3273
|
||||||
|
pygments/lexers/factor.py,sha256=iVSIZaT7-qAI41wP__p2XjTSyREBSyAErPLVGP4bMeU,19531
|
||||||
|
pygments/lexers/fantom.py,sha256=0DylUHKCeBMfQK4QczavL5ugyPTV0u5H0Lk0YTv6_mU,10197
|
||||||
|
pygments/lexers/felix.py,sha256=fJsd0mNaSwkjU32-103-9XDzzz2lj-ONPiW8JkZAqxM,9646
|
||||||
|
pygments/lexers/fift.py,sha256=ISH11Bvz15ZsMjTMdLDsHFx2HYgpGyDUlvi1CN8MC8Q,1621
|
||||||
|
pygments/lexers/floscript.py,sha256=UYPHl2Ygez7RfBPTU00hUMXrU10mB996vz6rFisAmTs,2668
|
||||||
|
pygments/lexers/forth.py,sha256=PzfXkhpusFIGVwrzVsqLgljlybN92OeU0_E3rHup2m0,7194
|
||||||
|
pygments/lexers/fortran.py,sha256=i7xVuZEQnYruMo4xfvGI0izozI1qJvcPO8Dr7KRU0Vg,10336
|
||||||
|
pygments/lexers/foxpro.py,sha256=XmVcWgw70vh31gri3LhfrB2YQ-RhkUkBKly0xHt8VQs,26212
|
||||||
|
pygments/lexers/freefem.py,sha256=e_YjjHZu8PzQBykLzhpY2RJHjCnLxnlmoGj-5RinP6c,26914
|
||||||
|
pygments/lexers/func.py,sha256=h6IHCdydWKpQcamC1XAGJjaGK-UDvh9iM0ZuWQK05dQ,3622
|
||||||
|
pygments/lexers/functional.py,sha256=IpvPKomRGDqGs_MZZjkX5niMGZO9s5X1Dk0HDyO9zWM,674
|
||||||
|
pygments/lexers/futhark.py,sha256=NwNYLxQ1feJwtPjG54VmSmo_ZtcTqtlzr0QQppmxWUM,3732
|
||||||
|
pygments/lexers/gcodelexer.py,sha256=H754t2DKkgJYF-mzm4uI9dqc0qE02fjlZZfXM0eg6Lc,826
|
||||||
|
pygments/lexers/gdscript.py,sha256=DFvf9eJgJic5DUHt2lrJksSu5X6eXRfrh30t5yAVSzY,7543
|
||||||
|
pygments/lexers/go.py,sha256=7SiL-LKgT6BPX44KASMgt4mne5KOusaiAfN13YxHn5g,3761
|
||||||
|
pygments/lexers/grammar_notation.py,sha256=SNQNggmjYCC0yRN2m2r_33X2pa8bw0AxLJsG1G5FjdQ,7980
|
||||||
|
pygments/lexers/graph.py,sha256=AHtLRCnQdeY5fQdMJItngN67PBVlxWn2Eq_0ua4VlJI,3861
|
||||||
|
pygments/lexers/graphics.py,sha256=AqhzeSjpQwk1Vrj_OT5jKDJMonB90Sr01mM3q90WGVg,39026
|
||||||
|
pygments/lexers/graphviz.py,sha256=_yJaR2CW--2ljvnPdNjsVOvosPoUJw0pb3Of33nWBtk,1935
|
||||||
|
pygments/lexers/gsql.py,sha256=7GDWo1Wvt5UmJhAC8HQND1kbdONBRE1YhdawBzgGrHA,3991
|
||||||
|
pygments/lexers/haskell.py,sha256=RkYEh9-amHeRS0-dU5Nyz4RL4KKJz27PsWhNpf-C7NA,32898
|
||||||
|
pygments/lexers/haxe.py,sha256=W4ILlVNk1D6USMa2Kkr00IFaoqtUIxd5cO8_xWzo23k,30976
|
||||||
|
pygments/lexers/hdl.py,sha256=xA5YnwhgaOTzvLpE1VIP8j7l5LM2FjkpssZyMe3sPtY,22520
|
||||||
|
pygments/lexers/hexdump.py,sha256=QLvXzWmo2_xqHMy55OTXUB15CokyQLMzHvmXuwMj6z8,3603
|
||||||
|
pygments/lexers/html.py,sha256=MTahzHDswG59eYeNbEwKP16pkY4DV2F2M3Rm-ZDqmWI,19879
|
||||||
|
pygments/lexers/idl.py,sha256=bhS43u_ycIVN-dxlL0rkVDW0Kunuv4nCgMiw4CrEVTk,15450
|
||||||
|
pygments/lexers/igor.py,sha256=lwYCukIE6R4Ly5WAFcjs03m5T7HNK9FpXlYjoJg33gY,30631
|
||||||
|
pygments/lexers/inferno.py,sha256=0pRpoR7W1Kp8q_9mxY43rYw_RYef3ruJ6xV1LwYbz3A,3136
|
||||||
|
pygments/lexers/installers.py,sha256=5_jhlzWYi_6LMEr8BnpbjgiScZ_G3Q7AH6fTG4WrPRc,13178
|
||||||
|
pygments/lexers/int_fiction.py,sha256=CkGFrMPiZZ6aQ607E4yfZDTcYpz1pdrbd4azyx7XVX8,57119
|
||||||
|
pygments/lexers/iolang.py,sha256=ieom-sc8xdXbHi4g5LDofvLduKZdVBSOEwXocKmQU2g,1906
|
||||||
|
pygments/lexers/j.py,sha256=Kd0Rga_1uwU_YhfXebvGuHKpOXM2SVH0_x_CqkCJVCk,4854
|
||||||
|
pygments/lexers/javascript.py,sha256=y4ve9s2jq4UaTr9PhkNERIlu2DpbP_l64N_r2JJOBV0,62859
|
||||||
|
pygments/lexers/jmespath.py,sha256=3P4_YQXh4IoohDQhoh0pquyFuUHVd88g7KYmVYg3NoM,2059
|
||||||
|
pygments/lexers/jslt.py,sha256=cvH2LIuUnkhaqhfWvkIjS7sSx2FpXSEvl3rOF47d6Y0,3701
|
||||||
|
pygments/lexers/jsonnet.py,sha256=CiJT00Tp0lBg9j_1EW-d6_poumtHoP2TmEQVDlf3cTs,5635
|
||||||
|
pygments/lexers/julia.py,sha256=F5zuRm7OSZQeV1na7lasypEDGreLAzOdfaKmH1HIxgE,11646
|
||||||
|
pygments/lexers/jvm.py,sha256=nyRvIF12oTZRmU0qDhgOQx8AsUgoZj1zMU8tDGyOP8U,72929
|
||||||
|
pygments/lexers/kuin.py,sha256=AVUDd6JAy1jClIYeQDPcV-O7xGfb7x7fojN7hb7ANHU,11406
|
||||||
|
pygments/lexers/lilypond.py,sha256=_A5P7PaITP8COXG8dy9nS7CzfdKY2UOe1XLGtucuip4,9753
|
||||||
|
pygments/lexers/lisp.py,sha256=lIeqd1varBR8dCUi3MNr60Ikxf4W9sFsF7KW6n0lrR4,144039
|
||||||
|
pygments/lexers/macaulay2.py,sha256=xc7ZUhQhfnRIoRBnWIbVw89KmZHac7qO1eQm2lSvnWA,31914
|
||||||
|
pygments/lexers/make.py,sha256=Pif0_6zvfwAYd3cm2oKMDJHdySP2T7CzHZPFnGMmboI,7618
|
||||||
|
pygments/lexers/markup.py,sha256=A_9ldnhEXDByWZL77eTq-JdyLnF_KAJ0by7jjzU70G4,58129
|
||||||
|
pygments/lexers/math.py,sha256=Wl6lU1VWevtQXymt6jdDeuz9LEMiPKl1On3Zm3QXQ8M,676
|
||||||
|
pygments/lexers/matlab.py,sha256=WplG578_mB6sHlDDfgY83SMadCcqD_sN5Jb593rSr6w,132852
|
||||||
|
pygments/lexers/maxima.py,sha256=tLSjeDIBZKHRoMludgF7oBdz1xTAHyvIEG6BshyBXyM,2716
|
||||||
|
pygments/lexers/meson.py,sha256=ij0CgbEULfqLMcY_BQ7PxmCwWOYLc9XZwtrALFSinEA,4337
|
||||||
|
pygments/lexers/mime.py,sha256=-wj3pvAQzNTC8fTZk9AV4Q-LIQhMUocet-j2kqGj5gs,7538
|
||||||
|
pygments/lexers/minecraft.py,sha256=-Tb9aNbNM8gXgq69uaCxfmyTQlJ9dYYTK9UaFbSE2CI,13846
|
||||||
|
pygments/lexers/mips.py,sha256=JBfvOPp5HTGp6b0kynkjzuJOTRAdTsJJdjPWLAtu1fo,4604
|
||||||
|
pygments/lexers/ml.py,sha256=WlIdrpHCP8Z8OB5nkDXA6NyTvxPuc0tOueobOc8V840,35324
|
||||||
|
pygments/lexers/modeling.py,sha256=3KxuIs1-lb_FN921kCCgjq84R69ATEp6K1EQyWaxp7M,13524
|
||||||
|
pygments/lexers/modula2.py,sha256=z-4QbG4Bgjd-0ONC9SadglqCW2QmIMl-60b_n35V-70,53073
|
||||||
|
pygments/lexers/monte.py,sha256=pKPKOkwxcGzJLVisA-H7xJJW9JUh2SsXyDi32mF5nSQ,6290
|
||||||
|
pygments/lexers/mosel.py,sha256=_JeaaK5Jn0r7JcuLl62u1sl6uInkrP9g4EosCf9Z-IQ,9187
|
||||||
|
pygments/lexers/ncl.py,sha256=O6CckyU8yABKmx8xmj4q6E2isWORmvNO7Xl1JX5NwVQ,63962
|
||||||
|
pygments/lexers/nimrod.py,sha256=O_8dxk9x3vlYFPYjpe8iqQcCrcZmNnBE_Ld1lzO7xVI,6416
|
||||||
|
pygments/lexers/nit.py,sha256=Ghja_AX8DIg_KA-rmvgmL76kZI-lq3pARMiebYi9Nqw,2726
|
||||||
|
pygments/lexers/nix.py,sha256=qeKFMOSHa627SlkPsbpIOfzLu2ej-JdgGkDAqt4isP4,4015
|
||||||
|
pygments/lexers/oberon.py,sha256=LgYgzGPus7w1lJLUAu2cmIRQGEgQiid34QH5Upa7Uro,4169
|
||||||
|
pygments/lexers/objective.py,sha256=VoUeZYa1aO5rU69dDpv4Ob5FOYyr3nm-eJ3m0kuti0U,22961
|
||||||
|
pygments/lexers/ooc.py,sha256=BEj7kfOimF_Qi62R-B8bmYGy_5QIE1jS20NfrnNE9Ss,2982
|
||||||
|
pygments/lexers/other.py,sha256=oXVtTELCPFxwuJxN5j_iYrt0Q9Aonq-GkotncUFPpeE,1744
|
||||||
|
pygments/lexers/parasail.py,sha256=MxO40OTg_5z_EnMyb6weQHjhtzL1WgSwfjCXc0zl82Y,2720
|
||||||
|
pygments/lexers/parsers.py,sha256=JiQT3IMsf2f0JLbiDpupZNSsHnMUH57OoAr0D_3AvbY,25904
|
||||||
|
pygments/lexers/pascal.py,sha256=EHZi_mh4V7LuGXtcbTQnrrfqDDXcGyVwDvJmN8XRcps,30880
|
||||||
|
pygments/lexers/pawn.py,sha256=fNq73VwQoXeKiRFKYIKzzOClcUb2eLPJIhymlnxKZlg,8146
|
||||||
|
pygments/lexers/perl.py,sha256=82_7saaR3qBFlSnWYyEtkir7uvXTeUZqFUhjdkdTTXs,39170
|
||||||
|
pygments/lexers/phix.py,sha256=48JEQK_0ijjipwDl1F-ik0B_CGUMsZOvXlvXzIqHVmk,23252
|
||||||
|
pygments/lexers/php.py,sha256=b4sVWZTMq0t2GMlaFmzYWJna9WuDQFIm-vdqXkb89xo,13040
|
||||||
|
pygments/lexers/pointless.py,sha256=dUATlYVUZkbggQ6PUymDKhB0UKqDo-KCf0Fp_EjWsTM,1975
|
||||||
|
pygments/lexers/pony.py,sha256=k03DAhS-_G8SZsfXZOjF5YkQaMQ28_uy68_CMaxuUC4,3244
|
||||||
|
pygments/lexers/praat.py,sha256=rTl5GSoJ58LQxRf_Ek0A1H4iCm2IVQFxEwSvbMki7tw,12677
|
||||||
|
pygments/lexers/procfile.py,sha256=naQZcdvxVUjT56R0U6_YpgNCgfmNE9Xjzx9uQesl-Cg,1156
|
||||||
|
pygments/lexers/prolog.py,sha256=d010T34HBjbf8I1PoCiU2mDPQlMLhBG8-eFbAILqy7Q,12351
|
||||||
|
pygments/lexers/promql.py,sha256=Qw0VXIJGRkw6ZiSzvtR0KFiWmPuyI9xxXgDl_l3cHmc,4715
|
||||||
|
pygments/lexers/python.py,sha256=Dxdo6Pej2cdLI-LdR7jw18NQegVp3_YQIgVNV2jbOWU,53376
|
||||||
|
pygments/lexers/q.py,sha256=Vw36x6rIp2U1b8GUtUbMlcD0MVqW3unCZEMBEt-PflQ,6932
|
||||||
|
pygments/lexers/qlik.py,sha256=gCAQCe1Tuy_cMI4n51Sb8fG50L73AgmUMEWMmZRHeJg,3665
|
||||||
|
pygments/lexers/qvt.py,sha256=IjHyopkDochlQt_fIf7Mrxw84pIg-gj4BkDHtEiKb_U,6072
|
||||||
|
pygments/lexers/r.py,sha256=xMSNpNN3Hm0W51-TEfvzPeOGtobM2nIjGVmIoVydlfU,6185
|
||||||
|
pygments/lexers/rdf.py,sha256=9aVmpa5FSE3rZwekkSRYp-qxi4Yg_SlFbX5kIPjgQdU,15790
|
||||||
|
pygments/lexers/rebol.py,sha256=TMT3JlXoWvJbZwZdLuekwgv584HEP1mfsD2g9Oqj0IU,18248
|
||||||
|
pygments/lexers/resource.py,sha256=KxxQJi9NPmghpa1mekxUFBd8eaiSB9pV_F4Eds4kK0k,2902
|
||||||
|
pygments/lexers/ride.py,sha256=0mT89oluoz5lUT8ar6uPiSwTIBwyMc6oHYnrM5QY7Vo,5056
|
||||||
|
pygments/lexers/rita.py,sha256=gPbMhlCyS_ekzXIKboXGEmtGZlSSUx0k6qcuWEHuM6s,1128
|
||||||
|
pygments/lexers/rnc.py,sha256=SjXKJWNifTTWQC9NlcWNmdhkln0REEpEvaY6nVy6n4w,1973
|
||||||
|
pygments/lexers/roboconf.py,sha256=HY0dSPJxg7knQ-cM6YotX8EoVjuQi-LeKYKeWpQyF94,1962
|
||||||
|
pygments/lexers/robotframework.py,sha256=MJ4cnUDZWDrXCpYi-kJLqe1HpzJ24DMtNswDeuSnVCc,18449
|
||||||
|
pygments/lexers/ruby.py,sha256=74k_3VNHUiJGVbqdAI9wALjir3CjpjhJiGM1gPir8iU,22775
|
||||||
|
pygments/lexers/rust.py,sha256=Oq5bFgf_hcOLxiBLhzPArUFXgg3Ude_xpeKPC3g-HDI,8216
|
||||||
|
pygments/lexers/sas.py,sha256=u0vkPLehX7UERsKIkooC4IFJdTf44L2_Qqdpx1De7wk,9400
|
||||||
|
pygments/lexers/savi.py,sha256=3A563B-Wzp5AGZG0ruSQiPbe-c3uYGwCPUmnPJSEKOk,4645
|
||||||
|
pygments/lexers/scdoc.py,sha256=cOeE0NUl7_PK9U6UwPMpoSfeFgyG5qIgJyw8oM7Qa-g,2239
|
||||||
|
pygments/lexers/scripting.py,sha256=EkXKzWLg-jpsV8rep2YW6fDsCDz-d3fY1qv1QVE7MI8,70014
|
||||||
|
pygments/lexers/sgf.py,sha256=Oa3SNL31wN8rhY0gby61kbPxttvRQJTRN38CSMUiMJE,1986
|
||||||
|
pygments/lexers/shell.py,sha256=oC115DNmEzPYPdKN5jNUz-gV44c_qVb2Y5OfGO3gQ_U,36466
|
||||||
|
pygments/lexers/sieve.py,sha256=lLcCLdvj-AeudiG2xq2zTN16v0zSEXK5vcr1keg0TxA,2441
|
||||||
|
pygments/lexers/slash.py,sha256=_soPrmF1ylAw7IWfRHTMMUdifwy4oNV5FpYMBQsVSyM,8482
|
||||||
|
pygments/lexers/smalltalk.py,sha256=9UNqjCWOay3nb5BVqN2Muw-Ci63WnscW6xJcGnNWVq4,7206
|
||||||
|
pygments/lexers/smithy.py,sha256=FMvWXKvjF_hUNqI7BmZYbVRrPg5_AnnzORHPp3skcXs,2660
|
||||||
|
pygments/lexers/smv.py,sha256=VyWuTjtAhaZmu6oZG3Om_kU3NhorVz9ivzeu_mfRjwo,2773
|
||||||
|
pygments/lexers/snobol.py,sha256=Wp7ViMnddy79tWJjsgSB9kIPFh_OhaM4Y2tZjWDuvMI,2732
|
||||||
|
pygments/lexers/solidity.py,sha256=Mhmypb5WzxGdBaQpySae9NbiFJllkEezditjHajd7RA,3127
|
||||||
|
pygments/lexers/sophia.py,sha256=0gARv0DbMi7DWUc793pd4f7IKxSeOlkjk_eez8tLihs,3330
|
||||||
|
pygments/lexers/special.py,sha256=SDWqBKmWmKyvi8VNfPpW1V4g7ergad4RfUumDh6bNrk,3414
|
||||||
|
pygments/lexers/spice.py,sha256=2cE4npHPtc2tsIrI8rTbSZt4uRovx5H1YeKQZFL2d3s,2733
|
||||||
|
pygments/lexers/sql.py,sha256=j-3EXShmUyB30w7zAfO8uv0ojK8ycQhq6gc94aQOz7I,42086
|
||||||
|
pygments/lexers/srcinfo.py,sha256=x_6DsZ0mKVbI_v_G5bLBQl0WyFwj3tXmOqfHIB6zve4,1693
|
||||||
|
pygments/lexers/stata.py,sha256=-IRfLl_rpuOiKs0Vnpc6OEKuA6AXbklW6RBGc7xzGEM,6416
|
||||||
|
pygments/lexers/supercollider.py,sha256=Ua4RbmCRYPz7PcT1uyloAbfKc9kZim7nAKr55E26scY,3698
|
||||||
|
pygments/lexers/tal.py,sha256=_wLncXDRKsBDQQYkUkq4tGGNjN5oj3VFhqoRZUcBYSE,2639
|
||||||
|
pygments/lexers/tcl.py,sha256=STjHSlVeWo-Eg4tKqn_7m3_3efcmHP0WCoL1_PK5tt0,5513
|
||||||
|
pygments/lexers/teal.py,sha256=t8eOzrIiImVuUtkBlSPl9Y4olrCAZ21SQB-T67WZasQ,3523
|
||||||
|
pygments/lexers/templates.py,sha256=Eawt5MXOe1V2RB_vhp6097GQMjoKHPSEWHKifhdMazw,72610
|
||||||
|
pygments/lexers/teraterm.py,sha256=71NiLefy40L6R4B-qy-ho8Uy4kAQqsi7iLxexCDS5rU,9719
|
||||||
|
pygments/lexers/testing.py,sha256=Ue93uh36l7JKc0cUDnLmk-E221b5y7qt6xXHvaJRxt4,10767
|
||||||
|
pygments/lexers/text.py,sha256=ntF8QwsuhsqyQdxMB6H7MYP7o8A7xSxHe0UMTZLKSK8,1029
|
||||||
|
pygments/lexers/textedit.py,sha256=xVU-3K5-0KEkb0pJ4hJjrjpnz9hJaIuLQOxfk9nLWjM,7609
|
||||||
|
pygments/lexers/textfmts.py,sha256=DDijMmBwcKGrYW2qbwz8W3vD3Uq6wpX_9w7fYKYnV2M,15192
|
||||||
|
pygments/lexers/theorem.py,sha256=o3L_nfHpkio4l5RIj0UQ-CqWUEztt7Q5vh5lqDHZ-Co,20157
|
||||||
|
pygments/lexers/thingsdb.py,sha256=FwelchVBXKf3nc78UgA9SyJbHta3EMdrLnQizIxS5SE,4228
|
||||||
|
pygments/lexers/tlb.py,sha256=sQCsK3j8zqGVI_KCuursmOr4JIs3sfpqF_wPpQpyKM0,1377
|
||||||
|
pygments/lexers/tnt.py,sha256=uvdcsw5NRZjbFouXBET3-w8I7LG9hqzMXiK6s_GK2ZY,10457
|
||||||
|
pygments/lexers/trafficscript.py,sha256=GDl_7cSFit1anVH7KNH0qVts1eHcp_GGxpzIYWZabeg,1474
|
||||||
|
pygments/lexers/typoscript.py,sha256=nIAUIlbL5sVqpTEt34YdUGDNmu60a7itBYaaUMuzAIs,8207
|
||||||
|
pygments/lexers/ul4.py,sha256=XOm5dWiWtWN3RQMpA5VHvl1J1jg014SK27aJnVjq1C0,8956
|
||||||
|
pygments/lexers/unicon.py,sha256=4MDnwsgXzLlm0zaDqYr9uHFNspgCzQRNzyxClVQ-RMI,18512
|
||||||
|
pygments/lexers/urbi.py,sha256=3CkxfMOqpSVZpOq7_4YrWcmjq4B3CF_IDGIxAsedWQ0,6037
|
||||||
|
pygments/lexers/usd.py,sha256=7FiS_KV1Q9Cvf51fAHmMqr5QDz1OtjqTkp1S-8VyQTw,3513
|
||||||
|
pygments/lexers/varnish.py,sha256=LYL6rhIw-ApJRT4qkxFaxG71OPbHsiFv4mtfr0m1OPY,7273
|
||||||
|
pygments/lexers/verification.py,sha256=1C1ntqvZmrCtzHV9eDIga1LtQ4jpAlb6GnWkNucEJXQ,3885
|
||||||
|
pygments/lexers/web.py,sha256=lscit_NgXsHDL8sjvNvAFriPBe24cz0b2rBGFFpYlv8,894
|
||||||
|
pygments/lexers/webassembly.py,sha256=HGFp4qMAK0ejx0omrThEtIvl_ArKOeS7b4yZkipqmIo,5699
|
||||||
|
pygments/lexers/webidl.py,sha256=VeqO7i3Y-e0ObtLxn1sniGmL_CvOWekaP2XyUFzDlLQ,10517
|
||||||
|
pygments/lexers/webmisc.py,sha256=veICtUXL33effcYDX8_FU1F0Q5FfZfzcC2Tyu5SYT9A,40549
|
||||||
|
pygments/lexers/wgsl.py,sha256=Mffgj3x5tFwsKWihw2kbhSmhvGNEgQc_pJi6C3mEQxc,11920
|
||||||
|
pygments/lexers/whiley.py,sha256=SbbftaItSgIdczzT8qOV8mH1m6dD3aM2EvRk4ila6Co,4018
|
||||||
|
pygments/lexers/wowtoc.py,sha256=o_01SGTJ3jecVHEpkhqHdwI66XQVi8wNeajVYPbd4Bo,4021
|
||||||
|
pygments/lexers/wren.py,sha256=I3LaIzy3aa0aDXJd9PJp-SiJtgJHktISHdQ_zQuMHLY,3239
|
||||||
|
pygments/lexers/x10.py,sha256=p3VwQg70e8ZR2iwR2kY-yojTyD_s3xVJMLTCWrpz6Hc,1920
|
||||||
|
pygments/lexers/xorg.py,sha256=rXKVNQiiniNoaM4VTkLFj106NLddCBo1BV45BTxT1HE,902
|
||||||
|
pygments/lexers/yang.py,sha256=rx08okYvJgWMe6jMRkt-ysEuaTi85X5DE0Q5EHb-Ehg,4500
|
||||||
|
pygments/lexers/zig.py,sha256=B5QZGfEoNkoAG5EZxHk28MZ1n2Q1Gvx11kcvTQ6N5X8,3953
|
||||||
|
pygments/modeline.py,sha256=eF2vO4LpOGoPvIKKkbPfnyut8hT4UiebZPpb-BYGQdI,986
|
||||||
|
pygments/plugin.py,sha256=k_gtJHBriDDWiNinQ-h_qnDUm7EnPLuXaTGH3Cd5pZw,2579
|
||||||
|
pygments/regexopt.py,sha256=jg1ALogcYGU96TQS9isBl6dCrvw5y5--BP_K-uFk_8s,3072
|
||||||
|
pygments/scanner.py,sha256=b_nu5_f3HCgSdp5S_aNRBQ1MSCm4ZjDwec2OmTRickw,3092
|
||||||
|
pygments/sphinxext.py,sha256=MWLG74mLD1iqqrUbx7ZN6APuZ5eGi88yPbK0zajl3VQ,6816
|
||||||
|
pygments/style.py,sha256=ePJAMWuctRHvKhdIFkZT9CAGEdHBZxx-Bv7PURa8NB4,6245
|
||||||
|
pygments/styles/__init__.py,sha256=pVdtmEjFYxEO6Lf-duCMbfy_aB_FwXwD9Hzj1otwOow,3676
|
||||||
|
pygments/styles/__pycache__/__init__.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/abap.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/algol.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/algol_nu.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/arduino.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/autumn.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/borland.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/bw.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/colorful.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/default.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/dracula.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/emacs.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/friendly.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/friendly_grayscale.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/fruity.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/gh_dark.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/gruvbox.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/igor.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/inkpot.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/lilypond.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/lovelace.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/manni.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/material.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/monokai.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/murphy.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/native.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/nord.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/onedark.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/paraiso_dark.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/paraiso_light.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/pastie.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/perldoc.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/rainbow_dash.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/rrt.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/sas.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/solarized.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/staroffice.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/stata_dark.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/stata_light.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/tango.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/trac.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/vim.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/vs.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/xcode.cpython-311.pyc,,
|
||||||
|
pygments/styles/__pycache__/zenburn.cpython-311.pyc,,
|
||||||
|
pygments/styles/abap.py,sha256=pvsya8aKMVAkVeAsOumTamTsbnpTSaGNn3AUrYkbN_o,705
|
||||||
|
pygments/styles/algol.py,sha256=Zpxg6alN3GogkpUWcp_EJlnqD_CBC9oxsvYkCOHLDHk,2216
|
||||||
|
pygments/styles/algol_nu.py,sha256=JyBOI8tzg27aOr5Ua8JNPLi6d4BYTixFdkPBbKqEiAw,2231
|
||||||
|
pygments/styles/arduino.py,sha256=Vsg-NzWKZZb4qMxgzE_Y2TX9lSx3FoUppRGUt8CSilk,4443
|
||||||
|
pygments/styles/autumn.py,sha256=vW1xxGF7Sa6IQTBlKerrufIXY52O4QMglDazMPb7_Ek,2096
|
||||||
|
pygments/styles/borland.py,sha256=hWDB1gJT-_3_exWgJ-49GJh1gwTNrOyQXp53zYer9cM,1514
|
||||||
|
pygments/styles/bw.py,sha256=BSDFekRBkr7c156YahNtmJ9gxBwjxIO4J_p6olEB4t0,1308
|
||||||
|
pygments/styles/colorful.py,sha256=ZbiSqyr-ZA4T-1RtHauihdJc05-Kt-lSFbJSO_jIwgU,2730
|
||||||
|
pygments/styles/default.py,sha256=LSIWGkEJq5VI2qFkCjoDtHrlVPODKHgjADBsmD_kTEQ,2488
|
||||||
|
pygments/styles/dracula.py,sha256=w_P_4Khe38U7BuEbbFHTwCGHBDLwAN7L9i6bKMnki48,3314
|
||||||
|
pygments/styles/emacs.py,sha256=IpMu1Rlfe7ukZ17loTqy1NBxP-YTpGIjAuss-3lVVq0,2439
|
||||||
|
pygments/styles/friendly.py,sha256=e8c1p4PwJDGoaR7myygugbEkP9PoHl1p17w5R1s5xGI,2502
|
||||||
|
pygments/styles/friendly_grayscale.py,sha256=WHiGg5n6eN7Nd3TgMfSO_nUzjsulUJG0w9vWbQ6AAzw,2707
|
||||||
|
pygments/styles/fruity.py,sha256=RHODyvBNzfoMsCXpo73rVE2P861U5Sp4y4Yeh5S5qA0,1274
|
||||||
|
pygments/styles/gh_dark.py,sha256=o8MLrC_CA_RTLr7BoRdrXumBl6CvBEP1fDY_hqElDew,3481
|
||||||
|
pygments/styles/gruvbox.py,sha256=N8HjBr8bmiCfqf0H_BSuSFxH9cM-sS7AYmvvK3NMPFE,3230
|
||||||
|
pygments/styles/igor.py,sha256=WLVI14RraRiyO570MBPMTboieVvUyCxvToymTW33tec,692
|
||||||
|
pygments/styles/inkpot.py,sha256=9zP09w_sdHagTqv2sIQXdZAn9HYCppQtiNKVoLWiSBA,2302
|
||||||
|
pygments/styles/lilypond.py,sha256=wh-ip2qKgUTxdh82QKYCPdueDXhnCj-yatftcgWCljo,2016
|
||||||
|
pygments/styles/lovelace.py,sha256=fZ8NAWw-4625onSvDxWbZoPRrQ65BrcTjVy3PqS5D30,3117
|
||||||
|
pygments/styles/manni.py,sha256=CRsrOSBbQAXpV9JmnkVtHPp_cQIfpLL1tOA_3uG6dM8,2350
|
||||||
|
pygments/styles/material.py,sha256=B4bBRcdTo87UGtNcmN4UUmdiFgv2hxacVne-eaJIzLg,4083
|
||||||
|
pygments/styles/monokai.py,sha256=iqbl4_RZMUjHUj8jz98m4iB817M1meiiToS26xgP8C4,5063
|
||||||
|
pygments/styles/murphy.py,sha256=lhyTqRqpzrICQeIMo74oQQVrfsyvmVpDeCr96xOXAp4,2703
|
||||||
|
pygments/styles/native.py,sha256=sJMoL1xHC9o17AGgg2WMJevqxtGXRbYDL87Sipm1tik,1948
|
||||||
|
pygments/styles/nord.py,sha256=CFLY6iz19dANPlYGDAWoxcoNAwYCkOGg5Mg7AtepNhU,5244
|
||||||
|
pygments/styles/onedark.py,sha256=BgsmXfNk_A4NUpNZYtl0C-Cj368DiLrlrBRlop8CixQ,1664
|
||||||
|
pygments/styles/paraiso_dark.py,sha256=cgvn8V7vQXKzPLdThGS-P7YRN1cT08UDxnL0AcKOWMw,5526
|
||||||
|
pygments/styles/paraiso_light.py,sha256=QnkhJ-lFcGr0YktkIL2S3Ch8qntu95NWg2R1sAuPGA0,5530
|
||||||
|
pygments/styles/pastie.py,sha256=7w75VUNUMoDofO-KHBXCfUZMxynstTDZzkcsStafOdE,2425
|
||||||
|
pygments/styles/perldoc.py,sha256=ykm2Qo9YtThYyvAfAMJ2KUNCujSAP6qJbzj57Dv0USI,2128
|
||||||
|
pygments/styles/rainbow_dash.py,sha256=Bz6H7VU7nc8cfT_c9s-DLQv4WpSaQV-bCluR371jVGs,2432
|
||||||
|
pygments/styles/rrt.py,sha256=PyyasbLgJEGP_P9sMWMSKM2cVhk0yF6p0vGvtMEytG8,874
|
||||||
|
pygments/styles/sas.py,sha256=D2HCwKU2ojWy-NPJsjiUKSDKNeMfJ7e04K_Hqki-dWo,1393
|
||||||
|
pygments/styles/solarized.py,sha256=rBI99bncVDviqQZpkb7_aUCZ8UW3tIR65UYQzhhC3mA,4078
|
||||||
|
pygments/styles/staroffice.py,sha256=SQb2dU8N5iVDK6z7NnYF-0XQL-s2mcu47vcbeImZ2mc,770
|
||||||
|
pygments/styles/stata_dark.py,sha256=uKZsvGdSMxfKPlmKvPLWa48C1jXwuxlYVb44Kp2t2ik,1198
|
||||||
|
pygments/styles/stata_light.py,sha256=l5V1Sdz31jEkzO7CdSSBXrKWfoGgOShjarO5WtqX4DE,1227
|
||||||
|
pygments/styles/tango.py,sha256=1vrbjUD6WJHAkoHHO9emWYycuTB13rBRAPOeHwhzE4c,7039
|
||||||
|
pygments/styles/trac.py,sha256=kLK0nHm0nqK-Yu3MnROfR_PnEyhJJhF5RxxqFu4dfaM,1885
|
||||||
|
pygments/styles/vim.py,sha256=LoSIHP2S8t9jaKE0apklZkkPVG0EiVSLmI9RwEv1sUU,1922
|
||||||
|
pygments/styles/vs.py,sha256=TCDk9S4B5mEFVs5rKz2f6yjb6Qc_2hv8QyII1QCchOc,1026
|
||||||
|
pygments/styles/xcode.py,sha256=8nrGsI4FXIPx3DrGoqhLz_U0jZgpgKfW1FA2oV2iJ4A,1453
|
||||||
|
pygments/styles/zenburn.py,sha256=RWniXYptEN65ip_FZGHnd25RvujfHSmhSZSWioH0xY8,2148
|
||||||
|
pygments/token.py,sha256=seNsmcch9OEHXYirh8Ool7w8xDhfNTbLj5rHAC-gc_o,6184
|
||||||
|
pygments/unistring.py,sha256=FaUfG14NBJEKLQoY9qj6JYeXrpYcLmKulghdxOGFaOc,63223
|
||||||
|
pygments/util.py,sha256=AEVY0qonyyEMgv4Do2dINrrqUAwUk2XYSqHM650uzek,10230
|
@ -0,0 +1,5 @@
|
|||||||
|
Wheel-Version: 1.0
|
||||||
|
Generator: bdist_wheel (0.40.0)
|
||||||
|
Root-Is-Purelib: true
|
||||||
|
Tag: py3-none-any
|
||||||
|
|
@ -0,0 +1,2 @@
|
|||||||
|
[console_scripts]
|
||||||
|
pygmentize = pygments.cmdline:main
|
@ -0,0 +1 @@
|
|||||||
|
pygments
|
@ -0,0 +1 @@
|
|||||||
|
pip
|
@ -0,0 +1,339 @@
|
|||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 2, June 1991
|
||||||
|
|
||||||
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
||||||
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The licenses for most software are designed to take away your
|
||||||
|
freedom to share and change it. By contrast, the GNU General Public
|
||||||
|
License is intended to guarantee your freedom to share and change free
|
||||||
|
software--to make sure the software is free for all its users. This
|
||||||
|
General Public License applies to most of the Free Software
|
||||||
|
Foundation's software and to any other program whose authors commit to
|
||||||
|
using it. (Some other Free Software Foundation software is covered by
|
||||||
|
the GNU Lesser General Public License instead.) You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
this service if you wish), that you receive source code or can get it
|
||||||
|
if you want it, that you can change the software or use pieces of it
|
||||||
|
in new free programs; and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to make restrictions that forbid
|
||||||
|
anyone to deny you these rights or to ask you to surrender the rights.
|
||||||
|
These restrictions translate to certain responsibilities for you if you
|
||||||
|
distribute copies of the software, or if you modify it.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must give the recipients all the rights that
|
||||||
|
you have. You must make sure that they, too, receive or can get the
|
||||||
|
source code. And you must show them these terms so they know their
|
||||||
|
rights.
|
||||||
|
|
||||||
|
We protect your rights with two steps: (1) copyright the software, and
|
||||||
|
(2) offer you this license which gives you legal permission to copy,
|
||||||
|
distribute and/or modify the software.
|
||||||
|
|
||||||
|
Also, for each author's protection and ours, we want to make certain
|
||||||
|
that everyone understands that there is no warranty for this free
|
||||||
|
software. If the software is modified by someone else and passed on, we
|
||||||
|
want its recipients to know that what they have is not the original, so
|
||||||
|
that any problems introduced by others will not reflect on the original
|
||||||
|
authors' reputations.
|
||||||
|
|
||||||
|
Finally, any free program is threatened constantly by software
|
||||||
|
patents. We wish to avoid the danger that redistributors of a free
|
||||||
|
program will individually obtain patent licenses, in effect making the
|
||||||
|
program proprietary. To prevent this, we have made it clear that any
|
||||||
|
patent must be licensed for everyone's free use or not licensed at all.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. This License applies to any program or other work which contains
|
||||||
|
a notice placed by the copyright holder saying it may be distributed
|
||||||
|
under the terms of this General Public License. The "Program", below,
|
||||||
|
refers to any such program or work, and a "work based on the Program"
|
||||||
|
means either the Program or any derivative work under copyright law:
|
||||||
|
that is to say, a work containing the Program or a portion of it,
|
||||||
|
either verbatim or with modifications and/or translated into another
|
||||||
|
language. (Hereinafter, translation is included without limitation in
|
||||||
|
the term "modification".) Each licensee is addressed as "you".
|
||||||
|
|
||||||
|
Activities other than copying, distribution and modification are not
|
||||||
|
covered by this License; they are outside its scope. The act of
|
||||||
|
running the Program is not restricted, and the output from the Program
|
||||||
|
is covered only if its contents constitute a work based on the
|
||||||
|
Program (independent of having been made by running the Program).
|
||||||
|
Whether that is true depends on what the Program does.
|
||||||
|
|
||||||
|
1. You may copy and distribute verbatim copies of the Program's
|
||||||
|
source code as you receive it, in any medium, provided that you
|
||||||
|
conspicuously and appropriately publish on each copy an appropriate
|
||||||
|
copyright notice and disclaimer of warranty; keep intact all the
|
||||||
|
notices that refer to this License and to the absence of any warranty;
|
||||||
|
and give any other recipients of the Program a copy of this License
|
||||||
|
along with the Program.
|
||||||
|
|
||||||
|
You may charge a fee for the physical act of transferring a copy, and
|
||||||
|
you may at your option offer warranty protection in exchange for a fee.
|
||||||
|
|
||||||
|
2. You may modify your copy or copies of the Program or any portion
|
||||||
|
of it, thus forming a work based on the Program, and copy and
|
||||||
|
distribute such modifications or work under the terms of Section 1
|
||||||
|
above, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) You must cause the modified files to carry prominent notices
|
||||||
|
stating that you changed the files and the date of any change.
|
||||||
|
|
||||||
|
b) You must cause any work that you distribute or publish, that in
|
||||||
|
whole or in part contains or is derived from the Program or any
|
||||||
|
part thereof, to be licensed as a whole at no charge to all third
|
||||||
|
parties under the terms of this License.
|
||||||
|
|
||||||
|
c) If the modified program normally reads commands interactively
|
||||||
|
when run, you must cause it, when started running for such
|
||||||
|
interactive use in the most ordinary way, to print or display an
|
||||||
|
announcement including an appropriate copyright notice and a
|
||||||
|
notice that there is no warranty (or else, saying that you provide
|
||||||
|
a warranty) and that users may redistribute the program under
|
||||||
|
these conditions, and telling the user how to view a copy of this
|
||||||
|
License. (Exception: if the Program itself is interactive but
|
||||||
|
does not normally print such an announcement, your work based on
|
||||||
|
the Program is not required to print an announcement.)
|
||||||
|
|
||||||
|
These requirements apply to the modified work as a whole. If
|
||||||
|
identifiable sections of that work are not derived from the Program,
|
||||||
|
and can be reasonably considered independent and separate works in
|
||||||
|
themselves, then this License, and its terms, do not apply to those
|
||||||
|
sections when you distribute them as separate works. But when you
|
||||||
|
distribute the same sections as part of a whole which is a work based
|
||||||
|
on the Program, the distribution of the whole must be on the terms of
|
||||||
|
this License, whose permissions for other licensees extend to the
|
||||||
|
entire whole, and thus to each and every part regardless of who wrote it.
|
||||||
|
|
||||||
|
Thus, it is not the intent of this section to claim rights or contest
|
||||||
|
your rights to work written entirely by you; rather, the intent is to
|
||||||
|
exercise the right to control the distribution of derivative or
|
||||||
|
collective works based on the Program.
|
||||||
|
|
||||||
|
In addition, mere aggregation of another work not based on the Program
|
||||||
|
with the Program (or with a work based on the Program) on a volume of
|
||||||
|
a storage or distribution medium does not bring the other work under
|
||||||
|
the scope of this License.
|
||||||
|
|
||||||
|
3. You may copy and distribute the Program (or a work based on it,
|
||||||
|
under Section 2) in object code or executable form under the terms of
|
||||||
|
Sections 1 and 2 above provided that you also do one of the following:
|
||||||
|
|
||||||
|
a) Accompany it with the complete corresponding machine-readable
|
||||||
|
source code, which must be distributed under the terms of Sections
|
||||||
|
1 and 2 above on a medium customarily used for software interchange; or,
|
||||||
|
|
||||||
|
b) Accompany it with a written offer, valid for at least three
|
||||||
|
years, to give any third party, for a charge no more than your
|
||||||
|
cost of physically performing source distribution, a complete
|
||||||
|
machine-readable copy of the corresponding source code, to be
|
||||||
|
distributed under the terms of Sections 1 and 2 above on a medium
|
||||||
|
customarily used for software interchange; or,
|
||||||
|
|
||||||
|
c) Accompany it with the information you received as to the offer
|
||||||
|
to distribute corresponding source code. (This alternative is
|
||||||
|
allowed only for noncommercial distribution and only if you
|
||||||
|
received the program in object code or executable form with such
|
||||||
|
an offer, in accord with Subsection b above.)
|
||||||
|
|
||||||
|
The source code for a work means the preferred form of the work for
|
||||||
|
making modifications to it. For an executable work, complete source
|
||||||
|
code means all the source code for all modules it contains, plus any
|
||||||
|
associated interface definition files, plus the scripts used to
|
||||||
|
control compilation and installation of the executable. However, as a
|
||||||
|
special exception, the source code distributed need not include
|
||||||
|
anything that is normally distributed (in either source or binary
|
||||||
|
form) with the major components (compiler, kernel, and so on) of the
|
||||||
|
operating system on which the executable runs, unless that component
|
||||||
|
itself accompanies the executable.
|
||||||
|
|
||||||
|
If distribution of executable or object code is made by offering
|
||||||
|
access to copy from a designated place, then offering equivalent
|
||||||
|
access to copy the source code from the same place counts as
|
||||||
|
distribution of the source code, even though third parties are not
|
||||||
|
compelled to copy the source along with the object code.
|
||||||
|
|
||||||
|
4. You may not copy, modify, sublicense, or distribute the Program
|
||||||
|
except as expressly provided under this License. Any attempt
|
||||||
|
otherwise to copy, modify, sublicense or distribute the Program is
|
||||||
|
void, and will automatically terminate your rights under this License.
|
||||||
|
However, parties who have received copies, or rights, from you under
|
||||||
|
this License will not have their licenses terminated so long as such
|
||||||
|
parties remain in full compliance.
|
||||||
|
|
||||||
|
5. You are not required to accept this License, since you have not
|
||||||
|
signed it. However, nothing else grants you permission to modify or
|
||||||
|
distribute the Program or its derivative works. These actions are
|
||||||
|
prohibited by law if you do not accept this License. Therefore, by
|
||||||
|
modifying or distributing the Program (or any work based on the
|
||||||
|
Program), you indicate your acceptance of this License to do so, and
|
||||||
|
all its terms and conditions for copying, distributing or modifying
|
||||||
|
the Program or works based on it.
|
||||||
|
|
||||||
|
6. Each time you redistribute the Program (or any work based on the
|
||||||
|
Program), the recipient automatically receives a license from the
|
||||||
|
original licensor to copy, distribute or modify the Program subject to
|
||||||
|
these terms and conditions. You may not impose any further
|
||||||
|
restrictions on the recipients' exercise of the rights granted herein.
|
||||||
|
You are not responsible for enforcing compliance by third parties to
|
||||||
|
this License.
|
||||||
|
|
||||||
|
7. If, as a consequence of a court judgment or allegation of patent
|
||||||
|
infringement or for any other reason (not limited to patent issues),
|
||||||
|
conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot
|
||||||
|
distribute so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you
|
||||||
|
may not distribute the Program at all. For example, if a patent
|
||||||
|
license would not permit royalty-free redistribution of the Program by
|
||||||
|
all those who receive copies directly or indirectly through you, then
|
||||||
|
the only way you could satisfy both it and this License would be to
|
||||||
|
refrain entirely from distribution of the Program.
|
||||||
|
|
||||||
|
If any portion of this section is held invalid or unenforceable under
|
||||||
|
any particular circumstance, the balance of the section is intended to
|
||||||
|
apply and the section as a whole is intended to apply in other
|
||||||
|
circumstances.
|
||||||
|
|
||||||
|
It is not the purpose of this section to induce you to infringe any
|
||||||
|
patents or other property right claims or to contest validity of any
|
||||||
|
such claims; this section has the sole purpose of protecting the
|
||||||
|
integrity of the free software distribution system, which is
|
||||||
|
implemented by public license practices. Many people have made
|
||||||
|
generous contributions to the wide range of software distributed
|
||||||
|
through that system in reliance on consistent application of that
|
||||||
|
system; it is up to the author/donor to decide if he or she is willing
|
||||||
|
to distribute software through any other system and a licensee cannot
|
||||||
|
impose that choice.
|
||||||
|
|
||||||
|
This section is intended to make thoroughly clear what is believed to
|
||||||
|
be a consequence of the rest of this License.
|
||||||
|
|
||||||
|
8. If the distribution and/or use of the Program is restricted in
|
||||||
|
certain countries either by patents or by copyrighted interfaces, the
|
||||||
|
original copyright holder who places the Program under this License
|
||||||
|
may add an explicit geographical distribution limitation excluding
|
||||||
|
those countries, so that distribution is permitted only in or among
|
||||||
|
countries not thus excluded. In such case, this License incorporates
|
||||||
|
the limitation as if written in the body of this License.
|
||||||
|
|
||||||
|
9. The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the Program
|
||||||
|
specifies a version number of this License which applies to it and "any
|
||||||
|
later version", you have the option of following the terms and conditions
|
||||||
|
either of that version or of any later version published by the Free
|
||||||
|
Software Foundation. If the Program does not specify a version number of
|
||||||
|
this License, you may choose any version ever published by the Free Software
|
||||||
|
Foundation.
|
||||||
|
|
||||||
|
10. If you wish to incorporate parts of the Program into other free
|
||||||
|
programs whose distribution conditions are different, write to the author
|
||||||
|
to ask for permission. For software which is copyrighted by the Free
|
||||||
|
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||||
|
make exceptions for this. Our decision will be guided by the two goals
|
||||||
|
of preserving the free status of all derivatives of our free software and
|
||||||
|
of promoting the sharing and reuse of software generally.
|
||||||
|
|
||||||
|
NO WARRANTY
|
||||||
|
|
||||||
|
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||||
|
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||||
|
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||||
|
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||||
|
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||||
|
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||||
|
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||||
|
REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||||
|
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||||
|
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||||
|
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||||
|
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||||
|
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively
|
||||||
|
convey the exclusion of warranty; and each file should have at least
|
||||||
|
the "copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License along
|
||||||
|
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If the program is interactive, make it output a short notice like this
|
||||||
|
when it starts in an interactive mode:
|
||||||
|
|
||||||
|
Gnomovision version 69, Copyright (C) year name of author
|
||||||
|
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
|
This is free software, and you are welcome to redistribute it
|
||||||
|
under certain conditions; type `show c' for details.
|
||||||
|
|
||||||
|
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||||
|
parts of the General Public License. Of course, the commands you use may
|
||||||
|
be called something other than `show w' and `show c'; they could even be
|
||||||
|
mouse-clicks or menu items--whatever suits your program.
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or your
|
||||||
|
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||||
|
necessary. Here is a sample; alter the names:
|
||||||
|
|
||||||
|
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||||
|
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||||
|
|
||||||
|
<signature of Ty Coon>, 1 April 1989
|
||||||
|
Ty Coon, President of Vice
|
||||||
|
|
||||||
|
This General Public License does not permit incorporating your program into
|
||||||
|
proprietary programs. If your program is a subroutine library, you may
|
||||||
|
consider it more useful to permit linking proprietary applications with the
|
||||||
|
library. If this is what you want to do, use the GNU Lesser General
|
||||||
|
Public License instead of this License.
|
@ -0,0 +1,313 @@
|
|||||||
|
Metadata-Version: 2.1
|
||||||
|
Name: Unidecode
|
||||||
|
Version: 1.3.6
|
||||||
|
Summary: ASCII transliterations of Unicode text
|
||||||
|
Home-page: UNKNOWN
|
||||||
|
Author: Tomaz Solc
|
||||||
|
Author-email: tomaz.solc@tablix.org
|
||||||
|
License: GPL
|
||||||
|
Platform: UNKNOWN
|
||||||
|
Classifier: License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)
|
||||||
|
Classifier: Programming Language :: Python
|
||||||
|
Classifier: Programming Language :: Python :: 3
|
||||||
|
Classifier: Programming Language :: Python :: 3.5
|
||||||
|
Classifier: Programming Language :: Python :: 3.6
|
||||||
|
Classifier: Programming Language :: Python :: 3.7
|
||||||
|
Classifier: Programming Language :: Python :: 3.8
|
||||||
|
Classifier: Programming Language :: Python :: 3.9
|
||||||
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
||||||
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
||||||
|
Classifier: Topic :: Text Processing
|
||||||
|
Classifier: Topic :: Text Processing :: Filters
|
||||||
|
Requires-Python: >=3.5
|
||||||
|
|
||||||
|
Unidecode, lossy ASCII transliterations of Unicode text
|
||||||
|
=======================================================
|
||||||
|
|
||||||
|
It often happens that you have text data in Unicode, but you need to
|
||||||
|
represent it in ASCII. For example when integrating with legacy code that
|
||||||
|
doesn't support Unicode, or for ease of entry of non-Roman names on a US
|
||||||
|
keyboard, or when constructing ASCII machine identifiers from human-readable
|
||||||
|
Unicode strings that should still be somewhat intelligible. A popular example
|
||||||
|
of this is when making an URL slug from an article title.
|
||||||
|
|
||||||
|
**Unidecode is not a replacement for fully supporting Unicode for strings in
|
||||||
|
your program. There are a number of caveats that come with its use,
|
||||||
|
especially when its output is directly visible to users. Please read the rest
|
||||||
|
of this README before using Unidecode in your project.**
|
||||||
|
|
||||||
|
In most of examples listed above you could represent Unicode characters as
|
||||||
|
``???`` or ``\\15BA\\15A0\\1610``, to mention two extreme cases. But that's
|
||||||
|
nearly useless to someone who actually wants to read what the text says.
|
||||||
|
|
||||||
|
What Unidecode provides is a middle road: the function ``unidecode()`` takes
|
||||||
|
Unicode data and tries to represent it in ASCII characters (i.e., the
|
||||||
|
universally displayable characters between 0x00 and 0x7F), where the
|
||||||
|
compromises taken when mapping between two character sets are chosen to be
|
||||||
|
near what a human with a US keyboard would choose.
|
||||||
|
|
||||||
|
The quality of resulting ASCII representation varies. For languages of
|
||||||
|
western origin it should be between perfect and good. On the other hand
|
||||||
|
transliteration (i.e., conveying, in Roman letters, the pronunciation
|
||||||
|
expressed by the text in some other writing system) of languages like
|
||||||
|
Chinese, Japanese or Korean is a very complex issue and this library does
|
||||||
|
not even attempt to address it. It draws the line at context-free
|
||||||
|
character-by-character mapping. So a good rule of thumb is that the further
|
||||||
|
the script you are transliterating is from Latin alphabet, the worse the
|
||||||
|
transliteration will be.
|
||||||
|
|
||||||
|
Generally Unidecode produces better results than simply stripping accents from
|
||||||
|
characters (which can be done in Python with built-in functions). It is based
|
||||||
|
on hand-tuned character mappings that for example also contain ASCII
|
||||||
|
approximations for symbols and non-Latin alphabets.
|
||||||
|
|
||||||
|
**Note that some people might find certain transliterations offending.** Most
|
||||||
|
common examples include characters that are used in multiple languages. A user
|
||||||
|
expects a character to be transliterated in their language but Unidecode uses a
|
||||||
|
transliteration for a different language. It's best to not use Unidecode for
|
||||||
|
strings that are directly visible to users of your application. See also the
|
||||||
|
*Frequently Asked Questions* section for more info on common problems.
|
||||||
|
|
||||||
|
This is a Python port of ``Text::Unidecode`` Perl module by Sean M. Burke
|
||||||
|
<sburke@cpan.org>.
|
||||||
|
|
||||||
|
|
||||||
|
Module content
|
||||||
|
--------------
|
||||||
|
|
||||||
|
This library contains a function that takes a string object, possibly
|
||||||
|
containing non-ASCII characters, and returns a string that can be safely
|
||||||
|
encoded to ASCII::
|
||||||
|
|
||||||
|
>>> from unidecode import unidecode
|
||||||
|
>>> unidecode('kožušček')
|
||||||
|
'kozuscek'
|
||||||
|
>>> unidecode('30 \U0001d5c4\U0001d5c6/\U0001d5c1')
|
||||||
|
'30 km/h'
|
||||||
|
>>> unidecode('\u5317\u4EB0')
|
||||||
|
'Bei Jing '
|
||||||
|
|
||||||
|
You can also specify an *errors* argument to ``unidecode()`` that determines
|
||||||
|
what Unidecode does with characters that are not present in its transliteration
|
||||||
|
tables. The default is ``'ignore'`` meaning that Unidecode will ignore those
|
||||||
|
characters (replace them with an empty string). ``'strict'`` will raise a
|
||||||
|
``UnidecodeError``. The exception object will contain an *index* attribute that
|
||||||
|
can be used to find the offending character. ``'replace'`` will replace them
|
||||||
|
with ``'?'`` (or another string, specified in the *replace_str* argument).
|
||||||
|
``'preserve'`` will keep the original, non-ASCII character in the string. Note
|
||||||
|
that if ``'preserve'`` is used the string returned by ``unidecode()`` will not
|
||||||
|
be ASCII-encodable!::
|
||||||
|
|
||||||
|
>>> unidecode('\ue000') # unidecode does not have replacements for Private Use Area characters
|
||||||
|
''
|
||||||
|
>>> unidecode('\ue000', errors='strict')
|
||||||
|
Traceback (most recent call last):
|
||||||
|
...
|
||||||
|
unidecode.UnidecodeError: no replacement found for character '\ue000' in position 0
|
||||||
|
|
||||||
|
A utility is also included that allows you to transliterate text from the
|
||||||
|
command line in several ways. Reading from standard input::
|
||||||
|
|
||||||
|
$ echo hello | unidecode
|
||||||
|
hello
|
||||||
|
|
||||||
|
from a command line argument::
|
||||||
|
|
||||||
|
$ unidecode -c hello
|
||||||
|
hello
|
||||||
|
|
||||||
|
or from a file::
|
||||||
|
|
||||||
|
$ unidecode hello.txt
|
||||||
|
hello
|
||||||
|
|
||||||
|
The default encoding used by the utility depends on your system locale. You can
|
||||||
|
specify another encoding with the ``-e`` argument. See ``unidecode --help`` for
|
||||||
|
a full list of available options.
|
||||||
|
|
||||||
|
Requirements
|
||||||
|
------------
|
||||||
|
|
||||||
|
Nothing except Python itself. Unidecode supports Python 3.5 or later.
|
||||||
|
|
||||||
|
You need a Python build with "wide" Unicode characters (also called "UCS-4
|
||||||
|
build") in order for Unidecode to work correctly with characters outside of
|
||||||
|
Basic Multilingual Plane (BMP). Common characters outside BMP are bold, italic,
|
||||||
|
script, etc. variants of the Latin alphabet intended for mathematical notation.
|
||||||
|
Surrogate pair encoding of "narrow" builds is not supported in Unidecode.
|
||||||
|
|
||||||
|
If your Python build supports "wide" Unicode the following expression will
|
||||||
|
return True::
|
||||||
|
|
||||||
|
>>> import sys
|
||||||
|
>>> sys.maxunicode > 0xffff
|
||||||
|
True
|
||||||
|
|
||||||
|
See `PEP 261 <https://www.python.org/dev/peps/pep-0261/>`_ for details
|
||||||
|
regarding support for "wide" Unicode characters in Python.
|
||||||
|
|
||||||
|
|
||||||
|
Installation
|
||||||
|
------------
|
||||||
|
|
||||||
|
To install the latest version of Unidecode from the Python package index, use
|
||||||
|
these commands::
|
||||||
|
|
||||||
|
$ pip install unidecode
|
||||||
|
|
||||||
|
To install Unidecode from the source distribution and run unit tests, use::
|
||||||
|
|
||||||
|
$ python setup.py install
|
||||||
|
$ python setup.py test
|
||||||
|
|
||||||
|
Frequently asked questions
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
German umlauts are transliterated incorrectly
|
||||||
|
Latin letters "a", "o" and "u" with diaeresis are transliterated by
|
||||||
|
Unidecode as "a", "o", "u", *not* according to German rules "ae", "oe",
|
||||||
|
"ue". This is intentional and will not be changed. Rationale is that these
|
||||||
|
letters are used in languages other than German (for example, Finnish and
|
||||||
|
Turkish). German text transliterated without the extra "e" is much more
|
||||||
|
readable than other languages transliterated using German rules. A
|
||||||
|
workaround is to do your own replacements of these characters before
|
||||||
|
passing the string to ``unidecode()``.
|
||||||
|
|
||||||
|
Japanese Kanji is transliterated as Chinese
|
||||||
|
Same as with Latin letters with accents discussed in the answer above, the
|
||||||
|
Unicode standard encodes letters, not letters in a certain language or
|
||||||
|
their meaning. With Japanese and Chinese this is even more evident because
|
||||||
|
the same letter can have very different transliterations depending on the
|
||||||
|
language it is used in. Since Unidecode does not do language-specific
|
||||||
|
transliteration (see next question), it must decide on one. For certain
|
||||||
|
characters that are used in both Japanese and Chinese the decision was to
|
||||||
|
use Chinese transliterations. If you intend to transliterate Japanese,
|
||||||
|
Chinese or Korean text please consider using other libraries which do
|
||||||
|
language-specific transliteration, such as `Unihandecode
|
||||||
|
<https://github.com/miurahr/unihandecode>`_.
|
||||||
|
|
||||||
|
Unidecode should support localization (e.g. a language or country parameter, inspecting system locale, etc.)
|
||||||
|
Language-specific transliteration is a complicated problem and beyond the
|
||||||
|
scope of this library. Changes related to this will not be accepted. Please
|
||||||
|
consider using other libraries which do provide this capability, such as
|
||||||
|
`Unihandecode <https://github.com/miurahr/unihandecode>`_.
|
||||||
|
|
||||||
|
Unidecode should automatically detect the language of the text being transliterated
|
||||||
|
Language detection is a completely separate problem and beyond the scope of
|
||||||
|
this library.
|
||||||
|
|
||||||
|
Unidecode should use a permissive license such as MIT or the BSD license.
|
||||||
|
The maintainer of Unidecode believes that providing access to source code
|
||||||
|
on redistribution is a fair and reasonable request when basing products on
|
||||||
|
voluntary work of many contributors. If the license is not suitable for
|
||||||
|
you, please consider using other libraries, such as `text-unidecode
|
||||||
|
<https://github.com/kmike/text-unidecode>`_.
|
||||||
|
|
||||||
|
Unidecode produces completely wrong results (e.g. "u" with diaeresis transliterating as "A 1/4 ")
|
||||||
|
The strings you are passing to Unidecode have been wrongly decoded
|
||||||
|
somewhere in your program. For example, you might be decoding utf-8 encoded
|
||||||
|
strings as latin1. With a misconfigured terminal, locale and/or a text
|
||||||
|
editor this might not be immediately apparent. Inspect your strings with
|
||||||
|
``repr()`` and consult the
|
||||||
|
`Unicode HOWTO <https://docs.python.org/3/howto/unicode.html>`_.
|
||||||
|
|
||||||
|
Why does Unidecode not replace \\u and \\U backslash escapes in my strings?
|
||||||
|
Unidecode knows nothing about escape sequences. Interpreting these sequences
|
||||||
|
and replacing them with actual Unicode characters in string literals is the
|
||||||
|
task of the Python interpreter. If you are asking this question you are
|
||||||
|
very likely misunderstanding the purpose of this library. Consult the
|
||||||
|
`Unicode HOWTO <https://docs.python.org/3/howto/unicode.html>`_ and possibly
|
||||||
|
the ``unicode_escape`` encoding in the standard library.
|
||||||
|
|
||||||
|
I've upgraded Unidecode and now some URLs on my website return 404 Not Found.
|
||||||
|
This is an issue with the software that is running your website, not
|
||||||
|
Unidecode. Occasionally, new versions of Unidecode library are released
|
||||||
|
which contain improvements to the transliteration tables. This means that
|
||||||
|
you cannot rely that ``unidecode()`` output will not change across
|
||||||
|
different versions of Unidecode library. If you use ``unidecode()`` to
|
||||||
|
generate URLs for your website, either generate the URL slug once and store
|
||||||
|
it in the database or lock your dependency of Unidecode to one specific
|
||||||
|
version.
|
||||||
|
|
||||||
|
Some of the issues in this section are discussed in more detail in `this blog
|
||||||
|
post <https://www.tablix.org/~avian/blog/archives/2013/09/python_unidecode_release_0_04_14/>`_.
|
||||||
|
|
||||||
|
|
||||||
|
Performance notes
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
By default, ``unidecode()`` optimizes for the use case where most of the strings
|
||||||
|
passed to it are already ASCII-only and no transliteration is necessary (this
|
||||||
|
default might change in future versions).
|
||||||
|
|
||||||
|
For performance critical applications, two additional functions are exposed:
|
||||||
|
|
||||||
|
``unidecode_expect_ascii()`` is optimized for ASCII-only inputs (approximately
|
||||||
|
5 times faster than ``unidecode_expect_nonascii()`` on 10 character strings,
|
||||||
|
more on longer strings), but slightly slower for non-ASCII inputs.
|
||||||
|
|
||||||
|
``unidecode_expect_nonascii()`` takes approximately the same amount of time on
|
||||||
|
ASCII and non-ASCII inputs, but is slightly faster for non-ASCII inputs than
|
||||||
|
``unidecode_expect_ascii()``.
|
||||||
|
|
||||||
|
Apart from differences in run time, both functions produce identical results.
|
||||||
|
For most users of Unidecode, the difference in performance should be
|
||||||
|
negligible.
|
||||||
|
|
||||||
|
|
||||||
|
Source
|
||||||
|
------
|
||||||
|
|
||||||
|
You can get the latest development version of Unidecode with::
|
||||||
|
|
||||||
|
$ git clone https://www.tablix.org/~avian/git/unidecode.git
|
||||||
|
|
||||||
|
There is also an official mirror of this repository on GitHub at
|
||||||
|
https://github.com/avian2/unidecode
|
||||||
|
|
||||||
|
|
||||||
|
Contact
|
||||||
|
-------
|
||||||
|
|
||||||
|
Please make sure to read the `Frequently asked questions`_ section above before
|
||||||
|
contacting the maintainer.
|
||||||
|
|
||||||
|
Bug reports, patches and suggestions for Unidecode can be sent to
|
||||||
|
tomaz.solc@tablix.org.
|
||||||
|
|
||||||
|
Alternatively, you can also open a ticket or pull request at
|
||||||
|
https://github.com/avian2/unidecode
|
||||||
|
|
||||||
|
|
||||||
|
Copyright
|
||||||
|
---------
|
||||||
|
|
||||||
|
Original character transliteration tables:
|
||||||
|
|
||||||
|
Copyright 2001, Sean M. Burke <sburke@cpan.org>, all rights reserved.
|
||||||
|
|
||||||
|
Python code and later additions:
|
||||||
|
|
||||||
|
Copyright 2022, Tomaž Šolc <tomaz.solc@tablix.org>
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the Free
|
||||||
|
Software Foundation; either version 2 of the License, or (at your option)
|
||||||
|
any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||||
|
more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License along
|
||||||
|
with this program; if not, write to the Free Software Foundation, Inc., 51
|
||||||
|
Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. The programs and
|
||||||
|
documentation in this dist are distributed in the hope that they will be
|
||||||
|
useful, but without any warranty; without even the implied warranty of
|
||||||
|
merchantability or fitness for a particular purpose.
|
||||||
|
|
||||||
|
..
|
||||||
|
vim: set filetype=rst:
|
||||||
|
|
||||||
|
|
@ -0,0 +1,396 @@
|
|||||||
|
../../../bin/unidecode,sha256=9-qYAmCSKXUubGnwC1KkDMb7t8EdcpioLhxE3wNg76Y,238
|
||||||
|
Unidecode-1.3.6.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||||
|
Unidecode-1.3.6.dist-info/LICENSE,sha256=gXf5dRMhNSbfLPYYTY_5hsZ1r7UU1OaKQEAQUhuIBkM,18092
|
||||||
|
Unidecode-1.3.6.dist-info/METADATA,sha256=ONtciPnxLLguVmpCtD3L5_lFSwWzkhziM9iqZC3ekDQ,13632
|
||||||
|
Unidecode-1.3.6.dist-info/RECORD,,
|
||||||
|
Unidecode-1.3.6.dist-info/WHEEL,sha256=_NOXIqFgOaYmlm9RJLPQZ13BJuEIrp5jx5ptRD5uh3Y,92
|
||||||
|
Unidecode-1.3.6.dist-info/entry_points.txt,sha256=ItDp7W6CoSJQAKqdiUkzmecugvKvWzjfN7MMK52GM10,51
|
||||||
|
Unidecode-1.3.6.dist-info/top_level.txt,sha256=4uYNG2l04s0dm0mEQmPLo2zrjLbhLPKUesLr2dOTdpo,10
|
||||||
|
unidecode/__init__.py,sha256=uUP370Iden1EsQtgglNd57DMKOG5mXh9UxIMm8yhDfQ,4230
|
||||||
|
unidecode/__init__.pyi,sha256=Wr8Oo3FoWxpKLIoKT9LpvSqwUqT-hw0YQG4lMvoOOnc,475
|
||||||
|
unidecode/__main__.py,sha256=VWYWCclyJsdhtNMQtryMFbgsCZtNUsWcEuS7ZOlH1Jc,40
|
||||||
|
unidecode/__pycache__/__init__.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/__main__.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/util.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x000.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x001.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x002.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x003.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x004.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x005.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x006.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x007.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x009.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x00a.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x00b.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x00c.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x00d.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x00e.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x00f.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x010.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x011.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x012.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x013.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x014.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x015.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x016.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x017.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x018.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x01d.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x01e.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x01f.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x020.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x021.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x022.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x023.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x024.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x025.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x026.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x027.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x028.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x029.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x02a.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x02c.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x02e.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x02f.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x030.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x031.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x032.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x033.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x04d.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x04e.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x04f.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x050.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x051.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x052.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x053.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x054.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x055.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x056.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x057.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x058.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x059.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x05a.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x05b.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x05c.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x05d.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x05e.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x05f.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x060.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x061.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x062.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x063.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x064.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x065.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x066.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x067.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x068.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x069.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x06a.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x06b.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x06c.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x06d.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x06e.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x06f.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x070.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x071.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x072.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x073.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x074.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x075.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x076.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x077.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x078.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x079.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x07a.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x07b.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x07c.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x07d.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x07e.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x07f.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x080.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x081.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x082.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x083.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x084.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x085.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x086.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x087.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x088.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x089.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x08a.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x08b.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x08c.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x08d.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x08e.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x08f.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x090.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x091.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x092.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x093.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x094.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x095.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x096.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x097.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x098.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x099.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x09a.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x09b.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x09c.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x09d.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x09e.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x09f.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0a0.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0a1.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0a2.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0a3.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0a4.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0ac.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0ad.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0ae.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0af.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0b0.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0b1.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0b2.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0b3.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0b4.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0b5.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0b6.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0b7.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0b8.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0b9.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0ba.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0bb.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0bc.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0bd.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0be.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0bf.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0c0.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0c1.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0c2.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0c3.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0c4.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0c5.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0c6.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0c7.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0c8.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0c9.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0ca.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0cb.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0cc.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0cd.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0ce.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0cf.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0d0.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0d1.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0d2.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0d3.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0d4.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0d5.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0d6.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0d7.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0f9.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0fa.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0fb.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0fc.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0fd.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0fe.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x0ff.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x1d4.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x1d5.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x1d6.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x1d7.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x1f1.cpython-311.pyc,,
|
||||||
|
unidecode/__pycache__/x1f6.cpython-311.pyc,,
|
||||||
|
unidecode/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
|
unidecode/util.py,sha256=ZxssZFzbZlAf6oiDIu2HZjrAQckbOD2VPD9uy-wZgCI,1652
|
||||||
|
unidecode/x000.py,sha256=DaoVzSCvFzhzHbFtzFOE8uS9CgWD7K3JuhmACpFbivY,3038
|
||||||
|
unidecode/x001.py,sha256=ylHh3UVaPtibVuUEEWvdSeDFK0OXrWt4-LnxAgYD6qo,3891
|
||||||
|
unidecode/x002.py,sha256=NWord8myi2jYV4YwlNZFbKu6HgbbolWLNCOlseR3WsY,3871
|
||||||
|
unidecode/x003.py,sha256=5gZS5aXbQ4Z8aH08EehKx4SqAgUNBcTz_x-I3o5qvVg,3825
|
||||||
|
unidecode/x004.py,sha256=KAeJjKgkdzMU1MK9J9JqmPeKBDgjhG5UcfyAa594Hk8,4054
|
||||||
|
unidecode/x005.py,sha256=7ezPyF52iKiK5LPf6TA5zVUZ7RbIjz7EVLS42aXG9ug,3920
|
||||||
|
unidecode/x006.py,sha256=Jye83eXYQqtpowxsQ01jQSDlhAjWbmGNFRdmbojvgyE,3912
|
||||||
|
unidecode/x007.py,sha256=6lnnnArEmvi3XeZLFwrCZGStdDKDAHt7alIpdo8S7rk,3987
|
||||||
|
unidecode/x009.py,sha256=xNz8qrO1PDseMjOwA0rjsiAhNZTO_uFgjpmbp7qcH_c,4013
|
||||||
|
unidecode/x00a.py,sha256=2xksKrrMWF9xLbs8OPfTxT7g86ciwdK9QZ8AQeecmus,4019
|
||||||
|
unidecode/x00b.py,sha256=Y7GlfYE2v-D3BkZd3ctfo6L21VG-aR2OFESRb8_WRH4,4019
|
||||||
|
unidecode/x00c.py,sha256=jOGpNU7vxghp3jwUuUATiSrDwvgZuOe8nlkcjJYTHco,4007
|
||||||
|
unidecode/x00d.py,sha256=lkFf8d_oXN8IZop6CFlYpKdWuJqWGnH0WQMwir4_WgI,4025
|
||||||
|
unidecode/x00e.py,sha256=ARKK__sIXUXL4h2Egac2f9ng2Z_YCGD5kYP2oj-ptlI,3989
|
||||||
|
unidecode/x00f.py,sha256=TdSmr755Jw1TRtxk5Z4UPZIp1CVhXii8S0zSAcQ2vWk,3998
|
||||||
|
unidecode/x010.py,sha256=YhXX8s1dP7YJMzaaV9CMBCOraExb6QrQQWbkFT3d2Jo,4011
|
||||||
|
unidecode/x011.py,sha256=bc5lAse0haio2pceaADqkjzTh8MdgNTwTh04W2FJO-Q,4120
|
||||||
|
unidecode/x012.py,sha256=XoiRFvNtHV29Q76KcpPBSrC4sLd6faTz4tKZEMIQ45M,4293
|
||||||
|
unidecode/x013.py,sha256=UkxSb2Q4xq7dydCZNg_f0Nu90slVSmAckq-btDZ7uAA,4190
|
||||||
|
unidecode/x014.py,sha256=4R3w_Dgg9yCw-9KkpqHfWFzyQZZfdb444fMIh240l-Q,4298
|
||||||
|
unidecode/x015.py,sha256=TB6O4l2qPxbmF2dejlxXLqX5tTfjl95cMYx1770GHs0,4329
|
||||||
|
unidecode/x016.py,sha256=Tx3P-DjDqCLuKbmiG-0cMzw2xFVuojQg3o5yyt4506E,4114
|
||||||
|
unidecode/x017.py,sha256=Ks_t-4BgOrTqmqYC6BpqXePI-YyStE7p3P27lzBefSA,4038
|
||||||
|
unidecode/x018.py,sha256=C1jpnsK3YO27xpiWJ2DXSAkV9dsPUwKqWtkgePtzp3g,3998
|
||||||
|
unidecode/x01d.py,sha256=EwAYkMVHAFvbKRzsQ-e4cRcvS_eia3kYCM2GcaqkBWY,3701
|
||||||
|
unidecode/x01e.py,sha256=2vz6tFtg8oxCRHgaxJKZmA8tqAEVCApqDLNfUt5oQ5w,3845
|
||||||
|
unidecode/x01f.py,sha256=NUC2rlFE9YpODdDn4e5uzV7uIqEBNvKw486nOD7UQpQ,3877
|
||||||
|
unidecode/x020.py,sha256=lXj8wkWMbD2Iuw3OCrEqZofJjJccnvY3ro5SpyotCq8,4080
|
||||||
|
unidecode/x021.py,sha256=vD0fTAq7YVre0CnAGnlxxBRlnm2bUo5_pNlQaP3v67Y,3986
|
||||||
|
unidecode/x022.py,sha256=wX6BUR7yKGgSICIzY_B15mqgnjvRbSlepM6aqb2tnGY,4085
|
||||||
|
unidecode/x023.py,sha256=weebXXqY3E8OhqS0ziAKHo58lCl3dkkyD0w2aKHqv7Q,4089
|
||||||
|
unidecode/x024.py,sha256=JmCTFnYtmMHQvfYP-4f5uDiCxlwhNk7LZLyxLWWGjK8,4003
|
||||||
|
unidecode/x025.py,sha256=DAMdCakIv0m21AWcRUNK9QWReCYXPSwVDmbFdriM4qc,3854
|
||||||
|
unidecode/x026.py,sha256=TKU0cwRXL8vLAmZ26R8E2dpkmXmRKx4wTU0VEbuTAnM,3874
|
||||||
|
unidecode/x027.py,sha256=qZacxfhS5nWgBhbrIT6-wm9yGP_OlAVRJ-GcmUhPl14,3718
|
||||||
|
unidecode/x028.py,sha256=FZPCZ9w3N3WOI42h2gHEQgVOAlLBNTZjMu_KQQkIMdk,5069
|
||||||
|
unidecode/x029.py,sha256=b8afmG-DjZmHHy0XdjcZlSXtlnwjScIcPBGbMv_YSUQ,4090
|
||||||
|
unidecode/x02a.py,sha256=QHAyHnegV0OVOTQ5OnfJKzkaHQIFbWmmMjiFcHGUZi0,4093
|
||||||
|
unidecode/x02c.py,sha256=ZkmMztaYT7d81E9qtUU9ayG9hBi5XqWY_ta-X5Hsaqc,4076
|
||||||
|
unidecode/x02e.py,sha256=VCGlK7123S2wDzfkggEARyGZKi-0ElepSYECGGluf7E,4072
|
||||||
|
unidecode/x02f.py,sha256=hcUTlkw_6Hjnxsk0e28RTd-HWpSK0IGq5hkrwA1fJFk,4091
|
||||||
|
unidecode/x030.py,sha256=lfiTK6M8YmvQXqX17mfEBrNysTOguO6hOeQuqwAJ2Wk,4027
|
||||||
|
unidecode/x031.py,sha256=jed0xoqQmUnnOqATVe7z9F2zigAZVAJX6BrWtXFPWbs,4044
|
||||||
|
unidecode/x032.py,sha256=lj4IwokKA0IdIJiJJTfmBUGVYmWvLowFtPLwLzhfokU,4466
|
||||||
|
unidecode/x033.py,sha256=ImTd4BRRPgCqWmrvJPoikoL0dJMKH8eQgd48vksi60A,4513
|
||||||
|
unidecode/x04d.py,sha256=hcUTlkw_6Hjnxsk0e28RTd-HWpSK0IGq5hkrwA1fJFk,4091
|
||||||
|
unidecode/x04e.py,sha256=X-Pzl5_QGkYexzNTY04C_tq3RvbyAUYemf0C4mIl5-U,4630
|
||||||
|
unidecode/x04f.py,sha256=BM29-2OTb6aR7CN7NMN3nnC9BGxgediLEHGMcIB5ENU,4597
|
||||||
|
unidecode/x050.py,sha256=SPmkA-PD39V8eO4DByxVa8HyqanGcw54xW51kLnaieY,4676
|
||||||
|
unidecode/x051.py,sha256=GGJT-fiYxTk_FAAW6eTobT3pOGI-Qq1M3eCxN7c7f5E,4681
|
||||||
|
unidecode/x052.py,sha256=a09eo_5pL6jpU9TW-zG2w2iXTYp6awtQ4OxGnLdcwKg,4654
|
||||||
|
unidecode/x053.py,sha256=4x8X4Hrf56DOAINYi8JxStXW4m7FGJNiH-51JzCxE64,4608
|
||||||
|
unidecode/x054.py,sha256=N8hO8YrlNoepnrYLUZ_EcTVRqI1lekqq3h-i-UNlTJw,4577
|
||||||
|
unidecode/x055.py,sha256=_PK65HLpk7puojAFGeOm5Cdk-PDevHHI6NR8sHuo0Ko,4595
|
||||||
|
unidecode/x056.py,sha256=mlNNouWFIjpZdjuBWhxFGSB_UDh0OItlsShjHQRjhxc,4607
|
||||||
|
unidecode/x057.py,sha256=uivN7P3d-kkonqBATLKOM0ni4jVvsSzA9SOEFhbOuP4,4627
|
||||||
|
unidecode/x058.py,sha256=lPNpdrFLFfaBoQz8Cwm2Ess8m4m_45ylIHspOUpDrLk,4664
|
||||||
|
unidecode/x059.py,sha256=BdA_NFQqr-aGpuyo9he6uxDwm9facV-ql5axiKqgByk,4640
|
||||||
|
unidecode/x05a.py,sha256=9UFNWH8FpkHUArS2-Td3VYOo21VQkoqYW7A0Slk0YhQ,4632
|
||||||
|
unidecode/x05b.py,sha256=yfWnRe6mtnqY3b3Ac2_IJBA5vBYb64PYF9XM4HSZygU,4666
|
||||||
|
unidecode/x05c.py,sha256=6iZj6HHnJ4lF3k1i68-9Dgge2H3KAlyZtNxW0BIu66o,4602
|
||||||
|
unidecode/x05d.py,sha256=Wudbb7xOtWry4Xu5xm9j80vFkigCedGq5uHcYAYl0o8,4660
|
||||||
|
unidecode/x05e.py,sha256=wKqvr0lkEy1yfXbYj2OtXHBxw5FxVz_MzJULXWrGvA0,4662
|
||||||
|
unidecode/x05f.py,sha256=NnSIJOl_9CC4IRwBIQ6CEhTfvvzZ2PXhZSLJuC6sgHY,4656
|
||||||
|
unidecode/x060.py,sha256=-Ajr6Q7RP_fdetvZ2hWflxNiaOokB3q5oeRCt7CqcDc,4640
|
||||||
|
unidecode/x061.py,sha256=aqOY7Jt--4JhdktU2RB1bf5J0fH27fRDLhV55aR3gO0,4656
|
||||||
|
unidecode/x062.py,sha256=wxQkvAGrppx4Y5E-hAVCps0I9bz_fbG1YSqs1E8k9sU,4616
|
||||||
|
unidecode/x063.py,sha256=wAcyLr9CJ35G4sNTfvYb7DtFjeRlyo585JC2_-aBuQM,4648
|
||||||
|
unidecode/x064.py,sha256=8e775dKt12GedypWT9jPXeqWLkW5-AsVG106FlfiTvA,4651
|
||||||
|
unidecode/x065.py,sha256=fPak6ADqEOBFPfP2u7pAIZ_ObbgtdGFa4enmjVBpsVE,4634
|
||||||
|
unidecode/x066.py,sha256=K6g6XTVEFEAppiln64vxgA2V1FMWl0YdbhDJgihQsTA,4675
|
||||||
|
unidecode/x067.py,sha256=5d8zLxoh2vS76uBWQckXGbeyjzEUJ5aJMAMvNA-YxLs,4627
|
||||||
|
unidecode/x068.py,sha256=-UhVYRQGQtxQJbgwyHAox-JHizu_RvO7Lb5I1F9mpvY,4670
|
||||||
|
unidecode/x069.py,sha256=cRQZP6ZGJQsx5l2qSfpe9XmiDfxlGh7rEh30_u9oTSo,4665
|
||||||
|
unidecode/x06a.py,sha256=iXZkuxRRsgUuNlVlNliR7gio4M4WUN0JNCPdINrzYlY,4662
|
||||||
|
unidecode/x06b.py,sha256=5GRxv36m9zR163UNrGb_c64-uueKrpqyeeRWG9ZDme0,4600
|
||||||
|
unidecode/x06c.py,sha256=RNKzdImtimBIuLtvbsUAzYSV7iZmVvPWyV8dj91KJlw,4637
|
||||||
|
unidecode/x06d.py,sha256=jFvmxRU4VHSeoahyFtHIHqpvfqvJbNzvsrDn4Kd7WAQ,4647
|
||||||
|
unidecode/x06e.py,sha256=1esJUSaQ4QotdjhxG6vtvC3CDWjY2rTr4EVLD4if8CU,4630
|
||||||
|
unidecode/x06f.py,sha256=s7JTw6eW_6pqjCc1DEMDQ178vtllhHiejtvb360vDVc,4638
|
||||||
|
unidecode/x070.py,sha256=oLeIanQmBbyz8OU_l5VQ-POF8mY5XbLL3rfEjr3XkUw,4677
|
||||||
|
unidecode/x071.py,sha256=v1S9E-H06WC0rr10gP27Dqev2nxRlymECJ681BSs9Y4,4644
|
||||||
|
unidecode/x072.py,sha256=veZOktQoJQ2wmKKLjq17UM5hAa3xo3nRLdFgSHjv8rI,4645
|
||||||
|
unidecode/x073.py,sha256=NWkyVIbNgSu_U9katu1LRaLkL7iHx4bSuRtfsqRG4yk,4642
|
||||||
|
unidecode/x074.py,sha256=AocniPNZMcBTeiDWA6OLzQilcWMc_ZHh7pCGXTzqMSg,4686
|
||||||
|
unidecode/x075.py,sha256=P3SrhI5BQ5sJ66hyu_LWDONpuzLZJBKsl7f-A37sJXc,4675
|
||||||
|
unidecode/x076.py,sha256=9rwfe41pej250BneHHO663PU9vVWyrnHRnP11VUqxEc,4635
|
||||||
|
unidecode/x077.py,sha256=ugbmqiry2-tBstXW0Q9o7XEZQimpagZK1EttvBCK1sE,4673
|
||||||
|
unidecode/x078.py,sha256=NxeTS_dXa6jmc7iDVUve6_SqO4AhjULng_Gei7pqbRE,4630
|
||||||
|
unidecode/x079.py,sha256=ucPPGrgm-AnnWdVFd__unqiSMtdEpZQF6E8ta6IzdiQ,4590
|
||||||
|
unidecode/x07a.py,sha256=fjyeO--0F5Kd80F0yOvFIIuiDW7lFKWaVIUqQRIwR9k,4659
|
||||||
|
unidecode/x07b.py,sha256=3g39Yw2ZMs7_tcC3OT2e4nGxaWMY6V8iJ2Z6PsnhPS4,4667
|
||||||
|
unidecode/x07c.py,sha256=Cbs98r7vdJD_YxpXgAAYoPdA7RDYR82MXN44TQJxoN8,4647
|
||||||
|
unidecode/x07d.py,sha256=EKFrTQTNFLGnsm3qI76ALxrxGCcDuyEbapi9j9jy1B4,4678
|
||||||
|
unidecode/x07e.py,sha256=r96YBkHoCO8GAvO0j3BdY45RdlNkqpiFWl-Q6mieVcc,4680
|
||||||
|
unidecode/x07f.py,sha256=MNRU4aNOE2dKl4p0_WPy-oga_cx7wZ6w4Mlk-RN3PeU,4658
|
||||||
|
unidecode/x080.py,sha256=9feIVoCdOFolKgZfRCpdL80l9kRvjbl0z9sV4FAk2Qg,4643
|
||||||
|
unidecode/x081.py,sha256=ffvplClKTCDre83MhO7-X3tgdUWfjvkUMxQCPEnRj_U,4671
|
||||||
|
unidecode/x082.py,sha256=XTFSjZO8LO3SFcYh9h-Oqby6a67hFDx4B-AQRyptlJU,4641
|
||||||
|
unidecode/x083.py,sha256=wXP1lZZAravJZm1f1bCT1cumocFGRG0ZQmgFMVCOSDQ,4635
|
||||||
|
unidecode/x084.py,sha256=inA5ODar8zAherLeTyX9-KtCUOrTigxDwb3ei2Kl1CE,4630
|
||||||
|
unidecode/x085.py,sha256=QDKK-wbb04nCFc91pSGhyHsxcS_MhdeQLsRqqXhV9h8,4628
|
||||||
|
unidecode/x086.py,sha256=DcXhJemXKgrGwPBRFCbINxfxatqjpy7jFgM9jbN8eEk,4608
|
||||||
|
unidecode/x087.py,sha256=nddqMqheth-n7kHCyjRNvVPO82UI_PdOic1kQer_iF0,4641
|
||||||
|
unidecode/x088.py,sha256=0PVL160fpQ-Kkw29X-bLviyfs4TKIAwp_-SwEWsvemM,4639
|
||||||
|
unidecode/x089.py,sha256=RrIGIX6dojryaYh6Da4ysaM_-yREbNZ-HasFX2O_SQc,4624
|
||||||
|
unidecode/x08a.py,sha256=NjMp9ck824PXG2gcJXfi_9oQCFgXhhiallO3bYCtXCE,4647
|
||||||
|
unidecode/x08b.py,sha256=vUwkG_IOBIhB8gQAaVbgD5EAIA1wY4BBPk5kXwAcPg0,4639
|
||||||
|
unidecode/x08c.py,sha256=0sHcCXB9YzXE9oJcwzPtPUltCn6Oo-itdY5vk6MbtdA,4628
|
||||||
|
unidecode/x08d.py,sha256=SWD7xSIR-1P30S5-yuNDHpVjWlpfxmUxuJr7f178WsA,4630
|
||||||
|
unidecode/x08e.py,sha256=Ym0RQUdsgZJdVmOI56nzSmzfxuKjuS5MUbPSOeyv2Ws,4655
|
||||||
|
unidecode/x08f.py,sha256=tNFpnEzNLIY4xHbcR0rZqaoNUKinj-XO2XfSnh6c4u4,4649
|
||||||
|
unidecode/x090.py,sha256=XGomJNriNZsHQRUDy3vKwFc4W38uxeqWpn5SHM4G4j8,4627
|
||||||
|
unidecode/x091.py,sha256=u8tRZhaVNa2mbsDSYIKqRZ3u4Npj-kiz55rC9izadnM,4653
|
||||||
|
unidecode/x092.py,sha256=NvNce8y3YFlPI20pN1a4LY68sid5ApetXs9bo9cxb7w,4644
|
||||||
|
unidecode/x093.py,sha256=O2e1p58RB1TS2Au-JSjft3FgPBx1YRAGxnviqSsfnYE,4646
|
||||||
|
unidecode/x094.py,sha256=k8ZwNc9qCSzU2b8wMrWUeGSg39tPMiwiKHCiKw6zteM,4653
|
||||||
|
unidecode/x095.py,sha256=H2O3xJDE3cAOecyYMUTl6fLs9shETPFwZshtIIK5V3E,4667
|
||||||
|
unidecode/x096.py,sha256=sev3zRm46EBQgEtkR4T-Ah0cHYEM-9CM2pFCCc21BFI,4608
|
||||||
|
unidecode/x097.py,sha256=S1nZBdt-MHySCAgV9MDdNSQTCSaD62iAhz8EjikfS5A,4633
|
||||||
|
unidecode/x098.py,sha256=w0KMxUF7XyG9gdfTJylYsG_clvm3RD_LIM5XHR0xsdY,4643
|
||||||
|
unidecode/x099.py,sha256=nlaWb2nRTSnFfDjseDRJ1a3Y0okOHbNA1-htKo9SkAM,4627
|
||||||
|
unidecode/x09a.py,sha256=Z8pQsTc62CWgm0JPnj3kokKKf9_qfzRpo0u5iH61CaE,4623
|
||||||
|
unidecode/x09b.py,sha256=njA75MlCgC-5UuS1Hvm-mdgsVwW9r801odfBTJg-BFE,4653
|
||||||
|
unidecode/x09c.py,sha256=NveMhN85_Cm4H1cnfHDTcnSj675MOVBq9Lkjpw3YxA0,4659
|
||||||
|
unidecode/x09d.py,sha256=_0fAaUhK3axhhWLA4QPNJf_J9YSs1MCKx2xR-vl5QYI,4630
|
||||||
|
unidecode/x09e.py,sha256=wreETFCeKf9bVvLc3E7MUAvlu2CN5xKeebf3ESuV13s,4613
|
||||||
|
unidecode/x09f.py,sha256=pNAdX7-9yMEPXtozjCuXxzc74eCVft9meOTxCtU7vJw,4420
|
||||||
|
unidecode/x0a0.py,sha256=EpopPuuocybgCcpX19Ii-udqsPXJjSces3360lqJ8vs,4428
|
||||||
|
unidecode/x0a1.py,sha256=0hvF77d5E640SujjdHVqy5gMUH85gEdOv80eRvCEAGM,4469
|
||||||
|
unidecode/x0a2.py,sha256=9Icpfk_ElebYd_xN09OMziFrpAGPXEUNVmawpnhbBaQ,4503
|
||||||
|
unidecode/x0a3.py,sha256=G1lPrnCqYz0s4wsSa1qM0WgrZBWO_beRk3AgK0iVZLA,4521
|
||||||
|
unidecode/x0a4.py,sha256=nWPXzCragW0rsDQPa6ooo9KOc-SOjVCP8KIOuGc7WpU,4373
|
||||||
|
unidecode/x0ac.py,sha256=wj7hl88VlCdc_eGpOL4m4CBJILyQqd9atObC5Xvd0aA,4709
|
||||||
|
unidecode/x0ad.py,sha256=Rz5rn0fM-CqRjaN4TvSq_1StAQdyAF2WX3cUvcQHaWU,4766
|
||||||
|
unidecode/x0ae.py,sha256=jNIBVB-Pw2ZNihAeyWbDIEq9Yt9zlhdfGylfvAaxUks,4875
|
||||||
|
unidecode/x0af.py,sha256=Am5YC8Zfrun5NUKxU6LrU2-d5GgkGSBs7fZt2rqSi74,5012
|
||||||
|
unidecode/x0b0.py,sha256=1bgHerCDAqIcJHYeGddJjJfRWiHCKtU2B0J-XGvcbbc,4853
|
||||||
|
unidecode/x0b1.py,sha256=Six-lzGdvgJx4YsIa0lTusnBEV1zbCKQCquq17TDJoQ,4746
|
||||||
|
unidecode/x0b2.py,sha256=HQDbmglNi4QfiRSGucUclgq_4FGpRjbJkWU1JTLAFGc,4680
|
||||||
|
unidecode/x0b3.py,sha256=1lqxghVZiiStOAx1IG_vc1zZTXrAa7Z__QY6ZWvo2aA,4741
|
||||||
|
unidecode/x0b4.py,sha256=V6BNSTxpyP8VuqF7x5z7bpF3MQAkwZfKtEu6NFr_vSg,4762
|
||||||
|
unidecode/x0b5.py,sha256=9NVd2hNLyRlLceVlznba1dreqBGeKU_0gzmkgAw0gyg,4919
|
||||||
|
unidecode/x0b6.py,sha256=V_vRsB0GICu9hqhO4pnbPWreDSevJ3bbmLRJkuQUxnE,4996
|
||||||
|
unidecode/x0b7.py,sha256=CwBaCBICyVagnFjUpkwabuDvBJw7gAeqkSRpfBAVv8s,4833
|
||||||
|
unidecode/x0b8.py,sha256=xYp-xy2LIwq95OWyS9vYMc_Z5od9dud0W1dxeg4P_Jk,4714
|
||||||
|
unidecode/x0b9.py,sha256=z3hKNzBq_MeK9V3AyQzaY58cgi0-VGOsLk3-UFmszLQ,4704
|
||||||
|
unidecode/x0ba.py,sha256=4gubifoBeJUUrwXEI4litJygekufEycmWDLrJ-Qvs14,4765
|
||||||
|
unidecode/x0bb.py,sha256=bsCTABUdC6yTn8_0vhYe5jRP1z_BoAdificB8Y1c1hA,4730
|
||||||
|
unidecode/x0bc.py,sha256=AhQvAz7yHlbQ_4c2KOIisq07eZJ5JQn6cV8I31oT9kg,4707
|
||||||
|
unidecode/x0bd.py,sha256=IGtyVxIUr1mU3hokn6iUDJhXZezQozVvfWOyf4Pa5dI,4752
|
||||||
|
unidecode/x0be.py,sha256=1D-hXu3p3wvOnGVMjEqVsrltYe7UuSwit2yqN5eFizc,4849
|
||||||
|
unidecode/x0bf.py,sha256=NkEXqr2ER3BNFkTasDV9CHnkRBuX_Ao5OHGv_NgKAew,5010
|
||||||
|
unidecode/x0c0.py,sha256=zDlHpyM0omza5TqGLb8Rhl7Wd-LlV1AjvH_xdnEnNFw,4856
|
||||||
|
unidecode/x0c1.py,sha256=AC6xJyx9UblKAGNqGN7AH2Idb3_3vbc-I5U0Myig5fA,4765
|
||||||
|
unidecode/x0c2.py,sha256=siRYLA8Cv9Z8XsRp3WQOBdRrPkjJOuEh8z1-3SMXOzQ,4710
|
||||||
|
unidecode/x0c3.py,sha256=hlAFe6lsz0aLMixlpeFjV4I-WTIiA3B2BU58yGlTwRg,4975
|
||||||
|
unidecode/x0c4.py,sha256=z3xZwSkf5ru1FCdBMHOr5fyglzVdyPhQVtWjq9xInsQ,5024
|
||||||
|
unidecode/x0c5.py,sha256=F-DR0eVMRkemOnNXOtDjI5i6gW9136XLmWM_yMVvc84,4581
|
||||||
|
unidecode/x0c6.py,sha256=7p_jMrHf3WUa_zANms-RGVN1bAeshgWLkC16_VcSawA,4490
|
||||||
|
unidecode/x0c7.py,sha256=5eOAq4jFsPZ-zKO7lHzAGj_EvXdaMC4Kud7gvE-B7Tg,4564
|
||||||
|
unidecode/x0c8.py,sha256=wltKvhBgn51jULzwUnEbmyDuK9JvQpQee0uTKK42-20,4733
|
||||||
|
unidecode/x0c9.py,sha256=GoARON07wCoHN2wRHb5fvzqE9L3Yme2hKeciynUIAIk,4722
|
||||||
|
unidecode/x0ca.py,sha256=BsBZTNj3npIkdo3L9pSEX7XvDT68KV7wFtOOwyEb2So,5007
|
||||||
|
unidecode/x0cb.py,sha256=8T7vnJMRmYGyySYthMWz0bgN-MremktGImjejodFeMo,5012
|
||||||
|
unidecode/x0cc.py,sha256=GKoHN-4vL4Y3EL42G0xbN74Tgspew1oMvxQtsIa3ess,4749
|
||||||
|
unidecode/x0cd.py,sha256=7sZ05OjugbaombMRDYOVxgstZbXMcuX5kHFheKv4W2E,4738
|
||||||
|
unidecode/x0ce.py,sha256=mOEHFrsAwIvcTnh7OKVK5qbuXUXHfJOR7D4FtXsQmao,4708
|
||||||
|
unidecode/x0cf.py,sha256=H9PeYcbOG68F_yc7zsELUuN05ANfFNOUX-e3-gzx7Ow,4713
|
||||||
|
unidecode/x0d0.py,sha256=eULqcGHPmaoEdl0EwRB5wWSu8M43bp4HoFo5gGljacg,4706
|
||||||
|
unidecode/x0d1.py,sha256=BClLDAjPgsAX6MJCsuHfmfuhH9qfzUy_vb-d9zBs3Oc,4767
|
||||||
|
unidecode/x0d2.py,sha256=e74nqGo4E4sF1sy8qBFu2ecWoRfJdoXI1xRFRPqYEz8,4724
|
||||||
|
unidecode/x0d3.py,sha256=8-UmvJ3-ILXo9d3GA-ReOE4OfUenL3tVUJYldZ9gHu0,4705
|
||||||
|
unidecode/x0d4.py,sha256=fwUmzksoddTKB8fH2rZMxRK3pJtLrxhcrYpHfBauAwE,4758
|
||||||
|
unidecode/x0d5.py,sha256=rANSL5ndzLgSgYJQNEw57AfXpicRe7pvHRlKTPb4-QQ,4680
|
||||||
|
unidecode/x0d6.py,sha256=fT8_cRzp7y60IIhn87kM9lLehKGAg5wYmfFOwgGp6e0,4765
|
||||||
|
unidecode/x0d7.py,sha256=40-m7uKNvylWCcVBuTXrbiP6Lrj_4d4PWgLcX8670Kk,4468
|
||||||
|
unidecode/x0f9.py,sha256=2PD0_fpDnaFO9ftICjYSOhnjAfBppjsj1TcLIuYjnCI,4567
|
||||||
|
unidecode/x0fa.py,sha256=XHxCfXOhHDqzjG0Nw6n1sT5Q_MKLCovPFe-22IQxVXU,4172
|
||||||
|
unidecode/x0fb.py,sha256=n_5urRXj6Ecf0MKMnuwNY0UK6TJtUW2hKcNLQqa2Gf8,3787
|
||||||
|
unidecode/x0fc.py,sha256=KcyQnyv7gxNeVcAnRwQrm4NlabZE3CrnmtLqXj_7te8,3595
|
||||||
|
unidecode/x0fd.py,sha256=mVHMrX8AhRzwCkMNA4sJkhwirK3BqmNv6YZfyCpE9Is,3703
|
||||||
|
unidecode/x0fe.py,sha256=CrdwUOf0sl8yUfOFnXOXFZ8U662dQThpGMwGBkY8cJ4,3769
|
||||||
|
unidecode/x0ff.py,sha256=Ijfv5VVDCTWRzRqwMYSp0fSycy176gn7P8ut8x3bv-w,3957
|
||||||
|
unidecode/x1d4.py,sha256=xzL0OicR95IWq6LiApIPEgPoST8dyVgYuIUGxkz1b28,3863
|
||||||
|
unidecode/x1d5.py,sha256=bmTSTgWnsLP7yUDZq2Irtz84Zm7bmLzYzurY0eI0uIU,3863
|
||||||
|
unidecode/x1d6.py,sha256=8H0RmEfbY82X1iQwr0vcsgQGCvGKv19_773K_T2NI2A,4052
|
||||||
|
unidecode/x1d7.py,sha256=yyHV2dCo1p_m_QVgz1H9S6XqeiN9GpGxB-ZqAW7l5ts,4057
|
||||||
|
unidecode/x1f1.py,sha256=DCqXkVY5RHyMhYdgn_nZhLYxsbMNhdT8oXzLs9g9YWc,4303
|
||||||
|
unidecode/x1f6.py,sha256=Ji4t-EFmJmo3CDeZ0yD7pX58hj5fQQc99TOrD-yad9k,4103
|
@ -0,0 +1,5 @@
|
|||||||
|
Wheel-Version: 1.0
|
||||||
|
Generator: bdist_wheel (0.32.3)
|
||||||
|
Root-Is-Purelib: true
|
||||||
|
Tag: py3-none-any
|
||||||
|
|
@ -0,0 +1,3 @@
|
|||||||
|
[console_scripts]
|
||||||
|
unidecode = unidecode.util:main
|
||||||
|
|
@ -0,0 +1 @@
|
|||||||
|
unidecode
|
Binary file not shown.
222
.venv/lib/python3.11/site-packages/_distutils_hack/__init__.py
Normal file
222
.venv/lib/python3.11/site-packages/_distutils_hack/__init__.py
Normal file
@ -0,0 +1,222 @@
|
|||||||
|
# don't import any costly modules
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
|
is_pypy = '__pypy__' in sys.builtin_module_names
|
||||||
|
|
||||||
|
|
||||||
|
def warn_distutils_present():
|
||||||
|
if 'distutils' not in sys.modules:
|
||||||
|
return
|
||||||
|
if is_pypy and sys.version_info < (3, 7):
|
||||||
|
# PyPy for 3.6 unconditionally imports distutils, so bypass the warning
|
||||||
|
# https://foss.heptapod.net/pypy/pypy/-/blob/be829135bc0d758997b3566062999ee8b23872b4/lib-python/3/site.py#L250
|
||||||
|
return
|
||||||
|
import warnings
|
||||||
|
|
||||||
|
warnings.warn(
|
||||||
|
"Distutils was imported before Setuptools, but importing Setuptools "
|
||||||
|
"also replaces the `distutils` module in `sys.modules`. This may lead "
|
||||||
|
"to undesirable behaviors or errors. To avoid these issues, avoid "
|
||||||
|
"using distutils directly, ensure that setuptools is installed in the "
|
||||||
|
"traditional way (e.g. not an editable install), and/or make sure "
|
||||||
|
"that setuptools is always imported before distutils."
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def clear_distutils():
|
||||||
|
if 'distutils' not in sys.modules:
|
||||||
|
return
|
||||||
|
import warnings
|
||||||
|
|
||||||
|
warnings.warn("Setuptools is replacing distutils.")
|
||||||
|
mods = [
|
||||||
|
name
|
||||||
|
for name in sys.modules
|
||||||
|
if name == "distutils" or name.startswith("distutils.")
|
||||||
|
]
|
||||||
|
for name in mods:
|
||||||
|
del sys.modules[name]
|
||||||
|
|
||||||
|
|
||||||
|
def enabled():
|
||||||
|
"""
|
||||||
|
Allow selection of distutils by environment variable.
|
||||||
|
"""
|
||||||
|
which = os.environ.get('SETUPTOOLS_USE_DISTUTILS', 'local')
|
||||||
|
return which == 'local'
|
||||||
|
|
||||||
|
|
||||||
|
def ensure_local_distutils():
|
||||||
|
import importlib
|
||||||
|
|
||||||
|
clear_distutils()
|
||||||
|
|
||||||
|
# With the DistutilsMetaFinder in place,
|
||||||
|
# perform an import to cause distutils to be
|
||||||
|
# loaded from setuptools._distutils. Ref #2906.
|
||||||
|
with shim():
|
||||||
|
importlib.import_module('distutils')
|
||||||
|
|
||||||
|
# check that submodules load as expected
|
||||||
|
core = importlib.import_module('distutils.core')
|
||||||
|
assert '_distutils' in core.__file__, core.__file__
|
||||||
|
assert 'setuptools._distutils.log' not in sys.modules
|
||||||
|
|
||||||
|
|
||||||
|
def do_override():
|
||||||
|
"""
|
||||||
|
Ensure that the local copy of distutils is preferred over stdlib.
|
||||||
|
|
||||||
|
See https://github.com/pypa/setuptools/issues/417#issuecomment-392298401
|
||||||
|
for more motivation.
|
||||||
|
"""
|
||||||
|
if enabled():
|
||||||
|
warn_distutils_present()
|
||||||
|
ensure_local_distutils()
|
||||||
|
|
||||||
|
|
||||||
|
class _TrivialRe:
|
||||||
|
def __init__(self, *patterns):
|
||||||
|
self._patterns = patterns
|
||||||
|
|
||||||
|
def match(self, string):
|
||||||
|
return all(pat in string for pat in self._patterns)
|
||||||
|
|
||||||
|
|
||||||
|
class DistutilsMetaFinder:
|
||||||
|
def find_spec(self, fullname, path, target=None):
|
||||||
|
# optimization: only consider top level modules and those
|
||||||
|
# found in the CPython test suite.
|
||||||
|
if path is not None and not fullname.startswith('test.'):
|
||||||
|
return
|
||||||
|
|
||||||
|
method_name = 'spec_for_{fullname}'.format(**locals())
|
||||||
|
method = getattr(self, method_name, lambda: None)
|
||||||
|
return method()
|
||||||
|
|
||||||
|
def spec_for_distutils(self):
|
||||||
|
if self.is_cpython():
|
||||||
|
return
|
||||||
|
|
||||||
|
import importlib
|
||||||
|
import importlib.abc
|
||||||
|
import importlib.util
|
||||||
|
|
||||||
|
try:
|
||||||
|
mod = importlib.import_module('setuptools._distutils')
|
||||||
|
except Exception:
|
||||||
|
# There are a couple of cases where setuptools._distutils
|
||||||
|
# may not be present:
|
||||||
|
# - An older Setuptools without a local distutils is
|
||||||
|
# taking precedence. Ref #2957.
|
||||||
|
# - Path manipulation during sitecustomize removes
|
||||||
|
# setuptools from the path but only after the hook
|
||||||
|
# has been loaded. Ref #2980.
|
||||||
|
# In either case, fall back to stdlib behavior.
|
||||||
|
return
|
||||||
|
|
||||||
|
class DistutilsLoader(importlib.abc.Loader):
|
||||||
|
def create_module(self, spec):
|
||||||
|
mod.__name__ = 'distutils'
|
||||||
|
return mod
|
||||||
|
|
||||||
|
def exec_module(self, module):
|
||||||
|
pass
|
||||||
|
|
||||||
|
return importlib.util.spec_from_loader(
|
||||||
|
'distutils', DistutilsLoader(), origin=mod.__file__
|
||||||
|
)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def is_cpython():
|
||||||
|
"""
|
||||||
|
Suppress supplying distutils for CPython (build and tests).
|
||||||
|
Ref #2965 and #3007.
|
||||||
|
"""
|
||||||
|
return os.path.isfile('pybuilddir.txt')
|
||||||
|
|
||||||
|
def spec_for_pip(self):
|
||||||
|
"""
|
||||||
|
Ensure stdlib distutils when running under pip.
|
||||||
|
See pypa/pip#8761 for rationale.
|
||||||
|
"""
|
||||||
|
if self.pip_imported_during_build():
|
||||||
|
return
|
||||||
|
clear_distutils()
|
||||||
|
self.spec_for_distutils = lambda: None
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def pip_imported_during_build(cls):
|
||||||
|
"""
|
||||||
|
Detect if pip is being imported in a build script. Ref #2355.
|
||||||
|
"""
|
||||||
|
import traceback
|
||||||
|
|
||||||
|
return any(
|
||||||
|
cls.frame_file_is_setup(frame) for frame, line in traceback.walk_stack(None)
|
||||||
|
)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def frame_file_is_setup(frame):
|
||||||
|
"""
|
||||||
|
Return True if the indicated frame suggests a setup.py file.
|
||||||
|
"""
|
||||||
|
# some frames may not have __file__ (#2940)
|
||||||
|
return frame.f_globals.get('__file__', '').endswith('setup.py')
|
||||||
|
|
||||||
|
def spec_for_sensitive_tests(self):
|
||||||
|
"""
|
||||||
|
Ensure stdlib distutils when running select tests under CPython.
|
||||||
|
|
||||||
|
python/cpython#91169
|
||||||
|
"""
|
||||||
|
clear_distutils()
|
||||||
|
self.spec_for_distutils = lambda: None
|
||||||
|
|
||||||
|
sensitive_tests = (
|
||||||
|
[
|
||||||
|
'test.test_distutils',
|
||||||
|
'test.test_peg_generator',
|
||||||
|
'test.test_importlib',
|
||||||
|
]
|
||||||
|
if sys.version_info < (3, 10)
|
||||||
|
else [
|
||||||
|
'test.test_distutils',
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
for name in DistutilsMetaFinder.sensitive_tests:
|
||||||
|
setattr(
|
||||||
|
DistutilsMetaFinder,
|
||||||
|
f'spec_for_{name}',
|
||||||
|
DistutilsMetaFinder.spec_for_sensitive_tests,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
DISTUTILS_FINDER = DistutilsMetaFinder()
|
||||||
|
|
||||||
|
|
||||||
|
def add_shim():
|
||||||
|
DISTUTILS_FINDER in sys.meta_path or insert_shim()
|
||||||
|
|
||||||
|
|
||||||
|
class shim:
|
||||||
|
def __enter__(self):
|
||||||
|
insert_shim()
|
||||||
|
|
||||||
|
def __exit__(self, exc, value, tb):
|
||||||
|
remove_shim()
|
||||||
|
|
||||||
|
|
||||||
|
def insert_shim():
|
||||||
|
sys.meta_path.insert(0, DISTUTILS_FINDER)
|
||||||
|
|
||||||
|
|
||||||
|
def remove_shim():
|
||||||
|
try:
|
||||||
|
sys.meta_path.remove(DISTUTILS_FINDER)
|
||||||
|
except ValueError:
|
||||||
|
pass
|
Binary file not shown.
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
__import__('_distutils_hack').do_override()
|
@ -0,0 +1 @@
|
|||||||
|
pip
|
@ -0,0 +1,20 @@
|
|||||||
|
Copyright 2010 Jason Kirtland
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
copy of this software and associated documentation files (the
|
||||||
|
"Software"), to deal in the Software without restriction, including
|
||||||
|
without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
distribute, sublicense, and/or sell copies of the Software, and to
|
||||||
|
permit persons to whom the Software is furnished to do so, subject to
|
||||||
|
the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included
|
||||||
|
in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
|
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||||
|
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||||
|
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||||
|
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||||
|
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@ -0,0 +1,63 @@
|
|||||||
|
Metadata-Version: 2.1
|
||||||
|
Name: blinker
|
||||||
|
Version: 1.6.2
|
||||||
|
Summary: Fast, simple object-to-object and broadcast signaling
|
||||||
|
Author-email: Jason Kirtland <jek@discorporate.us>
|
||||||
|
Maintainer-email: Pallets Ecosystem <contact@palletsprojects.com>
|
||||||
|
License: MIT License
|
||||||
|
Project-URL: Homepage, https://blinker.readthedocs.io
|
||||||
|
Project-URL: Documentation, https://blinker.readthedocs.io
|
||||||
|
Project-URL: Source Code, https://github.com/pallets-eco/blinker/
|
||||||
|
Project-URL: Issue Tracker, https://github.com/pallets-eco/blinker/issues/
|
||||||
|
Project-URL: Chat, https://discord.gg/pallets
|
||||||
|
Keywords: signal,emit,events,broadcast
|
||||||
|
Classifier: Development Status :: 5 - Production/Stable
|
||||||
|
Classifier: Intended Audience :: Developers
|
||||||
|
Classifier: License :: OSI Approved :: MIT License
|
||||||
|
Classifier: Operating System :: OS Independent
|
||||||
|
Classifier: Programming Language :: Python
|
||||||
|
Classifier: Topic :: Software Development :: Libraries
|
||||||
|
Requires-Python: >=3.7
|
||||||
|
Description-Content-Type: text/x-rst
|
||||||
|
License-File: LICENSE.rst
|
||||||
|
|
||||||
|
Blinker
|
||||||
|
=======
|
||||||
|
|
||||||
|
Blinker provides a fast dispatching system that allows any number of
|
||||||
|
interested parties to subscribe to events, or "signals".
|
||||||
|
|
||||||
|
Signal receivers can subscribe to specific senders or receive signals
|
||||||
|
sent by any sender.
|
||||||
|
|
||||||
|
.. code-block:: pycon
|
||||||
|
|
||||||
|
>>> from blinker import signal
|
||||||
|
>>> started = signal('round-started')
|
||||||
|
>>> def each(round):
|
||||||
|
... print(f"Round {round}")
|
||||||
|
...
|
||||||
|
>>> started.connect(each)
|
||||||
|
|
||||||
|
>>> def round_two(round):
|
||||||
|
... print("This is round two.")
|
||||||
|
...
|
||||||
|
>>> started.connect(round_two, sender=2)
|
||||||
|
|
||||||
|
>>> for round in range(1, 4):
|
||||||
|
... started.send(round)
|
||||||
|
...
|
||||||
|
Round 1!
|
||||||
|
Round 2!
|
||||||
|
This is round two.
|
||||||
|
Round 3!
|
||||||
|
|
||||||
|
|
||||||
|
Links
|
||||||
|
-----
|
||||||
|
|
||||||
|
- Documentation: https://blinker.readthedocs.io/
|
||||||
|
- Changes: https://blinker.readthedocs.io/#changes
|
||||||
|
- PyPI Releases: https://pypi.org/project/blinker/
|
||||||
|
- Source Code: https://github.com/pallets-eco/blinker/
|
||||||
|
- Issue Tracker: https://github.com/pallets-eco/blinker/issues/
|
@ -0,0 +1,15 @@
|
|||||||
|
blinker-1.6.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||||
|
blinker-1.6.2.dist-info/LICENSE.rst,sha256=nrc6HzhZekqhcCXSrhvjg5Ykx5XphdTw6Xac4p-spGc,1054
|
||||||
|
blinker-1.6.2.dist-info/METADATA,sha256=7MRskabu2wQvWIMFwgqP3w2LDt8nR5nCxH7Anu1ZrBM,1964
|
||||||
|
blinker-1.6.2.dist-info/RECORD,,
|
||||||
|
blinker-1.6.2.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
|
||||||
|
blinker-1.6.2.dist-info/top_level.txt,sha256=2NmsENM0J2t9Z8mkjxHDmGMQj7Bm8f5ZTTYe1x1fZtM,8
|
||||||
|
blinker/__init__.py,sha256=Ko7EbvxyCl_UewgsP8XgDJqJcHZA7EsuhG72R_zDrcY,408
|
||||||
|
blinker/__pycache__/__init__.cpython-311.pyc,,
|
||||||
|
blinker/__pycache__/_saferef.cpython-311.pyc,,
|
||||||
|
blinker/__pycache__/_utilities.cpython-311.pyc,,
|
||||||
|
blinker/__pycache__/base.cpython-311.pyc,,
|
||||||
|
blinker/_saferef.py,sha256=kWOTIWnCY3kOb8lZP74Rbx7bR_BLVg4TjwzNCRLhKHs,9096
|
||||||
|
blinker/_utilities.py,sha256=GPXtJzykzVotoxHC79mgFQMPJtICwpVDCCpus4_JtsA,4110
|
||||||
|
blinker/base.py,sha256=7Y-C0ZVIe-NrrskPeqj0bLSp4R6Cpq5LrzI1DmLqMEA,20469
|
||||||
|
blinker/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@ -0,0 +1,5 @@
|
|||||||
|
Wheel-Version: 1.0
|
||||||
|
Generator: bdist_wheel (0.40.0)
|
||||||
|
Root-Is-Purelib: true
|
||||||
|
Tag: py3-none-any
|
||||||
|
|
@ -0,0 +1 @@
|
|||||||
|
blinker
|
19
.venv/lib/python3.11/site-packages/blinker/__init__.py
Normal file
19
.venv/lib/python3.11/site-packages/blinker/__init__.py
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
from blinker.base import ANY
|
||||||
|
from blinker.base import NamedSignal
|
||||||
|
from blinker.base import Namespace
|
||||||
|
from blinker.base import receiver_connected
|
||||||
|
from blinker.base import Signal
|
||||||
|
from blinker.base import signal
|
||||||
|
from blinker.base import WeakNamespace
|
||||||
|
|
||||||
|
__all__ = [
|
||||||
|
"ANY",
|
||||||
|
"NamedSignal",
|
||||||
|
"Namespace",
|
||||||
|
"Signal",
|
||||||
|
"WeakNamespace",
|
||||||
|
"receiver_connected",
|
||||||
|
"signal",
|
||||||
|
]
|
||||||
|
|
||||||
|
__version__ = "1.6.2"
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
230
.venv/lib/python3.11/site-packages/blinker/_saferef.py
Normal file
230
.venv/lib/python3.11/site-packages/blinker/_saferef.py
Normal file
@ -0,0 +1,230 @@
|
|||||||
|
# extracted from Louie, http://pylouie.org/
|
||||||
|
# updated for Python 3
|
||||||
|
#
|
||||||
|
# Copyright (c) 2006 Patrick K. O'Brien, Mike C. Fletcher,
|
||||||
|
# Matthew R. Scott
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions are
|
||||||
|
# met:
|
||||||
|
#
|
||||||
|
# * Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
#
|
||||||
|
# * Redistributions in binary form must reproduce the above
|
||||||
|
# copyright notice, this list of conditions and the following
|
||||||
|
# disclaimer in the documentation and/or other materials provided
|
||||||
|
# with the distribution.
|
||||||
|
#
|
||||||
|
# * Neither the name of the <ORGANIZATION> nor the names of its
|
||||||
|
# contributors may be used to endorse or promote products derived
|
||||||
|
# from this software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
"""Refactored 'safe reference from dispatcher.py"""
|
||||||
|
import operator
|
||||||
|
import sys
|
||||||
|
import traceback
|
||||||
|
import weakref
|
||||||
|
|
||||||
|
|
||||||
|
get_self = operator.attrgetter("__self__")
|
||||||
|
get_func = operator.attrgetter("__func__")
|
||||||
|
|
||||||
|
|
||||||
|
def safe_ref(target, on_delete=None):
|
||||||
|
"""Return a *safe* weak reference to a callable target.
|
||||||
|
|
||||||
|
- ``target``: The object to be weakly referenced, if it's a bound
|
||||||
|
method reference, will create a BoundMethodWeakref, otherwise
|
||||||
|
creates a simple weakref.
|
||||||
|
|
||||||
|
- ``on_delete``: If provided, will have a hard reference stored to
|
||||||
|
the callable to be called after the safe reference goes out of
|
||||||
|
scope with the reference object, (either a weakref or a
|
||||||
|
BoundMethodWeakref) as argument.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
im_self = get_self(target)
|
||||||
|
except AttributeError:
|
||||||
|
if callable(on_delete):
|
||||||
|
return weakref.ref(target, on_delete)
|
||||||
|
else:
|
||||||
|
return weakref.ref(target)
|
||||||
|
else:
|
||||||
|
if im_self is not None:
|
||||||
|
# Turn a bound method into a BoundMethodWeakref instance.
|
||||||
|
# Keep track of these instances for lookup by disconnect().
|
||||||
|
assert hasattr(target, "im_func") or hasattr(target, "__func__"), (
|
||||||
|
f"safe_ref target {target!r} has im_self, but no im_func, "
|
||||||
|
"don't know how to create reference"
|
||||||
|
)
|
||||||
|
reference = BoundMethodWeakref(target=target, on_delete=on_delete)
|
||||||
|
return reference
|
||||||
|
|
||||||
|
|
||||||
|
class BoundMethodWeakref:
|
||||||
|
"""'Safe' and reusable weak references to instance methods.
|
||||||
|
|
||||||
|
BoundMethodWeakref objects provide a mechanism for referencing a
|
||||||
|
bound method without requiring that the method object itself
|
||||||
|
(which is normally a transient object) is kept alive. Instead,
|
||||||
|
the BoundMethodWeakref object keeps weak references to both the
|
||||||
|
object and the function which together define the instance method.
|
||||||
|
|
||||||
|
Attributes:
|
||||||
|
|
||||||
|
- ``key``: The identity key for the reference, calculated by the
|
||||||
|
class's calculate_key method applied to the target instance method.
|
||||||
|
|
||||||
|
- ``deletion_methods``: Sequence of callable objects taking single
|
||||||
|
argument, a reference to this object which will be called when
|
||||||
|
*either* the target object or target function is garbage
|
||||||
|
collected (i.e. when this object becomes invalid). These are
|
||||||
|
specified as the on_delete parameters of safe_ref calls.
|
||||||
|
|
||||||
|
- ``weak_self``: Weak reference to the target object.
|
||||||
|
|
||||||
|
- ``weak_func``: Weak reference to the target function.
|
||||||
|
|
||||||
|
Class Attributes:
|
||||||
|
|
||||||
|
- ``_all_instances``: Class attribute pointing to all live
|
||||||
|
BoundMethodWeakref objects indexed by the class's
|
||||||
|
calculate_key(target) method applied to the target objects.
|
||||||
|
This weak value dictionary is used to short-circuit creation so
|
||||||
|
that multiple references to the same (object, function) pair
|
||||||
|
produce the same BoundMethodWeakref instance.
|
||||||
|
"""
|
||||||
|
|
||||||
|
_all_instances = weakref.WeakValueDictionary() # type: ignore[var-annotated]
|
||||||
|
|
||||||
|
def __new__(cls, target, on_delete=None, *arguments, **named):
|
||||||
|
"""Create new instance or return current instance.
|
||||||
|
|
||||||
|
Basically this method of construction allows us to
|
||||||
|
short-circuit creation of references to already-referenced
|
||||||
|
instance methods. The key corresponding to the target is
|
||||||
|
calculated, and if there is already an existing reference,
|
||||||
|
that is returned, with its deletion_methods attribute updated.
|
||||||
|
Otherwise the new instance is created and registered in the
|
||||||
|
table of already-referenced methods.
|
||||||
|
"""
|
||||||
|
key = cls.calculate_key(target)
|
||||||
|
current = cls._all_instances.get(key)
|
||||||
|
if current is not None:
|
||||||
|
current.deletion_methods.append(on_delete)
|
||||||
|
return current
|
||||||
|
else:
|
||||||
|
base = super().__new__(cls)
|
||||||
|
cls._all_instances[key] = base
|
||||||
|
base.__init__(target, on_delete, *arguments, **named)
|
||||||
|
return base
|
||||||
|
|
||||||
|
def __init__(self, target, on_delete=None):
|
||||||
|
"""Return a weak-reference-like instance for a bound method.
|
||||||
|
|
||||||
|
- ``target``: The instance-method target for the weak reference,
|
||||||
|
must have im_self and im_func attributes and be
|
||||||
|
reconstructable via the following, which is true of built-in
|
||||||
|
instance methods::
|
||||||
|
|
||||||
|
target.im_func.__get__( target.im_self )
|
||||||
|
|
||||||
|
- ``on_delete``: Optional callback which will be called when
|
||||||
|
this weak reference ceases to be valid (i.e. either the
|
||||||
|
object or the function is garbage collected). Should take a
|
||||||
|
single argument, which will be passed a pointer to this
|
||||||
|
object.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def remove(weak, self=self):
|
||||||
|
"""Set self.isDead to True when method or instance is destroyed."""
|
||||||
|
methods = self.deletion_methods[:]
|
||||||
|
del self.deletion_methods[:]
|
||||||
|
try:
|
||||||
|
del self.__class__._all_instances[self.key]
|
||||||
|
except KeyError:
|
||||||
|
pass
|
||||||
|
for function in methods:
|
||||||
|
try:
|
||||||
|
if callable(function):
|
||||||
|
function(self)
|
||||||
|
except Exception:
|
||||||
|
try:
|
||||||
|
traceback.print_exc()
|
||||||
|
except AttributeError:
|
||||||
|
e = sys.exc_info()[1]
|
||||||
|
print(
|
||||||
|
f"Exception during saferef {self} "
|
||||||
|
f"cleanup function {function}: {e}"
|
||||||
|
)
|
||||||
|
|
||||||
|
self.deletion_methods = [on_delete]
|
||||||
|
self.key = self.calculate_key(target)
|
||||||
|
im_self = get_self(target)
|
||||||
|
im_func = get_func(target)
|
||||||
|
self.weak_self = weakref.ref(im_self, remove)
|
||||||
|
self.weak_func = weakref.ref(im_func, remove)
|
||||||
|
self.self_name = str(im_self)
|
||||||
|
self.func_name = str(im_func.__name__)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def calculate_key(cls, target):
|
||||||
|
"""Calculate the reference key for this reference.
|
||||||
|
|
||||||
|
Currently this is a two-tuple of the id()'s of the target
|
||||||
|
object and the target function respectively.
|
||||||
|
"""
|
||||||
|
return (id(get_self(target)), id(get_func(target)))
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
"""Give a friendly representation of the object."""
|
||||||
|
return "{}({}.{})".format(
|
||||||
|
self.__class__.__name__,
|
||||||
|
self.self_name,
|
||||||
|
self.func_name,
|
||||||
|
)
|
||||||
|
|
||||||
|
__repr__ = __str__
|
||||||
|
|
||||||
|
def __hash__(self):
|
||||||
|
return hash((self.self_name, self.key))
|
||||||
|
|
||||||
|
def __nonzero__(self):
|
||||||
|
"""Whether we are still a valid reference."""
|
||||||
|
return self() is not None
|
||||||
|
|
||||||
|
def __eq__(self, other):
|
||||||
|
"""Compare with another reference."""
|
||||||
|
if not isinstance(other, self.__class__):
|
||||||
|
return operator.eq(self.__class__, type(other))
|
||||||
|
return operator.eq(self.key, other.key)
|
||||||
|
|
||||||
|
def __call__(self):
|
||||||
|
"""Return a strong reference to the bound method.
|
||||||
|
|
||||||
|
If the target cannot be retrieved, then will return None,
|
||||||
|
otherwise returns a bound instance method for our object and
|
||||||
|
function.
|
||||||
|
|
||||||
|
Note: You may call this method any number of times, as it does
|
||||||
|
not invalidate the reference.
|
||||||
|
"""
|
||||||
|
target = self.weak_self()
|
||||||
|
if target is not None:
|
||||||
|
function = self.weak_func()
|
||||||
|
if function is not None:
|
||||||
|
return function.__get__(target)
|
||||||
|
return None
|
142
.venv/lib/python3.11/site-packages/blinker/_utilities.py
Normal file
142
.venv/lib/python3.11/site-packages/blinker/_utilities.py
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import asyncio
|
||||||
|
import inspect
|
||||||
|
import sys
|
||||||
|
import typing as t
|
||||||
|
from functools import partial
|
||||||
|
from weakref import ref
|
||||||
|
|
||||||
|
from blinker._saferef import BoundMethodWeakref
|
||||||
|
|
||||||
|
IdentityType = t.Union[t.Tuple[int, int], str, int]
|
||||||
|
|
||||||
|
|
||||||
|
class _symbol:
|
||||||
|
def __init__(self, name):
|
||||||
|
"""Construct a new named symbol."""
|
||||||
|
self.__name__ = self.name = name
|
||||||
|
|
||||||
|
def __reduce__(self):
|
||||||
|
return symbol, (self.name,)
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return self.name
|
||||||
|
|
||||||
|
|
||||||
|
_symbol.__name__ = "symbol"
|
||||||
|
|
||||||
|
|
||||||
|
class symbol:
|
||||||
|
"""A constant symbol.
|
||||||
|
|
||||||
|
>>> symbol('foo') is symbol('foo')
|
||||||
|
True
|
||||||
|
>>> symbol('foo')
|
||||||
|
foo
|
||||||
|
|
||||||
|
A slight refinement of the MAGICCOOKIE=object() pattern. The primary
|
||||||
|
advantage of symbol() is its repr(). They are also singletons.
|
||||||
|
|
||||||
|
Repeated calls of symbol('name') will all return the same instance.
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
symbols = {} # type: ignore[var-annotated]
|
||||||
|
|
||||||
|
def __new__(cls, name):
|
||||||
|
try:
|
||||||
|
return cls.symbols[name]
|
||||||
|
except KeyError:
|
||||||
|
return cls.symbols.setdefault(name, _symbol(name))
|
||||||
|
|
||||||
|
|
||||||
|
def hashable_identity(obj: object) -> IdentityType:
|
||||||
|
if hasattr(obj, "__func__"):
|
||||||
|
return (id(obj.__func__), id(obj.__self__)) # type: ignore[attr-defined]
|
||||||
|
elif hasattr(obj, "im_func"):
|
||||||
|
return (id(obj.im_func), id(obj.im_self)) # type: ignore[attr-defined]
|
||||||
|
elif isinstance(obj, (int, str)):
|
||||||
|
return obj
|
||||||
|
else:
|
||||||
|
return id(obj)
|
||||||
|
|
||||||
|
|
||||||
|
WeakTypes = (ref, BoundMethodWeakref)
|
||||||
|
|
||||||
|
|
||||||
|
class annotatable_weakref(ref):
|
||||||
|
"""A weakref.ref that supports custom instance attributes."""
|
||||||
|
|
||||||
|
receiver_id: t.Optional[IdentityType]
|
||||||
|
sender_id: t.Optional[IdentityType]
|
||||||
|
|
||||||
|
|
||||||
|
def reference( # type: ignore[no-untyped-def]
|
||||||
|
object, callback=None, **annotations
|
||||||
|
) -> annotatable_weakref:
|
||||||
|
"""Return an annotated weak ref."""
|
||||||
|
if callable(object):
|
||||||
|
weak = callable_reference(object, callback)
|
||||||
|
else:
|
||||||
|
weak = annotatable_weakref(object, callback)
|
||||||
|
for key, value in annotations.items():
|
||||||
|
setattr(weak, key, value)
|
||||||
|
return weak # type: ignore[no-any-return]
|
||||||
|
|
||||||
|
|
||||||
|
def callable_reference(object, callback=None):
|
||||||
|
"""Return an annotated weak ref, supporting bound instance methods."""
|
||||||
|
if hasattr(object, "im_self") and object.im_self is not None:
|
||||||
|
return BoundMethodWeakref(target=object, on_delete=callback)
|
||||||
|
elif hasattr(object, "__self__") and object.__self__ is not None:
|
||||||
|
return BoundMethodWeakref(target=object, on_delete=callback)
|
||||||
|
return annotatable_weakref(object, callback)
|
||||||
|
|
||||||
|
|
||||||
|
class lazy_property:
|
||||||
|
"""A @property that is only evaluated once."""
|
||||||
|
|
||||||
|
def __init__(self, deferred):
|
||||||
|
self._deferred = deferred
|
||||||
|
self.__doc__ = deferred.__doc__
|
||||||
|
|
||||||
|
def __get__(self, obj, cls):
|
||||||
|
if obj is None:
|
||||||
|
return self
|
||||||
|
value = self._deferred(obj)
|
||||||
|
setattr(obj, self._deferred.__name__, value)
|
||||||
|
return value
|
||||||
|
|
||||||
|
|
||||||
|
def is_coroutine_function(func: t.Any) -> bool:
|
||||||
|
# Python < 3.8 does not correctly determine partially wrapped
|
||||||
|
# coroutine functions are coroutine functions, hence the need for
|
||||||
|
# this to exist. Code taken from CPython.
|
||||||
|
if sys.version_info >= (3, 8):
|
||||||
|
return asyncio.iscoroutinefunction(func)
|
||||||
|
else:
|
||||||
|
# Note that there is something special about the AsyncMock
|
||||||
|
# such that it isn't determined as a coroutine function
|
||||||
|
# without an explicit check.
|
||||||
|
try:
|
||||||
|
from unittest.mock import AsyncMock # type: ignore[attr-defined]
|
||||||
|
|
||||||
|
if isinstance(func, AsyncMock):
|
||||||
|
return True
|
||||||
|
except ImportError:
|
||||||
|
# Not testing, no asynctest to import
|
||||||
|
pass
|
||||||
|
|
||||||
|
while inspect.ismethod(func):
|
||||||
|
func = func.__func__
|
||||||
|
while isinstance(func, partial):
|
||||||
|
func = func.func
|
||||||
|
if not inspect.isfunction(func):
|
||||||
|
return False
|
||||||
|
|
||||||
|
if func.__code__.co_flags & inspect.CO_COROUTINE:
|
||||||
|
return True
|
||||||
|
|
||||||
|
acic = asyncio.coroutines._is_coroutine # type: ignore[attr-defined]
|
||||||
|
return getattr(func, "_is_coroutine", None) is acic
|
551
.venv/lib/python3.11/site-packages/blinker/base.py
Normal file
551
.venv/lib/python3.11/site-packages/blinker/base.py
Normal file
@ -0,0 +1,551 @@
|
|||||||
|
"""Signals and events.
|
||||||
|
|
||||||
|
A small implementation of signals, inspired by a snippet of Django signal
|
||||||
|
API client code seen in a blog post. Signals are first-class objects and
|
||||||
|
each manages its own receivers and message emission.
|
||||||
|
|
||||||
|
The :func:`signal` function provides singleton behavior for named signals.
|
||||||
|
|
||||||
|
"""
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import typing as t
|
||||||
|
from collections import defaultdict
|
||||||
|
from contextlib import contextmanager
|
||||||
|
from warnings import warn
|
||||||
|
from weakref import WeakValueDictionary
|
||||||
|
|
||||||
|
from blinker._utilities import annotatable_weakref
|
||||||
|
from blinker._utilities import hashable_identity
|
||||||
|
from blinker._utilities import IdentityType
|
||||||
|
from blinker._utilities import is_coroutine_function
|
||||||
|
from blinker._utilities import lazy_property
|
||||||
|
from blinker._utilities import reference
|
||||||
|
from blinker._utilities import symbol
|
||||||
|
from blinker._utilities import WeakTypes
|
||||||
|
|
||||||
|
if t.TYPE_CHECKING:
|
||||||
|
import typing_extensions as te
|
||||||
|
|
||||||
|
T_callable = t.TypeVar("T_callable", bound=t.Callable[..., t.Any])
|
||||||
|
|
||||||
|
T = t.TypeVar("T")
|
||||||
|
P = te.ParamSpec("P")
|
||||||
|
|
||||||
|
AsyncWrapperType = t.Callable[[t.Callable[P, T]], t.Callable[P, t.Awaitable[T]]]
|
||||||
|
SyncWrapperType = t.Callable[[t.Callable[P, t.Awaitable[T]]], t.Callable[P, T]]
|
||||||
|
|
||||||
|
ANY = symbol("ANY")
|
||||||
|
ANY.__doc__ = 'Token for "any sender".'
|
||||||
|
ANY_ID = 0
|
||||||
|
|
||||||
|
|
||||||
|
class Signal:
|
||||||
|
"""A notification emitter."""
|
||||||
|
|
||||||
|
#: An :obj:`ANY` convenience synonym, allows ``Signal.ANY``
|
||||||
|
#: without an additional import.
|
||||||
|
ANY = ANY
|
||||||
|
|
||||||
|
@lazy_property
|
||||||
|
def receiver_connected(self) -> Signal:
|
||||||
|
"""Emitted after each :meth:`connect`.
|
||||||
|
|
||||||
|
The signal sender is the signal instance, and the :meth:`connect`
|
||||||
|
arguments are passed through: *receiver*, *sender*, and *weak*.
|
||||||
|
|
||||||
|
.. versionadded:: 1.2
|
||||||
|
|
||||||
|
"""
|
||||||
|
return Signal(doc="Emitted after a receiver connects.")
|
||||||
|
|
||||||
|
@lazy_property
|
||||||
|
def receiver_disconnected(self) -> Signal:
|
||||||
|
"""Emitted after :meth:`disconnect`.
|
||||||
|
|
||||||
|
The sender is the signal instance, and the :meth:`disconnect` arguments
|
||||||
|
are passed through: *receiver* and *sender*.
|
||||||
|
|
||||||
|
Note, this signal is emitted **only** when :meth:`disconnect` is
|
||||||
|
called explicitly.
|
||||||
|
|
||||||
|
The disconnect signal can not be emitted by an automatic disconnect
|
||||||
|
(due to a weakly referenced receiver or sender going out of scope),
|
||||||
|
as the receiver and/or sender instances are no longer available for
|
||||||
|
use at the time this signal would be emitted.
|
||||||
|
|
||||||
|
An alternative approach is available by subscribing to
|
||||||
|
:attr:`receiver_connected` and setting up a custom weakref cleanup
|
||||||
|
callback on weak receivers and senders.
|
||||||
|
|
||||||
|
.. versionadded:: 1.2
|
||||||
|
|
||||||
|
"""
|
||||||
|
return Signal(doc="Emitted after a receiver disconnects.")
|
||||||
|
|
||||||
|
def __init__(self, doc: str | None = None) -> None:
|
||||||
|
"""
|
||||||
|
:param doc: optional. If provided, will be assigned to the signal's
|
||||||
|
__doc__ attribute.
|
||||||
|
|
||||||
|
"""
|
||||||
|
if doc:
|
||||||
|
self.__doc__ = doc
|
||||||
|
#: A mapping of connected receivers.
|
||||||
|
#:
|
||||||
|
#: The values of this mapping are not meaningful outside of the
|
||||||
|
#: internal :class:`Signal` implementation, however the boolean value
|
||||||
|
#: of the mapping is useful as an extremely efficient check to see if
|
||||||
|
#: any receivers are connected to the signal.
|
||||||
|
self.receivers: dict[IdentityType, t.Callable | annotatable_weakref] = {}
|
||||||
|
self.is_muted = False
|
||||||
|
self._by_receiver: dict[IdentityType, set[IdentityType]] = defaultdict(set)
|
||||||
|
self._by_sender: dict[IdentityType, set[IdentityType]] = defaultdict(set)
|
||||||
|
self._weak_senders: dict[IdentityType, annotatable_weakref] = {}
|
||||||
|
|
||||||
|
def connect(
|
||||||
|
self, receiver: T_callable, sender: t.Any = ANY, weak: bool = True
|
||||||
|
) -> T_callable:
|
||||||
|
"""Connect *receiver* to signal events sent by *sender*.
|
||||||
|
|
||||||
|
:param receiver: A callable. Will be invoked by :meth:`send` with
|
||||||
|
`sender=` as a single positional argument and any ``kwargs`` that
|
||||||
|
were provided to a call to :meth:`send`.
|
||||||
|
|
||||||
|
:param sender: Any object or :obj:`ANY`, defaults to ``ANY``.
|
||||||
|
Restricts notifications delivered to *receiver* to only those
|
||||||
|
:meth:`send` emissions sent by *sender*. If ``ANY``, the receiver
|
||||||
|
will always be notified. A *receiver* may be connected to
|
||||||
|
multiple *sender* values on the same Signal through multiple calls
|
||||||
|
to :meth:`connect`.
|
||||||
|
|
||||||
|
:param weak: If true, the Signal will hold a weakref to *receiver*
|
||||||
|
and automatically disconnect when *receiver* goes out of scope or
|
||||||
|
is garbage collected. Defaults to True.
|
||||||
|
|
||||||
|
"""
|
||||||
|
receiver_id = hashable_identity(receiver)
|
||||||
|
receiver_ref: T_callable | annotatable_weakref
|
||||||
|
|
||||||
|
if weak:
|
||||||
|
receiver_ref = reference(receiver, self._cleanup_receiver)
|
||||||
|
receiver_ref.receiver_id = receiver_id
|
||||||
|
else:
|
||||||
|
receiver_ref = receiver
|
||||||
|
sender_id: IdentityType
|
||||||
|
if sender is ANY:
|
||||||
|
sender_id = ANY_ID
|
||||||
|
else:
|
||||||
|
sender_id = hashable_identity(sender)
|
||||||
|
|
||||||
|
self.receivers.setdefault(receiver_id, receiver_ref)
|
||||||
|
self._by_sender[sender_id].add(receiver_id)
|
||||||
|
self._by_receiver[receiver_id].add(sender_id)
|
||||||
|
del receiver_ref
|
||||||
|
|
||||||
|
if sender is not ANY and sender_id not in self._weak_senders:
|
||||||
|
# wire together a cleanup for weakref-able senders
|
||||||
|
try:
|
||||||
|
sender_ref = reference(sender, self._cleanup_sender)
|
||||||
|
sender_ref.sender_id = sender_id
|
||||||
|
except TypeError:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
self._weak_senders.setdefault(sender_id, sender_ref)
|
||||||
|
del sender_ref
|
||||||
|
|
||||||
|
# broadcast this connection. if receivers raise, disconnect.
|
||||||
|
if "receiver_connected" in self.__dict__ and self.receiver_connected.receivers:
|
||||||
|
try:
|
||||||
|
self.receiver_connected.send(
|
||||||
|
self, receiver=receiver, sender=sender, weak=weak
|
||||||
|
)
|
||||||
|
except TypeError as e:
|
||||||
|
self.disconnect(receiver, sender)
|
||||||
|
raise e
|
||||||
|
if receiver_connected.receivers and self is not receiver_connected:
|
||||||
|
try:
|
||||||
|
receiver_connected.send(
|
||||||
|
self, receiver_arg=receiver, sender_arg=sender, weak_arg=weak
|
||||||
|
)
|
||||||
|
except TypeError as e:
|
||||||
|
self.disconnect(receiver, sender)
|
||||||
|
raise e
|
||||||
|
return receiver
|
||||||
|
|
||||||
|
def connect_via(
|
||||||
|
self, sender: t.Any, weak: bool = False
|
||||||
|
) -> t.Callable[[T_callable], T_callable]:
|
||||||
|
"""Connect the decorated function as a receiver for *sender*.
|
||||||
|
|
||||||
|
:param sender: Any object or :obj:`ANY`. The decorated function
|
||||||
|
will only receive :meth:`send` emissions sent by *sender*. If
|
||||||
|
``ANY``, the receiver will always be notified. A function may be
|
||||||
|
decorated multiple times with differing *sender* values.
|
||||||
|
|
||||||
|
:param weak: If true, the Signal will hold a weakref to the
|
||||||
|
decorated function and automatically disconnect when *receiver*
|
||||||
|
goes out of scope or is garbage collected. Unlike
|
||||||
|
:meth:`connect`, this defaults to False.
|
||||||
|
|
||||||
|
The decorated function will be invoked by :meth:`send` with
|
||||||
|
`sender=` as a single positional argument and any ``kwargs`` that
|
||||||
|
were provided to the call to :meth:`send`.
|
||||||
|
|
||||||
|
|
||||||
|
.. versionadded:: 1.1
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
def decorator(fn: T_callable) -> T_callable:
|
||||||
|
self.connect(fn, sender, weak)
|
||||||
|
return fn
|
||||||
|
|
||||||
|
return decorator
|
||||||
|
|
||||||
|
@contextmanager
|
||||||
|
def connected_to(
|
||||||
|
self, receiver: t.Callable, sender: t.Any = ANY
|
||||||
|
) -> t.Generator[None, None, None]:
|
||||||
|
"""Execute a block with the signal temporarily connected to *receiver*.
|
||||||
|
|
||||||
|
:param receiver: a receiver callable
|
||||||
|
:param sender: optional, a sender to filter on
|
||||||
|
|
||||||
|
This is a context manager for use in the ``with`` statement. It can
|
||||||
|
be useful in unit tests. *receiver* is connected to the signal for
|
||||||
|
the duration of the ``with`` block, and will be disconnected
|
||||||
|
automatically when exiting the block:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
with on_ready.connected_to(receiver):
|
||||||
|
# do stuff
|
||||||
|
on_ready.send(123)
|
||||||
|
|
||||||
|
.. versionadded:: 1.1
|
||||||
|
|
||||||
|
"""
|
||||||
|
self.connect(receiver, sender=sender, weak=False)
|
||||||
|
try:
|
||||||
|
yield None
|
||||||
|
except Exception as e:
|
||||||
|
self.disconnect(receiver)
|
||||||
|
raise e
|
||||||
|
else:
|
||||||
|
self.disconnect(receiver)
|
||||||
|
|
||||||
|
@contextmanager
|
||||||
|
def muted(self) -> t.Generator[None, None, None]:
|
||||||
|
"""Context manager for temporarily disabling signal.
|
||||||
|
Useful for test purposes.
|
||||||
|
"""
|
||||||
|
self.is_muted = True
|
||||||
|
try:
|
||||||
|
yield None
|
||||||
|
except Exception as e:
|
||||||
|
raise e
|
||||||
|
finally:
|
||||||
|
self.is_muted = False
|
||||||
|
|
||||||
|
def temporarily_connected_to(
|
||||||
|
self, receiver: t.Callable, sender: t.Any = ANY
|
||||||
|
) -> t.ContextManager[None]:
|
||||||
|
"""An alias for :meth:`connected_to`.
|
||||||
|
|
||||||
|
:param receiver: a receiver callable
|
||||||
|
:param sender: optional, a sender to filter on
|
||||||
|
|
||||||
|
.. versionadded:: 0.9
|
||||||
|
|
||||||
|
.. versionchanged:: 1.1
|
||||||
|
Renamed to :meth:`connected_to`. ``temporarily_connected_to`` was
|
||||||
|
deprecated in 1.2 and will be removed in a subsequent version.
|
||||||
|
|
||||||
|
"""
|
||||||
|
warn(
|
||||||
|
"temporarily_connected_to is deprecated; use connected_to instead.",
|
||||||
|
DeprecationWarning,
|
||||||
|
)
|
||||||
|
return self.connected_to(receiver, sender)
|
||||||
|
|
||||||
|
def send(
|
||||||
|
self,
|
||||||
|
*sender: t.Any,
|
||||||
|
_async_wrapper: AsyncWrapperType | None = None,
|
||||||
|
**kwargs: t.Any,
|
||||||
|
) -> list[tuple[t.Callable, t.Any]]:
|
||||||
|
"""Emit this signal on behalf of *sender*, passing on ``kwargs``.
|
||||||
|
|
||||||
|
Returns a list of 2-tuples, pairing receivers with their return
|
||||||
|
value. The ordering of receiver notification is undefined.
|
||||||
|
|
||||||
|
:param sender: Any object or ``None``. If omitted, synonymous
|
||||||
|
with ``None``. Only accepts one positional argument.
|
||||||
|
:param _async_wrapper: A callable that should wrap a coroutine
|
||||||
|
receiver and run it when called synchronously.
|
||||||
|
|
||||||
|
:param kwargs: Data to be sent to receivers.
|
||||||
|
"""
|
||||||
|
if self.is_muted:
|
||||||
|
return []
|
||||||
|
|
||||||
|
sender = self._extract_sender(sender)
|
||||||
|
results = []
|
||||||
|
for receiver in self.receivers_for(sender):
|
||||||
|
if is_coroutine_function(receiver):
|
||||||
|
if _async_wrapper is None:
|
||||||
|
raise RuntimeError("Cannot send to a coroutine function")
|
||||||
|
receiver = _async_wrapper(receiver)
|
||||||
|
result = receiver(sender, **kwargs) # type: ignore[call-arg]
|
||||||
|
results.append((receiver, result))
|
||||||
|
return results
|
||||||
|
|
||||||
|
async def send_async(
|
||||||
|
self,
|
||||||
|
*sender: t.Any,
|
||||||
|
_sync_wrapper: SyncWrapperType | None = None,
|
||||||
|
**kwargs: t.Any,
|
||||||
|
) -> list[tuple[t.Callable, t.Any]]:
|
||||||
|
"""Emit this signal on behalf of *sender*, passing on ``kwargs``.
|
||||||
|
|
||||||
|
Returns a list of 2-tuples, pairing receivers with their return
|
||||||
|
value. The ordering of receiver notification is undefined.
|
||||||
|
|
||||||
|
:param sender: Any object or ``None``. If omitted, synonymous
|
||||||
|
with ``None``. Only accepts one positional argument.
|
||||||
|
:param _sync_wrapper: A callable that should wrap a synchronous
|
||||||
|
receiver and run it when awaited.
|
||||||
|
|
||||||
|
:param kwargs: Data to be sent to receivers.
|
||||||
|
"""
|
||||||
|
if self.is_muted:
|
||||||
|
return []
|
||||||
|
|
||||||
|
sender = self._extract_sender(sender)
|
||||||
|
results = []
|
||||||
|
for receiver in self.receivers_for(sender):
|
||||||
|
if not is_coroutine_function(receiver):
|
||||||
|
if _sync_wrapper is None:
|
||||||
|
raise RuntimeError("Cannot send to a non-coroutine function")
|
||||||
|
receiver = _sync_wrapper(receiver) # type: ignore[arg-type]
|
||||||
|
result = await receiver(sender, **kwargs) # type: ignore[call-arg, misc]
|
||||||
|
results.append((receiver, result))
|
||||||
|
return results
|
||||||
|
|
||||||
|
def _extract_sender(self, sender: t.Any) -> t.Any:
|
||||||
|
if not self.receivers:
|
||||||
|
# Ensure correct signature even on no-op sends, disable with -O
|
||||||
|
# for lowest possible cost.
|
||||||
|
if __debug__ and sender and len(sender) > 1:
|
||||||
|
raise TypeError(
|
||||||
|
f"send() accepts only one positional argument, {len(sender)} given"
|
||||||
|
)
|
||||||
|
return []
|
||||||
|
|
||||||
|
# Using '*sender' rather than 'sender=None' allows 'sender' to be
|
||||||
|
# used as a keyword argument- i.e. it's an invisible name in the
|
||||||
|
# function signature.
|
||||||
|
if len(sender) == 0:
|
||||||
|
sender = None
|
||||||
|
elif len(sender) > 1:
|
||||||
|
raise TypeError(
|
||||||
|
f"send() accepts only one positional argument, {len(sender)} given"
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
sender = sender[0]
|
||||||
|
return sender
|
||||||
|
|
||||||
|
def has_receivers_for(self, sender: t.Any) -> bool:
|
||||||
|
"""True if there is probably a receiver for *sender*.
|
||||||
|
|
||||||
|
Performs an optimistic check only. Does not guarantee that all
|
||||||
|
weakly referenced receivers are still alive. See
|
||||||
|
:meth:`receivers_for` for a stronger search.
|
||||||
|
|
||||||
|
"""
|
||||||
|
if not self.receivers:
|
||||||
|
return False
|
||||||
|
if self._by_sender[ANY_ID]:
|
||||||
|
return True
|
||||||
|
if sender is ANY:
|
||||||
|
return False
|
||||||
|
return hashable_identity(sender) in self._by_sender
|
||||||
|
|
||||||
|
def receivers_for(
|
||||||
|
self, sender: t.Any
|
||||||
|
) -> t.Generator[t.Callable | annotatable_weakref, None, None]:
|
||||||
|
"""Iterate all live receivers listening for *sender*."""
|
||||||
|
# TODO: test receivers_for(ANY)
|
||||||
|
if self.receivers:
|
||||||
|
sender_id = hashable_identity(sender)
|
||||||
|
if sender_id in self._by_sender:
|
||||||
|
ids = self._by_sender[ANY_ID] | self._by_sender[sender_id]
|
||||||
|
else:
|
||||||
|
ids = self._by_sender[ANY_ID].copy()
|
||||||
|
for receiver_id in ids:
|
||||||
|
receiver = self.receivers.get(receiver_id)
|
||||||
|
if receiver is None:
|
||||||
|
continue
|
||||||
|
if isinstance(receiver, WeakTypes):
|
||||||
|
strong = receiver()
|
||||||
|
if strong is None:
|
||||||
|
self._disconnect(receiver_id, ANY_ID)
|
||||||
|
continue
|
||||||
|
receiver = strong
|
||||||
|
yield receiver # type: ignore[misc]
|
||||||
|
|
||||||
|
def disconnect(self, receiver: t.Callable, sender: t.Any = ANY) -> None:
|
||||||
|
"""Disconnect *receiver* from this signal's events.
|
||||||
|
|
||||||
|
:param receiver: a previously :meth:`connected<connect>` callable
|
||||||
|
|
||||||
|
:param sender: a specific sender to disconnect from, or :obj:`ANY`
|
||||||
|
to disconnect from all senders. Defaults to ``ANY``.
|
||||||
|
|
||||||
|
"""
|
||||||
|
sender_id: IdentityType
|
||||||
|
if sender is ANY:
|
||||||
|
sender_id = ANY_ID
|
||||||
|
else:
|
||||||
|
sender_id = hashable_identity(sender)
|
||||||
|
receiver_id = hashable_identity(receiver)
|
||||||
|
self._disconnect(receiver_id, sender_id)
|
||||||
|
|
||||||
|
if (
|
||||||
|
"receiver_disconnected" in self.__dict__
|
||||||
|
and self.receiver_disconnected.receivers
|
||||||
|
):
|
||||||
|
self.receiver_disconnected.send(self, receiver=receiver, sender=sender)
|
||||||
|
|
||||||
|
def _disconnect(self, receiver_id: IdentityType, sender_id: IdentityType) -> None:
|
||||||
|
if sender_id == ANY_ID:
|
||||||
|
if self._by_receiver.pop(receiver_id, False):
|
||||||
|
for bucket in self._by_sender.values():
|
||||||
|
bucket.discard(receiver_id)
|
||||||
|
self.receivers.pop(receiver_id, None)
|
||||||
|
else:
|
||||||
|
self._by_sender[sender_id].discard(receiver_id)
|
||||||
|
self._by_receiver[receiver_id].discard(sender_id)
|
||||||
|
|
||||||
|
def _cleanup_receiver(self, receiver_ref: annotatable_weakref) -> None:
|
||||||
|
"""Disconnect a receiver from all senders."""
|
||||||
|
self._disconnect(t.cast(IdentityType, receiver_ref.receiver_id), ANY_ID)
|
||||||
|
|
||||||
|
def _cleanup_sender(self, sender_ref: annotatable_weakref) -> None:
|
||||||
|
"""Disconnect all receivers from a sender."""
|
||||||
|
sender_id = t.cast(IdentityType, sender_ref.sender_id)
|
||||||
|
assert sender_id != ANY_ID
|
||||||
|
self._weak_senders.pop(sender_id, None)
|
||||||
|
for receiver_id in self._by_sender.pop(sender_id, ()):
|
||||||
|
self._by_receiver[receiver_id].discard(sender_id)
|
||||||
|
|
||||||
|
def _cleanup_bookkeeping(self) -> None:
|
||||||
|
"""Prune unused sender/receiver bookkeeping. Not threadsafe.
|
||||||
|
|
||||||
|
Connecting & disconnecting leave behind a small amount of bookkeeping
|
||||||
|
for the receiver and sender values. Typical workloads using Blinker,
|
||||||
|
for example in most web apps, Flask, CLI scripts, etc., are not
|
||||||
|
adversely affected by this bookkeeping.
|
||||||
|
|
||||||
|
With a long-running Python process performing dynamic signal routing
|
||||||
|
with high volume- e.g. connecting to function closures, "senders" are
|
||||||
|
all unique object instances, and doing all of this over and over- you
|
||||||
|
may see memory usage will grow due to extraneous bookkeeping. (An empty
|
||||||
|
set() for each stale sender/receiver pair.)
|
||||||
|
|
||||||
|
This method will prune that bookkeeping away, with the caveat that such
|
||||||
|
pruning is not threadsafe. The risk is that cleanup of a fully
|
||||||
|
disconnected receiver/sender pair occurs while another thread is
|
||||||
|
connecting that same pair. If you are in the highly dynamic, unique
|
||||||
|
receiver/sender situation that has lead you to this method, that
|
||||||
|
failure mode is perhaps not a big deal for you.
|
||||||
|
"""
|
||||||
|
for mapping in (self._by_sender, self._by_receiver):
|
||||||
|
for _id, bucket in list(mapping.items()):
|
||||||
|
if not bucket:
|
||||||
|
mapping.pop(_id, None)
|
||||||
|
|
||||||
|
def _clear_state(self) -> None:
|
||||||
|
"""Throw away all signal state. Useful for unit tests."""
|
||||||
|
self._weak_senders.clear()
|
||||||
|
self.receivers.clear()
|
||||||
|
self._by_sender.clear()
|
||||||
|
self._by_receiver.clear()
|
||||||
|
|
||||||
|
|
||||||
|
receiver_connected = Signal(
|
||||||
|
"""\
|
||||||
|
Sent by a :class:`Signal` after a receiver connects.
|
||||||
|
|
||||||
|
:argument: the Signal that was connected to
|
||||||
|
:keyword receiver_arg: the connected receiver
|
||||||
|
:keyword sender_arg: the sender to connect to
|
||||||
|
:keyword weak_arg: true if the connection to receiver_arg is a weak reference
|
||||||
|
|
||||||
|
.. deprecated:: 1.2
|
||||||
|
|
||||||
|
As of 1.2, individual signals have their own private
|
||||||
|
:attr:`~Signal.receiver_connected` and
|
||||||
|
:attr:`~Signal.receiver_disconnected` signals with a slightly simplified
|
||||||
|
call signature. This global signal is planned to be removed in 1.6.
|
||||||
|
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class NamedSignal(Signal):
|
||||||
|
"""A named generic notification emitter."""
|
||||||
|
|
||||||
|
def __init__(self, name: str, doc: str | None = None) -> None:
|
||||||
|
Signal.__init__(self, doc)
|
||||||
|
|
||||||
|
#: The name of this signal.
|
||||||
|
self.name = name
|
||||||
|
|
||||||
|
def __repr__(self) -> str:
|
||||||
|
base = Signal.__repr__(self)
|
||||||
|
return f"{base[:-1]}; {self.name!r}>"
|
||||||
|
|
||||||
|
|
||||||
|
class Namespace(dict):
|
||||||
|
"""A mapping of signal names to signals."""
|
||||||
|
|
||||||
|
def signal(self, name: str, doc: str | None = None) -> NamedSignal:
|
||||||
|
"""Return the :class:`NamedSignal` *name*, creating it if required.
|
||||||
|
|
||||||
|
Repeated calls to this function will return the same signal object.
|
||||||
|
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
return self[name] # type: ignore[no-any-return]
|
||||||
|
except KeyError:
|
||||||
|
result = self.setdefault(name, NamedSignal(name, doc))
|
||||||
|
return result # type: ignore[no-any-return]
|
||||||
|
|
||||||
|
|
||||||
|
class WeakNamespace(WeakValueDictionary):
|
||||||
|
"""A weak mapping of signal names to signals.
|
||||||
|
|
||||||
|
Automatically cleans up unused Signals when the last reference goes out
|
||||||
|
of scope. This namespace implementation exists for a measure of legacy
|
||||||
|
compatibility with Blinker <= 1.2, and may be dropped in the future.
|
||||||
|
|
||||||
|
.. versionadded:: 1.3
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
def signal(self, name: str, doc: str | None = None) -> NamedSignal:
|
||||||
|
"""Return the :class:`NamedSignal` *name*, creating it if required.
|
||||||
|
|
||||||
|
Repeated calls to this function will return the same signal object.
|
||||||
|
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
return self[name] # type: ignore[no-any-return]
|
||||||
|
except KeyError:
|
||||||
|
result = self.setdefault(name, NamedSignal(name, doc))
|
||||||
|
return result # type: ignore[no-any-return]
|
||||||
|
|
||||||
|
|
||||||
|
signal = Namespace().signal
|
0
.venv/lib/python3.11/site-packages/blinker/py.typed
Normal file
0
.venv/lib/python3.11/site-packages/blinker/py.typed
Normal file
8
.venv/lib/python3.11/site-packages/dateutil/__init__.py
Normal file
8
.venv/lib/python3.11/site-packages/dateutil/__init__.py
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
try:
|
||||||
|
from ._version import version as __version__
|
||||||
|
except ImportError:
|
||||||
|
__version__ = 'unknown'
|
||||||
|
|
||||||
|
__all__ = ['easter', 'parser', 'relativedelta', 'rrule', 'tz',
|
||||||
|
'utils', 'zoneinfo']
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user