Browse Source
- Remove virtual environment directories (bin/, lib64, include/, pyvenv.cfg) from version control - Update .gitignore to prevent future virtual environment commits - Add services.py for database logging functionality - Add test_logging.py for testing the logging systemmaster
19 changed files with 6 additions and 650 deletions
@ -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" |
|||
@ -1,70 +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 |
|||
|
|||
# Call hash to forget past commands. Without forgetting |
|||
# past commands the $PATH changes we made may not be respected |
|||
hash -r 2> /dev/null |
|||
|
|||
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 |
|||
|
|||
# on Windows, a path can contain colons and backslashes and has to be converted: |
|||
if [ "${OSTYPE:-}" = "cygwin" ] || [ "${OSTYPE:-}" = "msys" ] ; then |
|||
# transform D:\path\to\venv to /d/path/to/venv on MSYS |
|||
# and to /cygdrive/d/path/to/venv on Cygwin |
|||
export VIRTUAL_ENV=$(cygpath /home/alan/python_projects/plutus/plutus) |
|||
else |
|||
# use the path as-is |
|||
export VIRTUAL_ENV=/home/alan/python_projects/plutus/plutus |
|||
fi |
|||
|
|||
_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='(plutus) '"${PS1:-}" |
|||
export PS1 |
|||
VIRTUAL_ENV_PROMPT='(plutus) ' |
|||
export VIRTUAL_ENV_PROMPT |
|||
fi |
|||
|
|||
# Call hash to forget past commands. Without forgetting |
|||
# past commands the $PATH changes we made may not be respected |
|||
hash -r 2> /dev/null |
|||
@ -1,27 +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/alan/python_projects/plutus/plutus |
|||
|
|||
set _OLD_VIRTUAL_PATH="$PATH" |
|||
setenv PATH "$VIRTUAL_ENV/"bin":$PATH" |
|||
|
|||
|
|||
set _OLD_VIRTUAL_PROMPT="$prompt" |
|||
|
|||
if (! "$?VIRTUAL_ENV_DISABLE_PROMPT") then |
|||
set prompt = '(plutus) '"$prompt" |
|||
setenv VIRTUAL_ENV_PROMPT '(plutus) ' |
|||
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/alan/python_projects/plutus/plutus |
|||
|
|||
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) '(plutus) ' (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 '(plutus) ' |
|||
end |
|||
@ -1,8 +0,0 @@ |
|||
#!/home/alan/python_projects/plutus/plutus/bin/python3.12 |
|||
# -*- coding: utf-8 -*- |
|||
import re |
|||
import sys |
|||
from alembic.config 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/alan/python_projects/plutus/plutus/bin/python3.12 |
|||
# -*- coding: utf-8 -*- |
|||
import re |
|||
import sys |
|||
from flask.cli 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/alan/python_projects/plutus/plutus/bin/python3.12 |
|||
# -*- coding: utf-8 -*- |
|||
import re |
|||
import sys |
|||
from mako.cmd import cmdline |
|||
if __name__ == '__main__': |
|||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) |
|||
sys.exit(cmdline()) |
|||
@ -1,8 +0,0 @@ |
|||
#!/home/alan/python_projects/plutus/plutus/bin/python3.12 |
|||
# -*- coding: utf-8 -*- |
|||
import re |
|||
import sys |
|||
from charset_normalizer import cli |
|||
if __name__ == '__main__': |
|||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) |
|||
sys.exit(cli.cli_detect()) |
|||
@ -1,8 +0,0 @@ |
|||
#!/home/alan/python_projects/plutus/plutus/bin/python3.12 |
|||
# -*- 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/alan/python_projects/plutus/plutus/bin/python3.12 |
|||
# -*- 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/alan/python_projects/plutus/plutus/bin/python3.12 |
|||
# -*- 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 +0,0 @@ |
|||
python3.12 |
|||
@ -1 +0,0 @@ |
|||
python3.12 |
|||
@ -1 +0,0 @@ |
|||
/usr/bin/python3.12 |
|||
@ -1,8 +0,0 @@ |
|||
#!/home/alan/python_projects/plutus/plutus/bin/python3.12 |
|||
# -*- 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,164 +0,0 @@ |
|||
/* -*- indent-tabs-mode: nil; tab-width: 4; -*- */ |
|||
|
|||
/* Greenlet object interface */ |
|||
|
|||
#ifndef Py_GREENLETOBJECT_H |
|||
#define Py_GREENLETOBJECT_H |
|||
|
|||
|
|||
#include <Python.h> |
|||
|
|||
#ifdef __cplusplus |
|||
extern "C" { |
|||
#endif |
|||
|
|||
/* This is deprecated and undocumented. It does not change. */ |
|||
#define GREENLET_VERSION "1.0.0" |
|||
|
|||
#ifndef GREENLET_MODULE |
|||
#define implementation_ptr_t void* |
|||
#endif |
|||
|
|||
typedef struct _greenlet { |
|||
PyObject_HEAD |
|||
PyObject* weakreflist; |
|||
PyObject* dict; |
|||
implementation_ptr_t pimpl; |
|||
} PyGreenlet; |
|||
|
|||
#define PyGreenlet_Check(op) (op && PyObject_TypeCheck(op, &PyGreenlet_Type)) |
|||
|
|||
|
|||
/* C API functions */ |
|||
|
|||
/* Total number of symbols that are exported */ |
|||
#define PyGreenlet_API_pointers 12 |
|||
|
|||
#define PyGreenlet_Type_NUM 0 |
|||
#define PyExc_GreenletError_NUM 1 |
|||
#define PyExc_GreenletExit_NUM 2 |
|||
|
|||
#define PyGreenlet_New_NUM 3 |
|||
#define PyGreenlet_GetCurrent_NUM 4 |
|||
#define PyGreenlet_Throw_NUM 5 |
|||
#define PyGreenlet_Switch_NUM 6 |
|||
#define PyGreenlet_SetParent_NUM 7 |
|||
|
|||
#define PyGreenlet_MAIN_NUM 8 |
|||
#define PyGreenlet_STARTED_NUM 9 |
|||
#define PyGreenlet_ACTIVE_NUM 10 |
|||
#define PyGreenlet_GET_PARENT_NUM 11 |
|||
|
|||
#ifndef GREENLET_MODULE |
|||
/* This section is used by modules that uses the greenlet C API */ |
|||
static void** _PyGreenlet_API = NULL; |
|||
|
|||
# define PyGreenlet_Type \ |
|||
(*(PyTypeObject*)_PyGreenlet_API[PyGreenlet_Type_NUM]) |
|||
|
|||
# define PyExc_GreenletError \ |
|||
((PyObject*)_PyGreenlet_API[PyExc_GreenletError_NUM]) |
|||
|
|||
# define PyExc_GreenletExit \ |
|||
((PyObject*)_PyGreenlet_API[PyExc_GreenletExit_NUM]) |
|||
|
|||
/*
|
|||
* PyGreenlet_New(PyObject *args) |
|||
* |
|||
* greenlet.greenlet(run, parent=None) |
|||
*/ |
|||
# define PyGreenlet_New \ |
|||
(*(PyGreenlet * (*)(PyObject * run, PyGreenlet * parent)) \ |
|||
_PyGreenlet_API[PyGreenlet_New_NUM]) |
|||
|
|||
/*
|
|||
* PyGreenlet_GetCurrent(void) |
|||
* |
|||
* greenlet.getcurrent() |
|||
*/ |
|||
# define PyGreenlet_GetCurrent \ |
|||
(*(PyGreenlet * (*)(void)) _PyGreenlet_API[PyGreenlet_GetCurrent_NUM]) |
|||
|
|||
/*
|
|||
* PyGreenlet_Throw( |
|||
* PyGreenlet *greenlet, |
|||
* PyObject *typ, |
|||
* PyObject *val, |
|||
* PyObject *tb) |
|||
* |
|||
* g.throw(...) |
|||
*/ |
|||
# define PyGreenlet_Throw \ |
|||
(*(PyObject * (*)(PyGreenlet * self, \ |
|||
PyObject * typ, \ |
|||
PyObject * val, \ |
|||
PyObject * tb)) \ |
|||
_PyGreenlet_API[PyGreenlet_Throw_NUM]) |
|||
|
|||
/*
|
|||
* PyGreenlet_Switch(PyGreenlet *greenlet, PyObject *args) |
|||
* |
|||
* g.switch(*args, **kwargs) |
|||
*/ |
|||
# define PyGreenlet_Switch \ |
|||
(*(PyObject * \ |
|||
(*)(PyGreenlet * greenlet, PyObject * args, PyObject * kwargs)) \ |
|||
_PyGreenlet_API[PyGreenlet_Switch_NUM]) |
|||
|
|||
/*
|
|||
* PyGreenlet_SetParent(PyObject *greenlet, PyObject *new_parent) |
|||
* |
|||
* g.parent = new_parent |
|||
*/ |
|||
# define PyGreenlet_SetParent \ |
|||
(*(int (*)(PyGreenlet * greenlet, PyGreenlet * nparent)) \ |
|||
_PyGreenlet_API[PyGreenlet_SetParent_NUM]) |
|||
|
|||
/*
|
|||
* PyGreenlet_GetParent(PyObject* greenlet) |
|||
* |
|||
* return greenlet.parent; |
|||
* |
|||
* This could return NULL even if there is no exception active. |
|||
* If it does not return NULL, you are responsible for decrementing the |
|||
* reference count. |
|||
*/ |
|||
# define PyGreenlet_GetParent \ |
|||
(*(PyGreenlet* (*)(PyGreenlet*)) \ |
|||
_PyGreenlet_API[PyGreenlet_GET_PARENT_NUM]) |
|||
|
|||
/*
|
|||
* deprecated, undocumented alias. |
|||
*/ |
|||
# define PyGreenlet_GET_PARENT PyGreenlet_GetParent |
|||
|
|||
# define PyGreenlet_MAIN \ |
|||
(*(int (*)(PyGreenlet*)) \ |
|||
_PyGreenlet_API[PyGreenlet_MAIN_NUM]) |
|||
|
|||
# define PyGreenlet_STARTED \ |
|||
(*(int (*)(PyGreenlet*)) \ |
|||
_PyGreenlet_API[PyGreenlet_STARTED_NUM]) |
|||
|
|||
# define PyGreenlet_ACTIVE \ |
|||
(*(int (*)(PyGreenlet*)) \ |
|||
_PyGreenlet_API[PyGreenlet_ACTIVE_NUM]) |
|||
|
|||
|
|||
|
|||
|
|||
/* Macro that imports greenlet and initializes C API */ |
|||
/* NOTE: This has actually moved to ``greenlet._greenlet._C_API``, but we
|
|||
keep the older definition to be sure older code that might have a copy of |
|||
the header still works. */ |
|||
# define PyGreenlet_Import() \ |
|||
{ \ |
|||
_PyGreenlet_API = (void**)PyCapsule_Import("greenlet._C_API", 0); \ |
|||
} |
|||
|
|||
#endif /* GREENLET_MODULE */ |
|||
|
|||
#ifdef __cplusplus |
|||
} |
|||
#endif |
|||
#endif /* !Py_GREENLETOBJECT_H */ |
|||
@ -1 +0,0 @@ |
|||
lib |
|||
@ -1,5 +0,0 @@ |
|||
home = /usr/bin |
|||
include-system-site-packages = false |
|||
version = 3.12.3 |
|||
executable = /usr/bin/python3.12 |
|||
command = /usr/bin/python3.12 -m venv /home/alan/python_projects/plutus/plutus |
|||
Loading…
Reference in new issue