mirror of
https://github.com/EvolutionAPI/evolution-client-python.git
synced 2025-07-13 07:04:49 -06:00
initial commit
This commit is contained in:
commit
8654a31a4d
158
README.md
Normal file
158
README.md
Normal file
@ -0,0 +1,158 @@
|
||||
# Evolution Client Python
|
||||
|
||||
Client Python para interagir com a API Evolution.
|
||||
|
||||
## Instalação
|
||||
|
||||
```bash
|
||||
pip install evolution-client
|
||||
```
|
||||
|
||||
## Uso Básico
|
||||
|
||||
### Inicializando o Cliente
|
||||
|
||||
```python
|
||||
from evolution.client import EvolutionClient
|
||||
|
||||
client = EvolutionClient(
|
||||
base_url='http://seu-servidor:porta',
|
||||
api_token='seu-token-api'
|
||||
)
|
||||
```
|
||||
|
||||
### Gerenciamento de Instâncias
|
||||
|
||||
#### Listar Instâncias
|
||||
```python
|
||||
instances = client.instances.fetch_instances()
|
||||
```
|
||||
|
||||
#### Criar Nova Instância
|
||||
```python
|
||||
from evolution.models.instance import InstanceConfig
|
||||
|
||||
config = InstanceConfig(
|
||||
instanceName="minha-instancia",
|
||||
integration="WHATSAPP-BAILEYS",
|
||||
qrcode=True
|
||||
)
|
||||
|
||||
nova_instancia = client.instances.create_instance(config)
|
||||
```
|
||||
|
||||
### Operações com Instâncias
|
||||
|
||||
#### Conectar Instância
|
||||
```python
|
||||
estado = client.instance_operations.connect(instance_id, instance_token)
|
||||
```
|
||||
|
||||
#### Verificar Estado da Conexão
|
||||
```python
|
||||
estado = client.instance_operations.get_connection_state(instance_id, instance_token)
|
||||
```
|
||||
|
||||
#### Definir Presença
|
||||
```python
|
||||
from evolution.models.presence import PresenceStatus
|
||||
|
||||
client.instance_operations.set_presence(
|
||||
instance_id,
|
||||
PresenceStatus.AVAILABLE,
|
||||
instance_token
|
||||
)
|
||||
```
|
||||
|
||||
### Enviando Mensagens
|
||||
|
||||
#### Mensagem de Texto
|
||||
```python
|
||||
from evolution.models.message import TextMessage
|
||||
|
||||
mensagem = TextMessage(
|
||||
number="5511999999999",
|
||||
text="Olá, como vai?",
|
||||
delay=1000 # delay opcional em ms
|
||||
)
|
||||
|
||||
response = client.messages.send_text(instance_id, mensagem, instance_token)
|
||||
```
|
||||
|
||||
#### Mensagem de Mídia
|
||||
```python
|
||||
from evolution.models.message import MediaMessage, MediaType
|
||||
|
||||
mensagem = MediaMessage(
|
||||
number="5511999999999",
|
||||
mediatype=MediaType.IMAGE.value,
|
||||
mimetype="image/jpeg",
|
||||
caption="Minha imagem",
|
||||
media="base64_da_imagem_ou_url",
|
||||
fileName="imagem.jpg"
|
||||
)
|
||||
|
||||
response = client.messages.send_media(instance_id, mensagem, instance_token)
|
||||
```
|
||||
|
||||
#### Mensagem com Botões
|
||||
```python
|
||||
from evolution.models.message import ButtonMessage, Button
|
||||
|
||||
botoes = [
|
||||
Button(
|
||||
type="reply",
|
||||
displayText="Opção 1",
|
||||
id="1"
|
||||
),
|
||||
Button(
|
||||
type="reply",
|
||||
displayText="Opção 2",
|
||||
id="2"
|
||||
)
|
||||
]
|
||||
|
||||
mensagem = ButtonMessage(
|
||||
number="5511999999999",
|
||||
title="Título",
|
||||
description="Descrição",
|
||||
footer="Rodapé",
|
||||
buttons=botoes
|
||||
)
|
||||
|
||||
response = client.messages.send_buttons(instance_id, mensagem, instance_token)
|
||||
```
|
||||
|
||||
#### Mensagem com Lista
|
||||
```python
|
||||
from evolution.models.message import ListMessage, ListSection, ListRow
|
||||
|
||||
rows = [
|
||||
ListRow(
|
||||
title="Item 1",
|
||||
description="Descrição do item 1",
|
||||
rowId="1"
|
||||
),
|
||||
ListRow(
|
||||
title="Item 2",
|
||||
description="Descrição do item 2",
|
||||
rowId="2"
|
||||
)
|
||||
]
|
||||
|
||||
section = ListSection(
|
||||
title="Seção 1",
|
||||
rows=rows
|
||||
)
|
||||
|
||||
mensagem = ListMessage(
|
||||
number="5511999999999",
|
||||
title="Título da Lista",
|
||||
description="Descrição da lista",
|
||||
buttonText="Clique aqui",
|
||||
footerText="Rodapé",
|
||||
sections=[section]
|
||||
)
|
||||
|
||||
response = client.messages.send_list(instance_id, mensagem, instance_token)
|
||||
```
|
0
build/lib/evolution/__init__.py
Normal file
0
build/lib/evolution/__init__.py
Normal file
81
build/lib/evolution/client.py
Normal file
81
build/lib/evolution/client.py
Normal file
@ -0,0 +1,81 @@
|
||||
import requests
|
||||
from .exceptions import EvolutionAuthenticationError, EvolutionNotFoundError, EvolutionAPIError
|
||||
from .services.instance import InstanceService
|
||||
from .services.instance_operations import InstanceOperationsService
|
||||
from .services.message import MessageService
|
||||
from .services.call import CallService
|
||||
from .services.chat import ChatService
|
||||
from .services.label import LabelService
|
||||
from .services.profile import ProfileService
|
||||
from .services.group import GroupService
|
||||
class EvolutionClient:
|
||||
"""
|
||||
Cliente para interagir com a API Evolution.
|
||||
|
||||
Args:
|
||||
base_url (str): A URL base do servidor da API Evolution.
|
||||
api_token (str): O token de autenticação para acessar a API.
|
||||
"""
|
||||
|
||||
def __init__(self, base_url: str, api_token: str):
|
||||
self.base_url = base_url.rstrip('/')
|
||||
self.api_token = api_token
|
||||
self.instances = InstanceService(self)
|
||||
self.instance_operations = InstanceOperationsService(self)
|
||||
self.messages = MessageService(self)
|
||||
self.calls = CallService(self)
|
||||
self.chat = ChatService(self)
|
||||
self.label = LabelService(self)
|
||||
self.profile = ProfileService(self)
|
||||
self.group = GroupService(self)
|
||||
|
||||
def _get_headers(self, instance_token: str = None):
|
||||
return {
|
||||
'apikey': instance_token or self.api_token,
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
|
||||
def _get_full_url(self, endpoint):
|
||||
return f'{self.base_url}/{endpoint}'
|
||||
|
||||
def _handle_response(self, response):
|
||||
if response.status_code == 401:
|
||||
raise EvolutionAuthenticationError('Falha na autenticação.')
|
||||
elif response.status_code == 404:
|
||||
raise EvolutionNotFoundError('Recurso não encontrado.')
|
||||
elif response.ok:
|
||||
try:
|
||||
return response.json()
|
||||
except ValueError:
|
||||
return response.content
|
||||
else:
|
||||
error_detail = ''
|
||||
try:
|
||||
error_detail = f' - {response.json()}'
|
||||
except:
|
||||
error_detail = f' - {response.text}'
|
||||
raise EvolutionAPIError(f'Erro na requisição: {response.status_code}{error_detail}')
|
||||
|
||||
def get(self, endpoint: str, instance_token: str = None):
|
||||
"""Faz uma requisição GET."""
|
||||
url = self._get_full_url(endpoint)
|
||||
response = requests.get(url, headers=self._get_headers(instance_token))
|
||||
return self._handle_response(response)
|
||||
|
||||
def post(self, endpoint: str, data: dict = None, instance_token: str = None):
|
||||
"""Faz uma requisição POST."""
|
||||
url = self._get_full_url(endpoint)
|
||||
response = requests.post(url, headers=self._get_headers(instance_token), json=data)
|
||||
return self._handle_response(response)
|
||||
|
||||
def put(self, endpoint, data=None):
|
||||
"""Faz uma requisição PUT."""
|
||||
url = self._get_full_url(endpoint)
|
||||
response = requests.put(url, headers=self.headers, json=data)
|
||||
return self._handle_response(response)
|
||||
|
||||
def delete(self, endpoint: str, instance_token: str = None):
|
||||
"""Faz uma requisição DELETE."""
|
||||
url = self._get_full_url(endpoint)
|
||||
response = requests.delete(url, headers=self._get_headers(instance_token))
|
||||
return self._handle_response(response)
|
11
build/lib/evolution/exceptions.py
Normal file
11
build/lib/evolution/exceptions.py
Normal file
@ -0,0 +1,11 @@
|
||||
class EvolutionAPIError(Exception):
|
||||
"""Erro genérico da API Evolution."""
|
||||
pass
|
||||
|
||||
class EvolutionAuthenticationError(EvolutionAPIError):
|
||||
"""Erro de autenticação com a API Evolution."""
|
||||
pass
|
||||
|
||||
class EvolutionNotFoundError(EvolutionAPIError):
|
||||
"""Recurso não encontrado na API Evolution."""
|
||||
pass
|
BIN
dist/evolution-client-0.0.1.tar.gz
vendored
Normal file
BIN
dist/evolution-client-0.0.1.tar.gz
vendored
Normal file
Binary file not shown.
BIN
dist/evolution_client-0.0.1-py3-none-any.whl
vendored
Normal file
BIN
dist/evolution_client-0.0.1-py3-none-any.whl
vendored
Normal file
Binary file not shown.
247
env/bin/Activate.ps1
vendored
Normal file
247
env/bin/Activate.ps1
vendored
Normal file
@ -0,0 +1,247 @@
|
||||
<#
|
||||
.Synopsis
|
||||
Activate a Python virtual environment for the current PowerShell session.
|
||||
|
||||
.Description
|
||||
Pushes the python executable for a virtual environment to the front of the
|
||||
$Env:PATH environment variable and sets the prompt to signify that you are
|
||||
in a Python virtual environment. Makes use of the command line switches as
|
||||
well as the `pyvenv.cfg` file values present in the virtual environment.
|
||||
|
||||
.Parameter VenvDir
|
||||
Path to the directory that contains the virtual environment to activate. The
|
||||
default value for this is the parent of the directory that the Activate.ps1
|
||||
script is located within.
|
||||
|
||||
.Parameter Prompt
|
||||
The prompt prefix to display when this virtual environment is activated. By
|
||||
default, this prompt is the name of the virtual environment folder (VenvDir)
|
||||
surrounded by parentheses and followed by a single space (ie. '(.venv) ').
|
||||
|
||||
.Example
|
||||
Activate.ps1
|
||||
Activates the Python virtual environment that contains the Activate.ps1 script.
|
||||
|
||||
.Example
|
||||
Activate.ps1 -Verbose
|
||||
Activates the Python virtual environment that contains the Activate.ps1 script,
|
||||
and shows extra information about the activation as it executes.
|
||||
|
||||
.Example
|
||||
Activate.ps1 -VenvDir C:\Users\MyUser\Common\.venv
|
||||
Activates the Python virtual environment located in the specified location.
|
||||
|
||||
.Example
|
||||
Activate.ps1 -Prompt "MyPython"
|
||||
Activates the Python virtual environment that contains the Activate.ps1 script,
|
||||
and prefixes the current prompt with the specified string (surrounded in
|
||||
parentheses) while the virtual environment is active.
|
||||
|
||||
.Notes
|
||||
On Windows, it may be required to enable this Activate.ps1 script by setting the
|
||||
execution policy for the user. You can do this by issuing the following PowerShell
|
||||
command:
|
||||
|
||||
PS C:\> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
|
||||
|
||||
For more information on Execution Policies:
|
||||
https://go.microsoft.com/fwlink/?LinkID=135170
|
||||
|
||||
#>
|
||||
Param(
|
||||
[Parameter(Mandatory = $false)]
|
||||
[String]
|
||||
$VenvDir,
|
||||
[Parameter(Mandatory = $false)]
|
||||
[String]
|
||||
$Prompt
|
||||
)
|
||||
|
||||
<# Function declarations --------------------------------------------------- #>
|
||||
|
||||
<#
|
||||
.Synopsis
|
||||
Remove all shell session elements added by the Activate script, including the
|
||||
addition of the virtual environment's Python executable from the beginning of
|
||||
the PATH variable.
|
||||
|
||||
.Parameter NonDestructive
|
||||
If present, do not remove this function from the global namespace for the
|
||||
session.
|
||||
|
||||
#>
|
||||
function global:deactivate ([switch]$NonDestructive) {
|
||||
# Revert to original values
|
||||
|
||||
# The prior prompt:
|
||||
if (Test-Path -Path Function:_OLD_VIRTUAL_PROMPT) {
|
||||
Copy-Item -Path Function:_OLD_VIRTUAL_PROMPT -Destination Function:prompt
|
||||
Remove-Item -Path Function:_OLD_VIRTUAL_PROMPT
|
||||
}
|
||||
|
||||
# The prior PYTHONHOME:
|
||||
if (Test-Path -Path Env:_OLD_VIRTUAL_PYTHONHOME) {
|
||||
Copy-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME -Destination Env:PYTHONHOME
|
||||
Remove-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME
|
||||
}
|
||||
|
||||
# The prior PATH:
|
||||
if (Test-Path -Path Env:_OLD_VIRTUAL_PATH) {
|
||||
Copy-Item -Path Env:_OLD_VIRTUAL_PATH -Destination Env:PATH
|
||||
Remove-Item -Path Env:_OLD_VIRTUAL_PATH
|
||||
}
|
||||
|
||||
# Just remove the VIRTUAL_ENV altogether:
|
||||
if (Test-Path -Path Env:VIRTUAL_ENV) {
|
||||
Remove-Item -Path env:VIRTUAL_ENV
|
||||
}
|
||||
|
||||
# Just remove VIRTUAL_ENV_PROMPT altogether.
|
||||
if (Test-Path -Path Env:VIRTUAL_ENV_PROMPT) {
|
||||
Remove-Item -Path env:VIRTUAL_ENV_PROMPT
|
||||
}
|
||||
|
||||
# Just remove the _PYTHON_VENV_PROMPT_PREFIX altogether:
|
||||
if (Get-Variable -Name "_PYTHON_VENV_PROMPT_PREFIX" -ErrorAction SilentlyContinue) {
|
||||
Remove-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Scope Global -Force
|
||||
}
|
||||
|
||||
# Leave deactivate function in the global namespace if requested:
|
||||
if (-not $NonDestructive) {
|
||||
Remove-Item -Path function:deactivate
|
||||
}
|
||||
}
|
||||
|
||||
<#
|
||||
.Description
|
||||
Get-PyVenvConfig parses the values from the pyvenv.cfg file located in the
|
||||
given folder, and returns them in a map.
|
||||
|
||||
For each line in the pyvenv.cfg file, if that line can be parsed into exactly
|
||||
two strings separated by `=` (with any amount of whitespace surrounding the =)
|
||||
then it is considered a `key = value` line. The left hand string is the key,
|
||||
the right hand is the value.
|
||||
|
||||
If the value starts with a `'` or a `"` then the first and last character is
|
||||
stripped from the value before being captured.
|
||||
|
||||
.Parameter ConfigDir
|
||||
Path to the directory that contains the `pyvenv.cfg` file.
|
||||
#>
|
||||
function Get-PyVenvConfig(
|
||||
[String]
|
||||
$ConfigDir
|
||||
) {
|
||||
Write-Verbose "Given ConfigDir=$ConfigDir, obtain values in pyvenv.cfg"
|
||||
|
||||
# Ensure the file exists, and issue a warning if it doesn't (but still allow the function to continue).
|
||||
$pyvenvConfigPath = Join-Path -Resolve -Path $ConfigDir -ChildPath 'pyvenv.cfg' -ErrorAction Continue
|
||||
|
||||
# An empty map will be returned if no config file is found.
|
||||
$pyvenvConfig = @{ }
|
||||
|
||||
if ($pyvenvConfigPath) {
|
||||
|
||||
Write-Verbose "File exists, parse `key = value` lines"
|
||||
$pyvenvConfigContent = Get-Content -Path $pyvenvConfigPath
|
||||
|
||||
$pyvenvConfigContent | ForEach-Object {
|
||||
$keyval = $PSItem -split "\s*=\s*", 2
|
||||
if ($keyval[0] -and $keyval[1]) {
|
||||
$val = $keyval[1]
|
||||
|
||||
# Remove extraneous quotations around a string value.
|
||||
if ("'""".Contains($val.Substring(0, 1))) {
|
||||
$val = $val.Substring(1, $val.Length - 2)
|
||||
}
|
||||
|
||||
$pyvenvConfig[$keyval[0]] = $val
|
||||
Write-Verbose "Adding Key: '$($keyval[0])'='$val'"
|
||||
}
|
||||
}
|
||||
}
|
||||
return $pyvenvConfig
|
||||
}
|
||||
|
||||
|
||||
<# Begin Activate script --------------------------------------------------- #>
|
||||
|
||||
# Determine the containing directory of this script
|
||||
$VenvExecPath = Split-Path -Parent $MyInvocation.MyCommand.Definition
|
||||
$VenvExecDir = Get-Item -Path $VenvExecPath
|
||||
|
||||
Write-Verbose "Activation script is located in path: '$VenvExecPath'"
|
||||
Write-Verbose "VenvExecDir Fullname: '$($VenvExecDir.FullName)"
|
||||
Write-Verbose "VenvExecDir Name: '$($VenvExecDir.Name)"
|
||||
|
||||
# Set values required in priority: CmdLine, ConfigFile, Default
|
||||
# First, get the location of the virtual environment, it might not be
|
||||
# VenvExecDir if specified on the command line.
|
||||
if ($VenvDir) {
|
||||
Write-Verbose "VenvDir given as parameter, using '$VenvDir' to determine values"
|
||||
}
|
||||
else {
|
||||
Write-Verbose "VenvDir not given as a parameter, using parent directory name as VenvDir."
|
||||
$VenvDir = $VenvExecDir.Parent.FullName.TrimEnd("\\/")
|
||||
Write-Verbose "VenvDir=$VenvDir"
|
||||
}
|
||||
|
||||
# Next, read the `pyvenv.cfg` file to determine any required value such
|
||||
# as `prompt`.
|
||||
$pyvenvCfg = Get-PyVenvConfig -ConfigDir $VenvDir
|
||||
|
||||
# Next, set the prompt from the command line, or the config file, or
|
||||
# just use the name of the virtual environment folder.
|
||||
if ($Prompt) {
|
||||
Write-Verbose "Prompt specified as argument, using '$Prompt'"
|
||||
}
|
||||
else {
|
||||
Write-Verbose "Prompt not specified as argument to script, checking pyvenv.cfg value"
|
||||
if ($pyvenvCfg -and $pyvenvCfg['prompt']) {
|
||||
Write-Verbose " Setting based on value in pyvenv.cfg='$($pyvenvCfg['prompt'])'"
|
||||
$Prompt = $pyvenvCfg['prompt'];
|
||||
}
|
||||
else {
|
||||
Write-Verbose " Setting prompt based on parent's directory's name. (Is the directory name passed to venv module when creating the virtual environment)"
|
||||
Write-Verbose " Got leaf-name of $VenvDir='$(Split-Path -Path $venvDir -Leaf)'"
|
||||
$Prompt = Split-Path -Path $venvDir -Leaf
|
||||
}
|
||||
}
|
||||
|
||||
Write-Verbose "Prompt = '$Prompt'"
|
||||
Write-Verbose "VenvDir='$VenvDir'"
|
||||
|
||||
# Deactivate any currently active virtual environment, but leave the
|
||||
# deactivate function in place.
|
||||
deactivate -nondestructive
|
||||
|
||||
# Now set the environment variable VIRTUAL_ENV, used by many tools to determine
|
||||
# that there is an activated venv.
|
||||
$env:VIRTUAL_ENV = $VenvDir
|
||||
|
||||
if (-not $Env:VIRTUAL_ENV_DISABLE_PROMPT) {
|
||||
|
||||
Write-Verbose "Setting prompt to '$Prompt'"
|
||||
|
||||
# Set the prompt to include the env name
|
||||
# Make sure _OLD_VIRTUAL_PROMPT is global
|
||||
function global:_OLD_VIRTUAL_PROMPT { "" }
|
||||
Copy-Item -Path function:prompt -Destination function:_OLD_VIRTUAL_PROMPT
|
||||
New-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Description "Python virtual environment prompt prefix" -Scope Global -Option ReadOnly -Visibility Public -Value $Prompt
|
||||
|
||||
function global:prompt {
|
||||
Write-Host -NoNewline -ForegroundColor Green "($_PYTHON_VENV_PROMPT_PREFIX) "
|
||||
_OLD_VIRTUAL_PROMPT
|
||||
}
|
||||
$env:VIRTUAL_ENV_PROMPT = $Prompt
|
||||
}
|
||||
|
||||
# Clear PYTHONHOME
|
||||
if (Test-Path -Path Env:PYTHONHOME) {
|
||||
Copy-Item -Path Env:PYTHONHOME -Destination Env:_OLD_VIRTUAL_PYTHONHOME
|
||||
Remove-Item -Path Env:PYTHONHOME
|
||||
}
|
||||
|
||||
# Add the venv to the PATH
|
||||
Copy-Item -Path Env:PATH -Destination Env:_OLD_VIRTUAL_PATH
|
||||
$Env:PATH = "$VenvExecDir$([System.IO.Path]::PathSeparator)$Env:PATH"
|
69
env/bin/activate
vendored
Normal file
69
env/bin/activate
vendored
Normal file
@ -0,0 +1,69 @@
|
||||
# This file must be used with "source bin/activate" *from bash*
|
||||
# you cannot run it directly
|
||||
|
||||
deactivate () {
|
||||
# reset old environment variables
|
||||
if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then
|
||||
PATH="${_OLD_VIRTUAL_PATH:-}"
|
||||
export PATH
|
||||
unset _OLD_VIRTUAL_PATH
|
||||
fi
|
||||
if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then
|
||||
PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}"
|
||||
export PYTHONHOME
|
||||
unset _OLD_VIRTUAL_PYTHONHOME
|
||||
fi
|
||||
|
||||
# This should detect bash and zsh, which have a hash command that must
|
||||
# be called to get it to forget past commands. Without forgetting
|
||||
# past commands the $PATH changes we made may not be respected
|
||||
if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then
|
||||
hash -r 2> /dev/null
|
||||
fi
|
||||
|
||||
if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then
|
||||
PS1="${_OLD_VIRTUAL_PS1:-}"
|
||||
export PS1
|
||||
unset _OLD_VIRTUAL_PS1
|
||||
fi
|
||||
|
||||
unset VIRTUAL_ENV
|
||||
unset VIRTUAL_ENV_PROMPT
|
||||
if [ ! "${1:-}" = "nondestructive" ] ; then
|
||||
# Self destruct!
|
||||
unset -f deactivate
|
||||
fi
|
||||
}
|
||||
|
||||
# unset irrelevant variables
|
||||
deactivate nondestructive
|
||||
|
||||
VIRTUAL_ENV="/home/davidson/Projects/evolution_client/python/env"
|
||||
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="(env) ${PS1:-}"
|
||||
export PS1
|
||||
VIRTUAL_ENV_PROMPT="(env) "
|
||||
export VIRTUAL_ENV_PROMPT
|
||||
fi
|
||||
|
||||
# This should detect bash and zsh, which have a hash command that must
|
||||
# be called to get it to forget past commands. Without forgetting
|
||||
# past commands the $PATH changes we made may not be respected
|
||||
if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then
|
||||
hash -r 2> /dev/null
|
||||
fi
|
26
env/bin/activate.csh
vendored
Normal file
26
env/bin/activate.csh
vendored
Normal file
@ -0,0 +1,26 @@
|
||||
# This file must be used with "source bin/activate.csh" *from csh*.
|
||||
# You cannot run it directly.
|
||||
# Created by Davide Di Blasi <davidedb@gmail.com>.
|
||||
# Ported to Python 3.3 venv by Andrew Svetlov <andrew.svetlov@gmail.com>
|
||||
|
||||
alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; unsetenv VIRTUAL_ENV_PROMPT; test "\!:*" != "nondestructive" && unalias deactivate'
|
||||
|
||||
# Unset irrelevant variables.
|
||||
deactivate nondestructive
|
||||
|
||||
setenv VIRTUAL_ENV "/home/davidson/Projects/evolution_client/python/env"
|
||||
|
||||
set _OLD_VIRTUAL_PATH="$PATH"
|
||||
setenv PATH "$VIRTUAL_ENV/bin:$PATH"
|
||||
|
||||
|
||||
set _OLD_VIRTUAL_PROMPT="$prompt"
|
||||
|
||||
if (! "$?VIRTUAL_ENV_DISABLE_PROMPT") then
|
||||
set prompt = "(env) $prompt"
|
||||
setenv VIRTUAL_ENV_PROMPT "(env) "
|
||||
endif
|
||||
|
||||
alias pydoc python -m pydoc
|
||||
|
||||
rehash
|
69
env/bin/activate.fish
vendored
Normal file
69
env/bin/activate.fish
vendored
Normal file
@ -0,0 +1,69 @@
|
||||
# This file must be used with "source <venv>/bin/activate.fish" *from fish*
|
||||
# (https://fishshell.com/); you cannot run it directly.
|
||||
|
||||
function deactivate -d "Exit virtual environment and return to normal shell environment"
|
||||
# reset old environment variables
|
||||
if test -n "$_OLD_VIRTUAL_PATH"
|
||||
set -gx PATH $_OLD_VIRTUAL_PATH
|
||||
set -e _OLD_VIRTUAL_PATH
|
||||
end
|
||||
if test -n "$_OLD_VIRTUAL_PYTHONHOME"
|
||||
set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME
|
||||
set -e _OLD_VIRTUAL_PYTHONHOME
|
||||
end
|
||||
|
||||
if test -n "$_OLD_FISH_PROMPT_OVERRIDE"
|
||||
set -e _OLD_FISH_PROMPT_OVERRIDE
|
||||
# prevents error when using nested fish instances (Issue #93858)
|
||||
if functions -q _old_fish_prompt
|
||||
functions -e fish_prompt
|
||||
functions -c _old_fish_prompt fish_prompt
|
||||
functions -e _old_fish_prompt
|
||||
end
|
||||
end
|
||||
|
||||
set -e VIRTUAL_ENV
|
||||
set -e VIRTUAL_ENV_PROMPT
|
||||
if test "$argv[1]" != "nondestructive"
|
||||
# Self-destruct!
|
||||
functions -e deactivate
|
||||
end
|
||||
end
|
||||
|
||||
# Unset irrelevant variables.
|
||||
deactivate nondestructive
|
||||
|
||||
set -gx VIRTUAL_ENV "/home/davidson/Projects/evolution_client/python/env"
|
||||
|
||||
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) "(env) " (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 "(env) "
|
||||
end
|
8
env/bin/docutils
vendored
Executable file
8
env/bin/docutils
vendored
Executable file
@ -0,0 +1,8 @@
|
||||
#!/home/davidson/Projects/evolution_client/python/env/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from docutils.__main__ import main
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(main())
|
8
env/bin/keyring
vendored
Executable file
8
env/bin/keyring
vendored
Executable file
@ -0,0 +1,8 @@
|
||||
#!/home/davidson/Projects/evolution_client/python/env/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from keyring.cli import main
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(main())
|
8
env/bin/markdown-it
vendored
Executable file
8
env/bin/markdown-it
vendored
Executable file
@ -0,0 +1,8 @@
|
||||
#!/home/davidson/Projects/evolution_client/python/env/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from markdown_it.cli.parse import main
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(main())
|
8
env/bin/normalizer
vendored
Executable file
8
env/bin/normalizer
vendored
Executable file
@ -0,0 +1,8 @@
|
||||
#!/home/davidson/Projects/evolution_client/python/env/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from charset_normalizer.cli import cli_detect
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(cli_detect())
|
8
env/bin/pip
vendored
Executable file
8
env/bin/pip
vendored
Executable file
@ -0,0 +1,8 @@
|
||||
#!/home/davidson/Projects/evolution_client/python/env/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from pip._internal.cli.main import main
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(main())
|
8
env/bin/pip3
vendored
Executable file
8
env/bin/pip3
vendored
Executable file
@ -0,0 +1,8 @@
|
||||
#!/home/davidson/Projects/evolution_client/python/env/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from pip._internal.cli.main import main
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(main())
|
8
env/bin/pip3.10
vendored
Executable file
8
env/bin/pip3.10
vendored
Executable file
@ -0,0 +1,8 @@
|
||||
#!/home/davidson/Projects/evolution_client/python/env/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from pip._internal.cli.main import main
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(main())
|
8
env/bin/pkginfo
vendored
Executable file
8
env/bin/pkginfo
vendored
Executable file
@ -0,0 +1,8 @@
|
||||
#!/home/davidson/Projects/evolution_client/python/env/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from pkginfo.commandline import main
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(main())
|
8
env/bin/pygmentize
vendored
Executable file
8
env/bin/pygmentize
vendored
Executable file
@ -0,0 +1,8 @@
|
||||
#!/home/davidson/Projects/evolution_client/python/env/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
env/bin/python
vendored
Symbolic link
1
env/bin/python
vendored
Symbolic link
@ -0,0 +1 @@
|
||||
/usr/bin/python
|
1
env/bin/python3
vendored
Symbolic link
1
env/bin/python3
vendored
Symbolic link
@ -0,0 +1 @@
|
||||
python
|
1
env/bin/python3.10
vendored
Symbolic link
1
env/bin/python3.10
vendored
Symbolic link
@ -0,0 +1 @@
|
||||
python
|
8
env/bin/rst2html
vendored
Executable file
8
env/bin/rst2html
vendored
Executable file
@ -0,0 +1,8 @@
|
||||
#!/home/davidson/Projects/evolution_client/python/env/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from docutils.core import rst2html
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(rst2html())
|
8
env/bin/rst2html4
vendored
Executable file
8
env/bin/rst2html4
vendored
Executable file
@ -0,0 +1,8 @@
|
||||
#!/home/davidson/Projects/evolution_client/python/env/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from docutils.core import rst2html4
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(rst2html4())
|
8
env/bin/rst2html5
vendored
Executable file
8
env/bin/rst2html5
vendored
Executable file
@ -0,0 +1,8 @@
|
||||
#!/home/davidson/Projects/evolution_client/python/env/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from docutils.core import rst2html5
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(rst2html5())
|
8
env/bin/rst2latex
vendored
Executable file
8
env/bin/rst2latex
vendored
Executable file
@ -0,0 +1,8 @@
|
||||
#!/home/davidson/Projects/evolution_client/python/env/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from docutils.core import rst2latex
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(rst2latex())
|
8
env/bin/rst2man
vendored
Executable file
8
env/bin/rst2man
vendored
Executable file
@ -0,0 +1,8 @@
|
||||
#!/home/davidson/Projects/evolution_client/python/env/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from docutils.core import rst2man
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(rst2man())
|
8
env/bin/rst2odt
vendored
Executable file
8
env/bin/rst2odt
vendored
Executable file
@ -0,0 +1,8 @@
|
||||
#!/home/davidson/Projects/evolution_client/python/env/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from docutils.core import rst2odt
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(rst2odt())
|
8
env/bin/rst2pseudoxml
vendored
Executable file
8
env/bin/rst2pseudoxml
vendored
Executable file
@ -0,0 +1,8 @@
|
||||
#!/home/davidson/Projects/evolution_client/python/env/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from docutils.core import rst2pseudoxml
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(rst2pseudoxml())
|
8
env/bin/rst2s5
vendored
Executable file
8
env/bin/rst2s5
vendored
Executable file
@ -0,0 +1,8 @@
|
||||
#!/home/davidson/Projects/evolution_client/python/env/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from docutils.core import rst2s5
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(rst2s5())
|
8
env/bin/rst2xetex
vendored
Executable file
8
env/bin/rst2xetex
vendored
Executable file
@ -0,0 +1,8 @@
|
||||
#!/home/davidson/Projects/evolution_client/python/env/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from docutils.core import rst2xetex
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(rst2xetex())
|
8
env/bin/rst2xml
vendored
Executable file
8
env/bin/rst2xml
vendored
Executable file
@ -0,0 +1,8 @@
|
||||
#!/home/davidson/Projects/evolution_client/python/env/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from docutils.core import rst2xml
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(rst2xml())
|
8
env/bin/twine
vendored
Executable file
8
env/bin/twine
vendored
Executable file
@ -0,0 +1,8 @@
|
||||
#!/home/davidson/Projects/evolution_client/python/env/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from twine.__main__ import main
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(main())
|
8
env/bin/wheel
vendored
Executable file
8
env/bin/wheel
vendored
Executable file
@ -0,0 +1,8 @@
|
||||
#!/home/davidson/Projects/evolution_client/python/env/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from wheel.cli import main
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(main())
|
1
env/lib/python3.10/site-packages/SecretStorage-3.3.3.dist-info/INSTALLER
vendored
Normal file
1
env/lib/python3.10/site-packages/SecretStorage-3.3.3.dist-info/INSTALLER
vendored
Normal file
@ -0,0 +1 @@
|
||||
pip
|
25
env/lib/python3.10/site-packages/SecretStorage-3.3.3.dist-info/LICENSE
vendored
Normal file
25
env/lib/python3.10/site-packages/SecretStorage-3.3.3.dist-info/LICENSE
vendored
Normal file
@ -0,0 +1,25 @@
|
||||
Copyright 2012-2018 Dmitry Shachnev <mitya57@gmail.com>
|
||||
All rights reserved.
|
||||
|
||||
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 University 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 REGENTS 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.
|
114
env/lib/python3.10/site-packages/SecretStorage-3.3.3.dist-info/METADATA
vendored
Normal file
114
env/lib/python3.10/site-packages/SecretStorage-3.3.3.dist-info/METADATA
vendored
Normal file
@ -0,0 +1,114 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: SecretStorage
|
||||
Version: 3.3.3
|
||||
Summary: Python bindings to FreeDesktop.org Secret Service API
|
||||
Home-page: https://github.com/mitya57/secretstorage
|
||||
Author: Dmitry Shachnev
|
||||
Author-email: mitya57@gmail.com
|
||||
License: BSD 3-Clause License
|
||||
Platform: Linux
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: License :: OSI Approved :: BSD License
|
||||
Classifier: Operating System :: POSIX
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 3 :: Only
|
||||
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 :: 3.10
|
||||
Classifier: Topic :: Security
|
||||
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
||||
Requires-Python: >=3.6
|
||||
Description-Content-Type: text/x-rst
|
||||
License-File: LICENSE
|
||||
Requires-Dist: cryptography (>=2.0)
|
||||
Requires-Dist: jeepney (>=0.6)
|
||||
|
||||
.. image:: https://github.com/mitya57/secretstorage/workflows/tests/badge.svg
|
||||
:target: https://github.com/mitya57/secretstorage/actions
|
||||
:alt: GitHub Actions status
|
||||
.. image:: https://codecov.io/gh/mitya57/secretstorage/branch/master/graph/badge.svg
|
||||
:target: https://codecov.io/gh/mitya57/secretstorage
|
||||
:alt: Coverage status
|
||||
.. image:: https://readthedocs.org/projects/secretstorage/badge/?version=latest
|
||||
:target: https://secretstorage.readthedocs.io/en/latest/
|
||||
:alt: ReadTheDocs status
|
||||
|
||||
Module description
|
||||
==================
|
||||
|
||||
This module provides a way for securely storing passwords and other secrets.
|
||||
|
||||
It uses D-Bus `Secret Service`_ API that is supported by GNOME Keyring,
|
||||
KWallet (since version 5.97) and KeePassXC.
|
||||
|
||||
The main classes provided are ``secretstorage.Item``, representing a secret
|
||||
item (that has a *label*, a *secret* and some *attributes*) and
|
||||
``secretstorage.Collection``, a place items are stored in.
|
||||
|
||||
SecretStorage supports most of the functions provided by Secret Service,
|
||||
including creating and deleting items and collections, editing items,
|
||||
locking and unlocking collections (asynchronous unlocking is also supported).
|
||||
|
||||
The documentation can be found on `secretstorage.readthedocs.io`_.
|
||||
|
||||
.. _`Secret Service`: https://specifications.freedesktop.org/secret-service/
|
||||
.. _`secretstorage.readthedocs.io`: https://secretstorage.readthedocs.io/en/latest/
|
||||
|
||||
Building the module
|
||||
===================
|
||||
|
||||
.. note::
|
||||
SecretStorage 3.x supports Python 3.6 and newer versions.
|
||||
If you have an older version of Python, install SecretStorage 2.x::
|
||||
|
||||
pip install "SecretStorage < 3"
|
||||
|
||||
SecretStorage requires these packages to work:
|
||||
|
||||
* Jeepney_
|
||||
* `python-cryptography`_
|
||||
|
||||
To build SecretStorage, use this command::
|
||||
|
||||
python3 setup.py build
|
||||
|
||||
If you have Sphinx_ installed, you can also build the documentation::
|
||||
|
||||
python3 setup.py build_sphinx
|
||||
|
||||
.. _Jeepney: https://pypi.org/project/jeepney/
|
||||
.. _`python-cryptography`: https://pypi.org/project/cryptography/
|
||||
.. _Sphinx: http://sphinx-doc.org/
|
||||
|
||||
Testing the module
|
||||
==================
|
||||
|
||||
First, make sure that you have the Secret Service daemon installed.
|
||||
The `GNOME Keyring`_ is the reference server-side implementation for the
|
||||
Secret Service specification.
|
||||
|
||||
.. _`GNOME Keyring`: https://download.gnome.org/sources/gnome-keyring/
|
||||
|
||||
Then, start the daemon and unlock the ``default`` collection, if needed.
|
||||
The testsuite will fail to run if the ``default`` collection exists and is
|
||||
locked. If it does not exist, the testsuite can also use the temporary
|
||||
``session`` collection, as provided by the GNOME Keyring.
|
||||
|
||||
Then, run the Python unittest module::
|
||||
|
||||
python3 -m unittest discover -s tests
|
||||
|
||||
If you want to run the tests in an isolated or headless environment, run
|
||||
this command in a D-Bus session::
|
||||
|
||||
dbus-run-session -- python3 -m unittest discover -s tests
|
||||
|
||||
Get the code
|
||||
============
|
||||
|
||||
SecretStorage is available under BSD license. The source code can be found
|
||||
on GitHub_.
|
||||
|
||||
.. _GitHub: https://github.com/mitya57/secretstorage
|
21
env/lib/python3.10/site-packages/SecretStorage-3.3.3.dist-info/RECORD
vendored
Normal file
21
env/lib/python3.10/site-packages/SecretStorage-3.3.3.dist-info/RECORD
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
SecretStorage-3.3.3.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||
SecretStorage-3.3.3.dist-info/LICENSE,sha256=cPa_yndjPDXvohgyjtpUhtcFTCkU1hggmA43h5dSCiU,1504
|
||||
SecretStorage-3.3.3.dist-info/METADATA,sha256=ZScD5voEgjme04wlw9OZigESMxLa2xG_eaIeZ_IMqJI,4027
|
||||
SecretStorage-3.3.3.dist-info/RECORD,,
|
||||
SecretStorage-3.3.3.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
|
||||
SecretStorage-3.3.3.dist-info/top_level.txt,sha256=hveSi1OWGaEt3kEVbjmZ0M-ASPxi6y-nTPVa-d3c0B4,14
|
||||
secretstorage/__init__.py,sha256=W1p-HB1Qh12Dv6K8ml0Wj_MzN09_dEeezJjQZAHf-O4,3364
|
||||
secretstorage/__pycache__/__init__.cpython-310.pyc,,
|
||||
secretstorage/__pycache__/collection.cpython-310.pyc,,
|
||||
secretstorage/__pycache__/defines.cpython-310.pyc,,
|
||||
secretstorage/__pycache__/dhcrypto.cpython-310.pyc,,
|
||||
secretstorage/__pycache__/exceptions.cpython-310.pyc,,
|
||||
secretstorage/__pycache__/item.cpython-310.pyc,,
|
||||
secretstorage/__pycache__/util.cpython-310.pyc,,
|
||||
secretstorage/collection.py,sha256=lHwSOkFO5sRspgcUBoBI8ZG2au2bcUSO6X64ksVdnsQ,9436
|
||||
secretstorage/defines.py,sha256=DzUrEWzSvBlN8kK2nVXnLGlCZv7HWNyfN1AYqRmjKGE,807
|
||||
secretstorage/dhcrypto.py,sha256=BiuDoNvNmd8i7Ul4ENouRnbqFE3SUmTUSAn6RVvn7Tg,2578
|
||||
secretstorage/exceptions.py,sha256=1uUZXTua4jRZf4PKDIT2SVWcSKP2lP97s8r3eJZudio,1655
|
||||
secretstorage/item.py,sha256=3niFSjOzwrB2hV1jrg78RXgBsTrpw44852VpZHXUpeE,5813
|
||||
secretstorage/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
secretstorage/util.py,sha256=vHu01QaooMQ5sRdRDFX9pg7rrzfJWF9vg0plm3Zg0Po,6755
|
5
env/lib/python3.10/site-packages/SecretStorage-3.3.3.dist-info/WHEEL
vendored
Normal file
5
env/lib/python3.10/site-packages/SecretStorage-3.3.3.dist-info/WHEEL
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
Wheel-Version: 1.0
|
||||
Generator: bdist_wheel (0.37.1)
|
||||
Root-Is-Purelib: true
|
||||
Tag: py3-none-any
|
||||
|
1
env/lib/python3.10/site-packages/SecretStorage-3.3.3.dist-info/top_level.txt
vendored
Normal file
1
env/lib/python3.10/site-packages/SecretStorage-3.3.3.dist-info/top_level.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
secretstorage
|
BIN
env/lib/python3.10/site-packages/__pycache__/typing_extensions.cpython-310.pyc
vendored
Normal file
BIN
env/lib/python3.10/site-packages/__pycache__/typing_extensions.cpython-310.pyc
vendored
Normal file
Binary file not shown.
BIN
env/lib/python3.10/site-packages/_cffi_backend.cpython-310-x86_64-linux-gnu.so
vendored
Executable file
BIN
env/lib/python3.10/site-packages/_cffi_backend.cpython-310-x86_64-linux-gnu.so
vendored
Executable file
Binary file not shown.
132
env/lib/python3.10/site-packages/_distutils_hack/__init__.py
vendored
Normal file
132
env/lib/python3.10/site-packages/_distutils_hack/__init__.py
vendored
Normal file
@ -0,0 +1,132 @@
|
||||
import sys
|
||||
import os
|
||||
import re
|
||||
import importlib
|
||||
import warnings
|
||||
|
||||
|
||||
is_pypy = '__pypy__' in sys.builtin_module_names
|
||||
|
||||
|
||||
warnings.filterwarnings('ignore',
|
||||
r'.+ distutils\b.+ deprecated',
|
||||
DeprecationWarning)
|
||||
|
||||
|
||||
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
|
||||
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
|
||||
warnings.warn("Setuptools is replacing distutils.")
|
||||
mods = [name for name in sys.modules if re.match(r'distutils\b', name)]
|
||||
for name in mods:
|
||||
del sys.modules[name]
|
||||
|
||||
|
||||
def enabled():
|
||||
"""
|
||||
Allow selection of distutils by environment variable.
|
||||
"""
|
||||
which = os.environ.get('SETUPTOOLS_USE_DISTUTILS', 'stdlib')
|
||||
return which == 'local'
|
||||
|
||||
|
||||
def ensure_local_distutils():
|
||||
clear_distutils()
|
||||
|
||||
# With the DistutilsMetaFinder in place,
|
||||
# perform an import to cause distutils to be
|
||||
# loaded from setuptools._distutils. Ref #2906.
|
||||
add_shim()
|
||||
importlib.import_module('distutils')
|
||||
remove_shim()
|
||||
|
||||
# check that submodules load as expected
|
||||
core = importlib.import_module('distutils.core')
|
||||
assert '_distutils' in core.__file__, core.__file__
|
||||
|
||||
|
||||
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 DistutilsMetaFinder:
|
||||
def find_spec(self, fullname, path, target=None):
|
||||
if path is not None:
|
||||
return
|
||||
|
||||
method_name = 'spec_for_{fullname}'.format(**locals())
|
||||
method = getattr(self, method_name, lambda: None)
|
||||
return method()
|
||||
|
||||
def spec_for_distutils(self):
|
||||
import importlib.abc
|
||||
import importlib.util
|
||||
|
||||
class DistutilsLoader(importlib.abc.Loader):
|
||||
|
||||
def create_module(self, spec):
|
||||
return importlib.import_module('setuptools._distutils')
|
||||
|
||||
def exec_module(self, module):
|
||||
pass
|
||||
|
||||
return importlib.util.spec_from_loader('distutils', DistutilsLoader())
|
||||
|
||||
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
|
||||
|
||||
@staticmethod
|
||||
def pip_imported_during_build():
|
||||
"""
|
||||
Detect if pip is being imported in a build script. Ref #2355.
|
||||
"""
|
||||
import traceback
|
||||
return any(
|
||||
frame.f_globals['__file__'].endswith('setup.py')
|
||||
for frame, line in traceback.walk_stack(None)
|
||||
)
|
||||
|
||||
|
||||
DISTUTILS_FINDER = DistutilsMetaFinder()
|
||||
|
||||
|
||||
def add_shim():
|
||||
sys.meta_path.insert(0, DISTUTILS_FINDER)
|
||||
|
||||
|
||||
def remove_shim():
|
||||
try:
|
||||
sys.meta_path.remove(DISTUTILS_FINDER)
|
||||
except ValueError:
|
||||
pass
|
BIN
env/lib/python3.10/site-packages/_distutils_hack/__pycache__/__init__.cpython-310.pyc
vendored
Normal file
BIN
env/lib/python3.10/site-packages/_distutils_hack/__pycache__/__init__.cpython-310.pyc
vendored
Normal file
Binary file not shown.
BIN
env/lib/python3.10/site-packages/_distutils_hack/__pycache__/override.cpython-310.pyc
vendored
Normal file
BIN
env/lib/python3.10/site-packages/_distutils_hack/__pycache__/override.cpython-310.pyc
vendored
Normal file
Binary file not shown.
1
env/lib/python3.10/site-packages/_distutils_hack/override.py
vendored
Normal file
1
env/lib/python3.10/site-packages/_distutils_hack/override.py
vendored
Normal file
@ -0,0 +1 @@
|
||||
__import__('_distutils_hack').do_override()
|
1
env/lib/python3.10/site-packages/backports.tarfile-1.2.0.dist-info/INSTALLER
vendored
Normal file
1
env/lib/python3.10/site-packages/backports.tarfile-1.2.0.dist-info/INSTALLER
vendored
Normal file
@ -0,0 +1 @@
|
||||
pip
|
17
env/lib/python3.10/site-packages/backports.tarfile-1.2.0.dist-info/LICENSE
vendored
Normal file
17
env/lib/python3.10/site-packages/backports.tarfile-1.2.0.dist-info/LICENSE
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
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.
|
46
env/lib/python3.10/site-packages/backports.tarfile-1.2.0.dist-info/METADATA
vendored
Normal file
46
env/lib/python3.10/site-packages/backports.tarfile-1.2.0.dist-info/METADATA
vendored
Normal file
@ -0,0 +1,46 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: backports.tarfile
|
||||
Version: 1.2.0
|
||||
Summary: Backport of CPython tarfile module
|
||||
Author-email: "Jason R. Coombs" <jaraco@jaraco.com>
|
||||
Project-URL: Homepage, https://github.com/jaraco/backports.tarfile
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: License :: OSI Approved :: MIT License
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3 :: Only
|
||||
Requires-Python: >=3.8
|
||||
Description-Content-Type: text/x-rst
|
||||
License-File: LICENSE
|
||||
Provides-Extra: docs
|
||||
Requires-Dist: sphinx >=3.5 ; extra == 'docs'
|
||||
Requires-Dist: jaraco.packaging >=9.3 ; extra == 'docs'
|
||||
Requires-Dist: rst.linker >=1.9 ; extra == 'docs'
|
||||
Requires-Dist: furo ; extra == 'docs'
|
||||
Requires-Dist: sphinx-lint ; extra == 'docs'
|
||||
Provides-Extra: testing
|
||||
Requires-Dist: pytest !=8.1.*,>=6 ; extra == 'testing'
|
||||
Requires-Dist: pytest-checkdocs >=2.4 ; extra == 'testing'
|
||||
Requires-Dist: pytest-cov ; extra == 'testing'
|
||||
Requires-Dist: pytest-enabler >=2.2 ; extra == 'testing'
|
||||
Requires-Dist: jaraco.test ; extra == 'testing'
|
||||
Requires-Dist: pytest !=8.0.* ; extra == 'testing'
|
||||
|
||||
.. image:: https://img.shields.io/pypi/v/backports.tarfile.svg
|
||||
:target: https://pypi.org/project/backports.tarfile
|
||||
|
||||
.. image:: https://img.shields.io/pypi/pyversions/backports.tarfile.svg
|
||||
|
||||
.. image:: https://github.com/jaraco/backports.tarfile/actions/workflows/main.yml/badge.svg
|
||||
:target: https://github.com/jaraco/backports.tarfile/actions?query=workflow%3A%22tests%22
|
||||
:alt: tests
|
||||
|
||||
.. image:: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/charliermarsh/ruff/main/assets/badge/v2.json
|
||||
:target: https://github.com/astral-sh/ruff
|
||||
:alt: Ruff
|
||||
|
||||
.. .. image:: https://readthedocs.org/projects/backportstarfile/badge/?version=latest
|
||||
.. :target: https://backportstarfile.readthedocs.io/en/latest/?badge=latest
|
||||
|
||||
.. image:: https://img.shields.io/badge/skeleton-2024-informational
|
||||
:target: https://blog.jaraco.com/skeleton
|
16
env/lib/python3.10/site-packages/backports.tarfile-1.2.0.dist-info/RECORD
vendored
Normal file
16
env/lib/python3.10/site-packages/backports.tarfile-1.2.0.dist-info/RECORD
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
backports.tarfile-1.2.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||
backports.tarfile-1.2.0.dist-info/LICENSE,sha256=htoPAa6uRjSKPD1GUZXcHOzN55956HdppkuNoEsqR0E,1023
|
||||
backports.tarfile-1.2.0.dist-info/METADATA,sha256=ghXFTq132dxaEIolxr3HK1mZqm9iyUmaRANZQSr6WlE,2020
|
||||
backports.tarfile-1.2.0.dist-info/RECORD,,
|
||||
backports.tarfile-1.2.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
||||
backports.tarfile-1.2.0.dist-info/top_level.txt,sha256=cGjaLMOoBR1FK0ApojtzWVmViTtJ7JGIK_HwXiEsvtU,10
|
||||
backports/__init__.py,sha256=iOEMwnlORWezdO8-2vxBIPSR37D7JGjluZ8f55vzxls,81
|
||||
backports/__pycache__/__init__.cpython-310.pyc,,
|
||||
backports/tarfile/__init__.py,sha256=Pwf2qUIfB0SolJPCKcx3vz3UEu_aids4g4sAfxy94qg,108491
|
||||
backports/tarfile/__main__.py,sha256=Yw2oGT1afrz2eBskzdPYL8ReB_3liApmhFkN2EbDmc4,59
|
||||
backports/tarfile/__pycache__/__init__.cpython-310.pyc,,
|
||||
backports/tarfile/__pycache__/__main__.cpython-310.pyc,,
|
||||
backports/tarfile/compat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
backports/tarfile/compat/__pycache__/__init__.cpython-310.pyc,,
|
||||
backports/tarfile/compat/__pycache__/py38.cpython-310.pyc,,
|
||||
backports/tarfile/compat/py38.py,sha256=iYkyt_gvWjLzGUTJD9TuTfMMjOk-ersXZmRlvQYN2qE,568
|
5
env/lib/python3.10/site-packages/backports.tarfile-1.2.0.dist-info/WHEEL
vendored
Normal file
5
env/lib/python3.10/site-packages/backports.tarfile-1.2.0.dist-info/WHEEL
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
Wheel-Version: 1.0
|
||||
Generator: bdist_wheel (0.43.0)
|
||||
Root-Is-Purelib: true
|
||||
Tag: py3-none-any
|
||||
|
1
env/lib/python3.10/site-packages/backports.tarfile-1.2.0.dist-info/top_level.txt
vendored
Normal file
1
env/lib/python3.10/site-packages/backports.tarfile-1.2.0.dist-info/top_level.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
backports
|
1
env/lib/python3.10/site-packages/backports/__init__.py
vendored
Normal file
1
env/lib/python3.10/site-packages/backports/__init__.py
vendored
Normal file
@ -0,0 +1 @@
|
||||
__path__ = __import__('pkgutil').extend_path(__path__, __name__) # type: ignore
|
BIN
env/lib/python3.10/site-packages/backports/__pycache__/__init__.cpython-310.pyc
vendored
Normal file
BIN
env/lib/python3.10/site-packages/backports/__pycache__/__init__.cpython-310.pyc
vendored
Normal file
Binary file not shown.
2937
env/lib/python3.10/site-packages/backports/tarfile/__init__.py
vendored
Normal file
2937
env/lib/python3.10/site-packages/backports/tarfile/__init__.py
vendored
Normal file
File diff suppressed because it is too large
Load Diff
5
env/lib/python3.10/site-packages/backports/tarfile/__main__.py
vendored
Normal file
5
env/lib/python3.10/site-packages/backports/tarfile/__main__.py
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
from . import main
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
BIN
env/lib/python3.10/site-packages/backports/tarfile/__pycache__/__init__.cpython-310.pyc
vendored
Normal file
BIN
env/lib/python3.10/site-packages/backports/tarfile/__pycache__/__init__.cpython-310.pyc
vendored
Normal file
Binary file not shown.
BIN
env/lib/python3.10/site-packages/backports/tarfile/__pycache__/__main__.cpython-310.pyc
vendored
Normal file
BIN
env/lib/python3.10/site-packages/backports/tarfile/__pycache__/__main__.cpython-310.pyc
vendored
Normal file
Binary file not shown.
0
env/lib/python3.10/site-packages/backports/tarfile/compat/__init__.py
vendored
Normal file
0
env/lib/python3.10/site-packages/backports/tarfile/compat/__init__.py
vendored
Normal file
BIN
env/lib/python3.10/site-packages/backports/tarfile/compat/__pycache__/__init__.cpython-310.pyc
vendored
Normal file
BIN
env/lib/python3.10/site-packages/backports/tarfile/compat/__pycache__/__init__.cpython-310.pyc
vendored
Normal file
Binary file not shown.
BIN
env/lib/python3.10/site-packages/backports/tarfile/compat/__pycache__/py38.cpython-310.pyc
vendored
Normal file
BIN
env/lib/python3.10/site-packages/backports/tarfile/compat/__pycache__/py38.cpython-310.pyc
vendored
Normal file
Binary file not shown.
24
env/lib/python3.10/site-packages/backports/tarfile/compat/py38.py
vendored
Normal file
24
env/lib/python3.10/site-packages/backports/tarfile/compat/py38.py
vendored
Normal file
@ -0,0 +1,24 @@
|
||||
import sys
|
||||
|
||||
|
||||
if sys.version_info < (3, 9):
|
||||
|
||||
def removesuffix(self, suffix):
|
||||
# suffix='' should not call self[:-0].
|
||||
if suffix and self.endswith(suffix):
|
||||
return self[: -len(suffix)]
|
||||
else:
|
||||
return self[:]
|
||||
|
||||
def removeprefix(self, prefix):
|
||||
if self.startswith(prefix):
|
||||
return self[len(prefix) :]
|
||||
else:
|
||||
return self[:]
|
||||
else:
|
||||
|
||||
def removesuffix(self, suffix):
|
||||
return self.removesuffix(suffix)
|
||||
|
||||
def removeprefix(self, prefix):
|
||||
return self.removeprefix(prefix)
|
1
env/lib/python3.10/site-packages/certifi-2024.8.30.dist-info/INSTALLER
vendored
Normal file
1
env/lib/python3.10/site-packages/certifi-2024.8.30.dist-info/INSTALLER
vendored
Normal file
@ -0,0 +1 @@
|
||||
pip
|
20
env/lib/python3.10/site-packages/certifi-2024.8.30.dist-info/LICENSE
vendored
Normal file
20
env/lib/python3.10/site-packages/certifi-2024.8.30.dist-info/LICENSE
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
This package contains a modified version of ca-bundle.crt:
|
||||
|
||||
ca-bundle.crt -- Bundle of CA Root Certificates
|
||||
|
||||
This is a bundle of X.509 certificates of public Certificate Authorities
|
||||
(CA). These were automatically extracted from Mozilla's root certificates
|
||||
file (certdata.txt). This file can be found in the mozilla source tree:
|
||||
https://hg.mozilla.org/mozilla-central/file/tip/security/nss/lib/ckfw/builtins/certdata.txt
|
||||
It contains the certificates in PEM format and therefore
|
||||
can be directly used with curl / libcurl / php_curl, or with
|
||||
an Apache+mod_ssl webserver for SSL client authentication.
|
||||
Just configure this file as the SSLCACertificateFile.#
|
||||
|
||||
***** BEGIN LICENSE BLOCK *****
|
||||
This Source Code Form is subject to the terms of the Mozilla Public License,
|
||||
v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain
|
||||
one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
***** END LICENSE BLOCK *****
|
||||
@(#) $RCSfile: certdata.txt,v $ $Revision: 1.80 $ $Date: 2011/11/03 15:11:58 $
|
67
env/lib/python3.10/site-packages/certifi-2024.8.30.dist-info/METADATA
vendored
Normal file
67
env/lib/python3.10/site-packages/certifi-2024.8.30.dist-info/METADATA
vendored
Normal file
@ -0,0 +1,67 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: certifi
|
||||
Version: 2024.8.30
|
||||
Summary: Python package for providing Mozilla's CA Bundle.
|
||||
Home-page: https://github.com/certifi/python-certifi
|
||||
Author: Kenneth Reitz
|
||||
Author-email: me@kennethreitz.com
|
||||
License: MPL-2.0
|
||||
Project-URL: Source, https://github.com/certifi/python-certifi
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)
|
||||
Classifier: Natural Language :: English
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3 :: Only
|
||||
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 :: 3.10
|
||||
Classifier: Programming Language :: Python :: 3.11
|
||||
Classifier: Programming Language :: Python :: 3.12
|
||||
Requires-Python: >=3.6
|
||||
License-File: LICENSE
|
||||
|
||||
Certifi: Python SSL Certificates
|
||||
================================
|
||||
|
||||
Certifi provides Mozilla's carefully curated collection of Root Certificates for
|
||||
validating the trustworthiness of SSL certificates while verifying the identity
|
||||
of TLS hosts. It has been extracted from the `Requests`_ project.
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
``certifi`` is available on PyPI. Simply install it with ``pip``::
|
||||
|
||||
$ pip install certifi
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
||||
To reference the installed certificate authority (CA) bundle, you can use the
|
||||
built-in function::
|
||||
|
||||
>>> import certifi
|
||||
|
||||
>>> certifi.where()
|
||||
'/usr/local/lib/python3.7/site-packages/certifi/cacert.pem'
|
||||
|
||||
Or from the command line::
|
||||
|
||||
$ python -m certifi
|
||||
/usr/local/lib/python3.7/site-packages/certifi/cacert.pem
|
||||
|
||||
Enjoy!
|
||||
|
||||
.. _`Requests`: https://requests.readthedocs.io/en/master/
|
||||
|
||||
Addition/Removal of Certificates
|
||||
--------------------------------
|
||||
|
||||
Certifi does not support any addition/removal or other modification of the
|
||||
CA trust store content. This project is intended to provide a reliable and
|
||||
highly portable root of trust to python deployments. Look to upstream projects
|
||||
for methods to use alternate trust.
|
14
env/lib/python3.10/site-packages/certifi-2024.8.30.dist-info/RECORD
vendored
Normal file
14
env/lib/python3.10/site-packages/certifi-2024.8.30.dist-info/RECORD
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
certifi-2024.8.30.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||
certifi-2024.8.30.dist-info/LICENSE,sha256=6TcW2mucDVpKHfYP5pWzcPBpVgPSH2-D8FPkLPwQyvc,989
|
||||
certifi-2024.8.30.dist-info/METADATA,sha256=GhBHRVUN6a4ZdUgE_N5wmukJfyuoE-QyIl8Y3ifNQBM,2222
|
||||
certifi-2024.8.30.dist-info/RECORD,,
|
||||
certifi-2024.8.30.dist-info/WHEEL,sha256=UvcQYKBHoFqaQd6LKyqHw9fxEolWLQnlzP0h_LgJAfI,91
|
||||
certifi-2024.8.30.dist-info/top_level.txt,sha256=KMu4vUCfsjLrkPbSNdgdekS-pVJzBAJFO__nI8NF6-U,8
|
||||
certifi/__init__.py,sha256=p_GYZrjUwPBUhpLlCZoGb0miKBKSqDAyZC5DvIuqbHQ,94
|
||||
certifi/__main__.py,sha256=xBBoj905TUWBLRGANOcf7oi6e-3dMP4cEoG9OyMs11g,243
|
||||
certifi/__pycache__/__init__.cpython-310.pyc,,
|
||||
certifi/__pycache__/__main__.cpython-310.pyc,,
|
||||
certifi/__pycache__/core.cpython-310.pyc,,
|
||||
certifi/cacert.pem,sha256=lO3rZukXdPyuk6BWUJFOKQliWaXH6HGh9l1GGrUgG0c,299427
|
||||
certifi/core.py,sha256=qRDDFyXVJwTB_EmoGppaXU_R9qCZvhl-EzxPMuV3nTA,4426
|
||||
certifi/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
5
env/lib/python3.10/site-packages/certifi-2024.8.30.dist-info/WHEEL
vendored
Normal file
5
env/lib/python3.10/site-packages/certifi-2024.8.30.dist-info/WHEEL
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
Wheel-Version: 1.0
|
||||
Generator: setuptools (74.0.0)
|
||||
Root-Is-Purelib: true
|
||||
Tag: py3-none-any
|
||||
|
1
env/lib/python3.10/site-packages/certifi-2024.8.30.dist-info/top_level.txt
vendored
Normal file
1
env/lib/python3.10/site-packages/certifi-2024.8.30.dist-info/top_level.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
certifi
|
4
env/lib/python3.10/site-packages/certifi/__init__.py
vendored
Normal file
4
env/lib/python3.10/site-packages/certifi/__init__.py
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
from .core import contents, where
|
||||
|
||||
__all__ = ["contents", "where"]
|
||||
__version__ = "2024.08.30"
|
12
env/lib/python3.10/site-packages/certifi/__main__.py
vendored
Normal file
12
env/lib/python3.10/site-packages/certifi/__main__.py
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
import argparse
|
||||
|
||||
from certifi import contents, where
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("-c", "--contents", action="store_true")
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.contents:
|
||||
print(contents())
|
||||
else:
|
||||
print(where())
|
BIN
env/lib/python3.10/site-packages/certifi/__pycache__/__init__.cpython-310.pyc
vendored
Normal file
BIN
env/lib/python3.10/site-packages/certifi/__pycache__/__init__.cpython-310.pyc
vendored
Normal file
Binary file not shown.
BIN
env/lib/python3.10/site-packages/certifi/__pycache__/__main__.cpython-310.pyc
vendored
Normal file
BIN
env/lib/python3.10/site-packages/certifi/__pycache__/__main__.cpython-310.pyc
vendored
Normal file
Binary file not shown.
BIN
env/lib/python3.10/site-packages/certifi/__pycache__/core.cpython-310.pyc
vendored
Normal file
BIN
env/lib/python3.10/site-packages/certifi/__pycache__/core.cpython-310.pyc
vendored
Normal file
Binary file not shown.
4929
env/lib/python3.10/site-packages/certifi/cacert.pem
vendored
Normal file
4929
env/lib/python3.10/site-packages/certifi/cacert.pem
vendored
Normal file
File diff suppressed because it is too large
Load Diff
114
env/lib/python3.10/site-packages/certifi/core.py
vendored
Normal file
114
env/lib/python3.10/site-packages/certifi/core.py
vendored
Normal file
@ -0,0 +1,114 @@
|
||||
"""
|
||||
certifi.py
|
||||
~~~~~~~~~~
|
||||
|
||||
This module returns the installation location of cacert.pem or its contents.
|
||||
"""
|
||||
import sys
|
||||
import atexit
|
||||
|
||||
def exit_cacert_ctx() -> None:
|
||||
_CACERT_CTX.__exit__(None, None, None) # type: ignore[union-attr]
|
||||
|
||||
|
||||
if sys.version_info >= (3, 11):
|
||||
|
||||
from importlib.resources import as_file, files
|
||||
|
||||
_CACERT_CTX = None
|
||||
_CACERT_PATH = None
|
||||
|
||||
def where() -> str:
|
||||
# This is slightly terrible, but we want to delay extracting the file
|
||||
# in cases where we're inside of a zipimport situation until someone
|
||||
# actually calls where(), but we don't want to re-extract the file
|
||||
# on every call of where(), so we'll do it once then store it in a
|
||||
# global variable.
|
||||
global _CACERT_CTX
|
||||
global _CACERT_PATH
|
||||
if _CACERT_PATH is None:
|
||||
# This is slightly janky, the importlib.resources API wants you to
|
||||
# manage the cleanup of this file, so it doesn't actually return a
|
||||
# path, it returns a context manager that will give you the path
|
||||
# when you enter it and will do any cleanup when you leave it. In
|
||||
# the common case of not needing a temporary file, it will just
|
||||
# return the file system location and the __exit__() is a no-op.
|
||||
#
|
||||
# We also have to hold onto the actual context manager, because
|
||||
# it will do the cleanup whenever it gets garbage collected, so
|
||||
# we will also store that at the global level as well.
|
||||
_CACERT_CTX = as_file(files("certifi").joinpath("cacert.pem"))
|
||||
_CACERT_PATH = str(_CACERT_CTX.__enter__())
|
||||
atexit.register(exit_cacert_ctx)
|
||||
|
||||
return _CACERT_PATH
|
||||
|
||||
def contents() -> str:
|
||||
return files("certifi").joinpath("cacert.pem").read_text(encoding="ascii")
|
||||
|
||||
elif sys.version_info >= (3, 7):
|
||||
|
||||
from importlib.resources import path as get_path, read_text
|
||||
|
||||
_CACERT_CTX = None
|
||||
_CACERT_PATH = None
|
||||
|
||||
def where() -> str:
|
||||
# This is slightly terrible, but we want to delay extracting the
|
||||
# file in cases where we're inside of a zipimport situation until
|
||||
# someone actually calls where(), but we don't want to re-extract
|
||||
# the file on every call of where(), so we'll do it once then store
|
||||
# it in a global variable.
|
||||
global _CACERT_CTX
|
||||
global _CACERT_PATH
|
||||
if _CACERT_PATH is None:
|
||||
# This is slightly janky, the importlib.resources API wants you
|
||||
# to manage the cleanup of this file, so it doesn't actually
|
||||
# return a path, it returns a context manager that will give
|
||||
# you the path when you enter it and will do any cleanup when
|
||||
# you leave it. In the common case of not needing a temporary
|
||||
# file, it will just return the file system location and the
|
||||
# __exit__() is a no-op.
|
||||
#
|
||||
# We also have to hold onto the actual context manager, because
|
||||
# it will do the cleanup whenever it gets garbage collected, so
|
||||
# we will also store that at the global level as well.
|
||||
_CACERT_CTX = get_path("certifi", "cacert.pem")
|
||||
_CACERT_PATH = str(_CACERT_CTX.__enter__())
|
||||
atexit.register(exit_cacert_ctx)
|
||||
|
||||
return _CACERT_PATH
|
||||
|
||||
def contents() -> str:
|
||||
return read_text("certifi", "cacert.pem", encoding="ascii")
|
||||
|
||||
else:
|
||||
import os
|
||||
import types
|
||||
from typing import Union
|
||||
|
||||
Package = Union[types.ModuleType, str]
|
||||
Resource = Union[str, "os.PathLike"]
|
||||
|
||||
# This fallback will work for Python versions prior to 3.7 that lack the
|
||||
# importlib.resources module but relies on the existing `where` function
|
||||
# so won't address issues with environments like PyOxidizer that don't set
|
||||
# __file__ on modules.
|
||||
def read_text(
|
||||
package: Package,
|
||||
resource: Resource,
|
||||
encoding: str = 'utf-8',
|
||||
errors: str = 'strict'
|
||||
) -> str:
|
||||
with open(where(), encoding=encoding) as data:
|
||||
return data.read()
|
||||
|
||||
# If we don't have importlib.resources, then we will just do the old logic
|
||||
# of assuming we're on the filesystem and munge the path directly.
|
||||
def where() -> str:
|
||||
f = os.path.dirname(__file__)
|
||||
|
||||
return os.path.join(f, "cacert.pem")
|
||||
|
||||
def contents() -> str:
|
||||
return read_text("certifi", "cacert.pem", encoding="ascii")
|
0
env/lib/python3.10/site-packages/certifi/py.typed
vendored
Normal file
0
env/lib/python3.10/site-packages/certifi/py.typed
vendored
Normal file
1
env/lib/python3.10/site-packages/cffi-1.17.1.dist-info/INSTALLER
vendored
Normal file
1
env/lib/python3.10/site-packages/cffi-1.17.1.dist-info/INSTALLER
vendored
Normal file
@ -0,0 +1 @@
|
||||
pip
|
26
env/lib/python3.10/site-packages/cffi-1.17.1.dist-info/LICENSE
vendored
Normal file
26
env/lib/python3.10/site-packages/cffi-1.17.1.dist-info/LICENSE
vendored
Normal file
@ -0,0 +1,26 @@
|
||||
|
||||
Except when otherwise stated (look for LICENSE files in directories or
|
||||
information at the beginning of each file) all software and
|
||||
documentation is licensed as follows:
|
||||
|
||||
The MIT License
|
||||
|
||||
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.
|
||||
|
40
env/lib/python3.10/site-packages/cffi-1.17.1.dist-info/METADATA
vendored
Normal file
40
env/lib/python3.10/site-packages/cffi-1.17.1.dist-info/METADATA
vendored
Normal file
@ -0,0 +1,40 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: cffi
|
||||
Version: 1.17.1
|
||||
Summary: Foreign Function Interface for Python calling C code.
|
||||
Home-page: http://cffi.readthedocs.org
|
||||
Author: Armin Rigo, Maciej Fijalkowski
|
||||
Author-email: python-cffi@googlegroups.com
|
||||
License: MIT
|
||||
Project-URL: Documentation, http://cffi.readthedocs.org/
|
||||
Project-URL: Source Code, https://github.com/python-cffi/cffi
|
||||
Project-URL: Issue Tracker, https://github.com/python-cffi/cffi/issues
|
||||
Project-URL: Changelog, https://cffi.readthedocs.io/en/latest/whatsnew.html
|
||||
Project-URL: Downloads, https://github.com/python-cffi/cffi/releases
|
||||
Project-URL: Contact, https://groups.google.com/forum/#!forum/python-cffi
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
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.12
|
||||
Classifier: Programming Language :: Python :: 3.13
|
||||
Classifier: Programming Language :: Python :: Implementation :: CPython
|
||||
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
||||
Classifier: License :: OSI Approved :: MIT License
|
||||
Requires-Python: >=3.8
|
||||
License-File: LICENSE
|
||||
Requires-Dist: pycparser
|
||||
|
||||
|
||||
CFFI
|
||||
====
|
||||
|
||||
Foreign Function Interface for Python calling C code.
|
||||
Please see the `Documentation <http://cffi.readthedocs.org/>`_.
|
||||
|
||||
Contact
|
||||
-------
|
||||
|
||||
`Mailing list <https://groups.google.com/forum/#!forum/python-cffi>`_
|
48
env/lib/python3.10/site-packages/cffi-1.17.1.dist-info/RECORD
vendored
Normal file
48
env/lib/python3.10/site-packages/cffi-1.17.1.dist-info/RECORD
vendored
Normal file
@ -0,0 +1,48 @@
|
||||
_cffi_backend.cpython-310-x86_64-linux-gnu.so,sha256=pciUVwDoiYkGtuoos7gi5U2TSTeBHVoDkneECMzaObI,985520
|
||||
cffi-1.17.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||
cffi-1.17.1.dist-info/LICENSE,sha256=BLgPWwd7vtaICM_rreteNSPyqMmpZJXFh72W3x6sKjM,1294
|
||||
cffi-1.17.1.dist-info/METADATA,sha256=u6nuvP_qPJKu2zvIbi2zkGzVu7KjnnRIYUFyIrOY3j4,1531
|
||||
cffi-1.17.1.dist-info/RECORD,,
|
||||
cffi-1.17.1.dist-info/WHEEL,sha256=AxiTY2sz_GcPOsKDeggQV_FGgAhpyJSKs70WYTq6kog,151
|
||||
cffi-1.17.1.dist-info/entry_points.txt,sha256=y6jTxnyeuLnL-XJcDv8uML3n6wyYiGRg8MTp_QGJ9Ho,75
|
||||
cffi-1.17.1.dist-info/top_level.txt,sha256=rE7WR3rZfNKxWI9-jn6hsHCAl7MDkB-FmuQbxWjFehQ,19
|
||||
cffi/__init__.py,sha256=H6t_ebva6EeHpUuItFLW1gbRp94eZRNJODLaWKdbx1I,513
|
||||
cffi/__pycache__/__init__.cpython-310.pyc,,
|
||||
cffi/__pycache__/_imp_emulation.cpython-310.pyc,,
|
||||
cffi/__pycache__/_shimmed_dist_utils.cpython-310.pyc,,
|
||||
cffi/__pycache__/api.cpython-310.pyc,,
|
||||
cffi/__pycache__/backend_ctypes.cpython-310.pyc,,
|
||||
cffi/__pycache__/cffi_opcode.cpython-310.pyc,,
|
||||
cffi/__pycache__/commontypes.cpython-310.pyc,,
|
||||
cffi/__pycache__/cparser.cpython-310.pyc,,
|
||||
cffi/__pycache__/error.cpython-310.pyc,,
|
||||
cffi/__pycache__/ffiplatform.cpython-310.pyc,,
|
||||
cffi/__pycache__/lock.cpython-310.pyc,,
|
||||
cffi/__pycache__/model.cpython-310.pyc,,
|
||||
cffi/__pycache__/pkgconfig.cpython-310.pyc,,
|
||||
cffi/__pycache__/recompiler.cpython-310.pyc,,
|
||||
cffi/__pycache__/setuptools_ext.cpython-310.pyc,,
|
||||
cffi/__pycache__/vengine_cpy.cpython-310.pyc,,
|
||||
cffi/__pycache__/vengine_gen.cpython-310.pyc,,
|
||||
cffi/__pycache__/verifier.cpython-310.pyc,,
|
||||
cffi/_cffi_errors.h,sha256=zQXt7uR_m8gUW-fI2hJg0KoSkJFwXv8RGUkEDZ177dQ,3908
|
||||
cffi/_cffi_include.h,sha256=Exhmgm9qzHWzWivjfTe0D7Xp4rPUkVxdNuwGhMTMzbw,15055
|
||||
cffi/_embedding.h,sha256=EDKw5QrLvQoe3uosXB3H1xPVTYxsn33eV3A43zsA_Fw,18787
|
||||
cffi/_imp_emulation.py,sha256=RxREG8zAbI2RPGBww90u_5fi8sWdahpdipOoPzkp7C0,2960
|
||||
cffi/_shimmed_dist_utils.py,sha256=Bjj2wm8yZbvFvWEx5AEfmqaqZyZFhYfoyLLQHkXZuao,2230
|
||||
cffi/api.py,sha256=alBv6hZQkjpmZplBphdaRn2lPO9-CORs_M7ixabvZWI,42169
|
||||
cffi/backend_ctypes.py,sha256=h5ZIzLc6BFVXnGyc9xPqZWUS7qGy7yFSDqXe68Sa8z4,42454
|
||||
cffi/cffi_opcode.py,sha256=JDV5l0R0_OadBX_uE7xPPTYtMdmpp8I9UYd6av7aiDU,5731
|
||||
cffi/commontypes.py,sha256=7N6zPtCFlvxXMWhHV08psUjdYIK2XgsN3yo5dgua_v4,2805
|
||||
cffi/cparser.py,sha256=0qI3mEzZSNVcCangoyXOoAcL-RhpQL08eG8798T024s,44789
|
||||
cffi/error.py,sha256=v6xTiS4U0kvDcy4h_BDRo5v39ZQuj-IMRYLv5ETddZs,877
|
||||
cffi/ffiplatform.py,sha256=avxFjdikYGJoEtmJO7ewVmwG_VEVl6EZ_WaNhZYCqv4,3584
|
||||
cffi/lock.py,sha256=l9TTdwMIMpi6jDkJGnQgE9cvTIR7CAntIJr8EGHt3pY,747
|
||||
cffi/model.py,sha256=W30UFQZE73jL5Mx5N81YT77us2W2iJjTm0XYfnwz1cg,21797
|
||||
cffi/parse_c_type.h,sha256=OdwQfwM9ktq6vlCB43exFQmxDBtj2MBNdK8LYl15tjw,5976
|
||||
cffi/pkgconfig.py,sha256=LP1w7vmWvmKwyqLaU1Z243FOWGNQMrgMUZrvgFuOlco,4374
|
||||
cffi/recompiler.py,sha256=sim4Tm7lamt2Jn8uzKN0wMYp6ODByk3g7of47-h9LD4,65367
|
||||
cffi/setuptools_ext.py,sha256=-ebj79lO2_AUH-kRcaja2pKY1Z_5tloGwsJgzK8P3Cc,8871
|
||||
cffi/vengine_cpy.py,sha256=8UagT6ZEOZf6Dju7_CfNulue8CnsHLEzJYhnqUhoF04,43752
|
||||
cffi/vengine_gen.py,sha256=DUlEIrDiVin1Pnhn1sfoamnS5NLqfJcOdhRoeSNeJRg,26939
|
||||
cffi/verifier.py,sha256=oX8jpaohg2Qm3aHcznidAdvrVm5N4sQYG0a3Eo5mIl4,11182
|
6
env/lib/python3.10/site-packages/cffi-1.17.1.dist-info/WHEEL
vendored
Normal file
6
env/lib/python3.10/site-packages/cffi-1.17.1.dist-info/WHEEL
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
Wheel-Version: 1.0
|
||||
Generator: setuptools (74.1.1)
|
||||
Root-Is-Purelib: false
|
||||
Tag: cp310-cp310-manylinux_2_17_x86_64
|
||||
Tag: cp310-cp310-manylinux2014_x86_64
|
||||
|
2
env/lib/python3.10/site-packages/cffi-1.17.1.dist-info/entry_points.txt
vendored
Normal file
2
env/lib/python3.10/site-packages/cffi-1.17.1.dist-info/entry_points.txt
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
[distutils.setup_keywords]
|
||||
cffi_modules = cffi.setuptools_ext:cffi_modules
|
2
env/lib/python3.10/site-packages/cffi-1.17.1.dist-info/top_level.txt
vendored
Normal file
2
env/lib/python3.10/site-packages/cffi-1.17.1.dist-info/top_level.txt
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
_cffi_backend
|
||||
cffi
|
14
env/lib/python3.10/site-packages/cffi/__init__.py
vendored
Normal file
14
env/lib/python3.10/site-packages/cffi/__init__.py
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
__all__ = ['FFI', 'VerificationError', 'VerificationMissing', 'CDefError',
|
||||
'FFIError']
|
||||
|
||||
from .api import FFI
|
||||
from .error import CDefError, FFIError, VerificationError, VerificationMissing
|
||||
from .error import PkgConfigError
|
||||
|
||||
__version__ = "1.17.1"
|
||||
__version_info__ = (1, 17, 1)
|
||||
|
||||
# The verifier module file names are based on the CRC32 of a string that
|
||||
# contains the following version number. It may be older than __version__
|
||||
# if nothing is clearly incompatible.
|
||||
__version_verifier_modules__ = "0.8.6"
|
BIN
env/lib/python3.10/site-packages/cffi/__pycache__/__init__.cpython-310.pyc
vendored
Normal file
BIN
env/lib/python3.10/site-packages/cffi/__pycache__/__init__.cpython-310.pyc
vendored
Normal file
Binary file not shown.
BIN
env/lib/python3.10/site-packages/cffi/__pycache__/_imp_emulation.cpython-310.pyc
vendored
Normal file
BIN
env/lib/python3.10/site-packages/cffi/__pycache__/_imp_emulation.cpython-310.pyc
vendored
Normal file
Binary file not shown.
BIN
env/lib/python3.10/site-packages/cffi/__pycache__/_shimmed_dist_utils.cpython-310.pyc
vendored
Normal file
BIN
env/lib/python3.10/site-packages/cffi/__pycache__/_shimmed_dist_utils.cpython-310.pyc
vendored
Normal file
Binary file not shown.
BIN
env/lib/python3.10/site-packages/cffi/__pycache__/api.cpython-310.pyc
vendored
Normal file
BIN
env/lib/python3.10/site-packages/cffi/__pycache__/api.cpython-310.pyc
vendored
Normal file
Binary file not shown.
BIN
env/lib/python3.10/site-packages/cffi/__pycache__/backend_ctypes.cpython-310.pyc
vendored
Normal file
BIN
env/lib/python3.10/site-packages/cffi/__pycache__/backend_ctypes.cpython-310.pyc
vendored
Normal file
Binary file not shown.
BIN
env/lib/python3.10/site-packages/cffi/__pycache__/cffi_opcode.cpython-310.pyc
vendored
Normal file
BIN
env/lib/python3.10/site-packages/cffi/__pycache__/cffi_opcode.cpython-310.pyc
vendored
Normal file
Binary file not shown.
BIN
env/lib/python3.10/site-packages/cffi/__pycache__/commontypes.cpython-310.pyc
vendored
Normal file
BIN
env/lib/python3.10/site-packages/cffi/__pycache__/commontypes.cpython-310.pyc
vendored
Normal file
Binary file not shown.
BIN
env/lib/python3.10/site-packages/cffi/__pycache__/cparser.cpython-310.pyc
vendored
Normal file
BIN
env/lib/python3.10/site-packages/cffi/__pycache__/cparser.cpython-310.pyc
vendored
Normal file
Binary file not shown.
BIN
env/lib/python3.10/site-packages/cffi/__pycache__/error.cpython-310.pyc
vendored
Normal file
BIN
env/lib/python3.10/site-packages/cffi/__pycache__/error.cpython-310.pyc
vendored
Normal file
Binary file not shown.
BIN
env/lib/python3.10/site-packages/cffi/__pycache__/ffiplatform.cpython-310.pyc
vendored
Normal file
BIN
env/lib/python3.10/site-packages/cffi/__pycache__/ffiplatform.cpython-310.pyc
vendored
Normal file
Binary file not shown.
BIN
env/lib/python3.10/site-packages/cffi/__pycache__/lock.cpython-310.pyc
vendored
Normal file
BIN
env/lib/python3.10/site-packages/cffi/__pycache__/lock.cpython-310.pyc
vendored
Normal file
Binary file not shown.
BIN
env/lib/python3.10/site-packages/cffi/__pycache__/model.cpython-310.pyc
vendored
Normal file
BIN
env/lib/python3.10/site-packages/cffi/__pycache__/model.cpython-310.pyc
vendored
Normal file
Binary file not shown.
BIN
env/lib/python3.10/site-packages/cffi/__pycache__/pkgconfig.cpython-310.pyc
vendored
Normal file
BIN
env/lib/python3.10/site-packages/cffi/__pycache__/pkgconfig.cpython-310.pyc
vendored
Normal file
Binary file not shown.
BIN
env/lib/python3.10/site-packages/cffi/__pycache__/recompiler.cpython-310.pyc
vendored
Normal file
BIN
env/lib/python3.10/site-packages/cffi/__pycache__/recompiler.cpython-310.pyc
vendored
Normal file
Binary file not shown.
BIN
env/lib/python3.10/site-packages/cffi/__pycache__/setuptools_ext.cpython-310.pyc
vendored
Normal file
BIN
env/lib/python3.10/site-packages/cffi/__pycache__/setuptools_ext.cpython-310.pyc
vendored
Normal file
Binary file not shown.
BIN
env/lib/python3.10/site-packages/cffi/__pycache__/vengine_cpy.cpython-310.pyc
vendored
Normal file
BIN
env/lib/python3.10/site-packages/cffi/__pycache__/vengine_cpy.cpython-310.pyc
vendored
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user