__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
from __future__ import annotations
import contextlib
import enum
import os
from collections.abc import Generator
from collections.abc import MutableMapping
from typing import NamedTuple
from typing import Union
_Unset = enum.Enum('_Unset', 'UNSET')
UNSET = _Unset.UNSET
class Var(NamedTuple):
name: str
default: str = ''
SubstitutionT = tuple[Union[str, Var], ...]
ValueT = Union[str, _Unset, SubstitutionT]
PatchesT = tuple[tuple[str, ValueT], ...]
def format_env(parts: SubstitutionT, env: MutableMapping[str, str]) -> str:
return ''.join(
env.get(part.name, part.default) if isinstance(part, Var) else part
for part in parts
)
@contextlib.contextmanager
def envcontext(
patch: PatchesT,
_env: MutableMapping[str, str] | None = None,
) -> Generator[None]:
"""In this context, `os.environ` is modified according to `patch`.
`patch` is an iterable of 2-tuples (key, value):
`key`: string
`value`:
- string: `environ[key] == value` inside the context.
- UNSET: `key not in environ` inside the context.
- template: A template is a tuple of strings and Var which will be
replaced with the previous environment
"""
env = os.environ if _env is None else _env
before = dict(env)
for k, v in patch:
if v is UNSET:
env.pop(k, None)
elif isinstance(v, tuple):
env[k] = format_env(v, before)
else:
env[k] = v
try:
yield
finally:
env.clear()
env.update(before)
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| __pycache__ | Folder | 0755 |
|
|
| commands | Folder | 0755 |
|
|
| languages | Folder | 0755 |
|
|
| meta_hooks | Folder | 0755 |
|
|
| resources | Folder | 0755 |
|
|
| __init__.py | File | 0 B | 0644 |
|
| __main__.py | File | 127 B | 0644 |
|
| all_languages.py | File | 1.43 KB | 0644 |
|
| clientlib.py | File | 16.42 KB | 0644 |
|
| color.py | File | 3.14 KB | 0644 |
|
| constants.py | File | 282 B | 0644 |
|
| envcontext.py | File | 1.56 KB | 0644 |
|
| error_handler.py | File | 2.56 KB | 0644 |
|
| errors.py | File | 78 B | 0644 |
|
| file_lock.py | File | 2.3 KB | 0644 |
|
| git.py | File | 8.33 KB | 0644 |
|
| hook.py | File | 1.48 KB | 0644 |
|
| lang_base.py | File | 5.26 KB | 0644 |
|
| logging_handler.py | File | 1019 B | 0644 |
|
| main.py | File | 15.56 KB | 0644 |
|
| output.py | File | 911 B | 0644 |
|
| parse_shebang.py | File | 2.42 KB | 0644 |
|
| prefix.py | File | 495 B | 0644 |
|
| repository.py | File | 7.43 KB | 0644 |
|
| staged_files_only.py | File | 4.06 KB | 0644 |
|
| store.py | File | 8.27 KB | 0644 |
|
| util.py | File | 6.88 KB | 0644 |
|
| xargs.py | File | 5.42 KB | 0644 |
|
| yaml.py | File | 561 B | 0644 |
|
| yaml_rewrite.py | File | 1.31 KB | 0644 |
|