update gitgignore
This commit is contained in:
parent
9f1dc86819
commit
fd6b2a45a3
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
.venv*
|
@ -1,247 +0,0 @@
|
||||
<#
|
||||
.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"
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,69 +0,0 @@
|
||||
# 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
|
@ -1,26 +0,0 @@
|
||||
# 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
|
@ -1,69 +0,0 @@
|
||||
# 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
|
@ -1,8 +0,0 @@
|
||||
#!/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())
|
@ -1,8 +0,0 @@
|
||||
#!/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())
|
@ -1,8 +0,0 @@
|
||||
#!/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())
|
@ -1,8 +0,0 @@
|
||||
#!/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())
|
@ -1,8 +0,0 @@
|
||||
#!/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())
|
@ -1,8 +0,0 @@
|
||||
#!/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())
|
@ -1,8 +0,0 @@
|
||||
#!/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())
|
@ -1,8 +0,0 @@
|
||||
#!/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())
|
@ -1,8 +0,0 @@
|
||||
#!/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())
|
@ -1,8 +0,0 @@
|
||||
#!/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())
|
@ -1,8 +0,0 @@
|
||||
#!/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())
|
@ -1,8 +0,0 @@
|
||||
#!/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 +0,0 @@
|
||||
/usr/bin/python
|
@ -1 +0,0 @@
|
||||
python
|
@ -1 +0,0 @@
|
||||
python
|
@ -1,23 +0,0 @@
|
||||
#!/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)
|
@ -1,26 +0,0 @@
|
||||
#!/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)
|
@ -1,33 +0,0 @@
|
||||
#!/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)
|
@ -1,26 +0,0 @@
|
||||
#!/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)
|
@ -1,27 +0,0 @@
|
||||
#!/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)
|
@ -1,28 +0,0 @@
|
||||
#!/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)
|
@ -1,20 +0,0 @@
|
||||
#!/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()
|
@ -1,23 +0,0 @@
|
||||
#!/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)
|
@ -1,24 +0,0 @@
|
||||
#!/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)
|
@ -1,27 +0,0 @@
|
||||
#!/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)
|
@ -1,23 +0,0 @@
|
||||
#!/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)
|
@ -1,25 +0,0 @@
|
||||
#!/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)
|
@ -1,8 +0,0 @@
|
||||
#!/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())
|
@ -1 +0,0 @@
|
||||
pip
|
@ -1,28 +0,0 @@
|
||||
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.
|
@ -1,113 +0,0 @@
|
||||
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
|
||||
|
||||
|
@ -1,58 +0,0 @@
|
||||
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
|
@ -1,5 +0,0 @@
|
||||
Wheel-Version: 1.0
|
||||
Generator: bdist_wheel (0.37.1)
|
||||
Root-Is-Purelib: true
|
||||
Tag: py3-none-any
|
||||
|
@ -1,2 +0,0 @@
|
||||
[babel.extractors]
|
||||
jinja2 = jinja2.ext:babel_extract[i18n]
|
@ -1 +0,0 @@
|
||||
jinja2
|
@ -1 +0,0 @@
|
||||
pip
|
@ -1,29 +0,0 @@
|
||||
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.
|
@ -1,137 +0,0 @@
|
||||
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].
|
@ -1,74 +0,0 @@
|
||||
../../../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
|
@ -1,5 +0,0 @@
|
||||
Wheel-Version: 1.0
|
||||
Generator: bdist_wheel (0.40.0)
|
||||
Root-Is-Purelib: true
|
||||
Tag: py3-none-any
|
||||
|
@ -1,22 +0,0 @@
|
||||
[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
|
@ -1 +0,0 @@
|
||||
markdown
|
@ -1 +0,0 @@
|
||||
pip
|
@ -1,28 +0,0 @@
|
||||
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.
|
@ -1,93 +0,0 @@
|
||||
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
|
@ -1,14 +0,0 @@
|
||||
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
|
@ -1,6 +0,0 @@
|
||||
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
|
||||
|
@ -1 +0,0 @@
|
||||
markupsafe
|
@ -1,270 +0,0 @@
|
||||
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!
|
@ -1 +0,0 @@
|
||||
pip
|
@ -1,25 +0,0 @@
|
||||
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.
|
@ -1,56 +0,0 @@
|
||||
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.
|
@ -1,613 +0,0 @@
|
||||
../../../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
|
@ -1,5 +0,0 @@
|
||||
Wheel-Version: 1.0
|
||||
Generator: bdist_wheel (0.40.0)
|
||||
Root-Is-Purelib: true
|
||||
Tag: py3-none-any
|
||||
|
@ -1,2 +0,0 @@
|
||||
[console_scripts]
|
||||
pygmentize = pygments.cmdline:main
|
@ -1 +0,0 @@
|
||||
pygments
|
@ -1 +0,0 @@
|
||||
pip
|
@ -1,339 +0,0 @@
|
||||
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.
|
@ -1,313 +0,0 @@
|
||||
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:
|
||||
|
||||
|
@ -1,396 +0,0 @@
|
||||
../../../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
|
@ -1,5 +0,0 @@
|
||||
Wheel-Version: 1.0
|
||||
Generator: bdist_wheel (0.32.3)
|
||||
Root-Is-Purelib: true
|
||||
Tag: py3-none-any
|
||||
|
@ -1,3 +0,0 @@
|
||||
[console_scripts]
|
||||
unidecode = unidecode.util:main
|
||||
|
@ -1 +0,0 @@
|
||||
unidecode
|
Binary file not shown.
@ -1,222 +0,0 @@
|
||||
# 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.
@ -1 +0,0 @@
|
||||
__import__('_distutils_hack').do_override()
|
@ -1 +0,0 @@
|
||||
pip
|
@ -1,20 +0,0 @@
|
||||
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.
|
@ -1,63 +0,0 @@
|
||||
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/
|
@ -1,15 +0,0 @@
|
||||
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
|
@ -1,5 +0,0 @@
|
||||
Wheel-Version: 1.0
|
||||
Generator: bdist_wheel (0.40.0)
|
||||
Root-Is-Purelib: true
|
||||
Tag: py3-none-any
|
||||
|
@ -1 +0,0 @@
|
||||
blinker
|
@ -1,19 +0,0 @@
|
||||
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.
@ -1,230 +0,0 @@
|
||||
# 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
|
@ -1,142 +0,0 @@
|
||||
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
|
@ -1,551 +0,0 @@
|
||||
"""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
|
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