
Security News
Browserslist-rs Gets Major Refactor, Cutting Binary Size by Over 1MB
Browserslist-rs now uses static data to reduce binary size by over 1MB, improving memory use and performance for Rust-based frontend tools.
Dispatch function's parameters through the callstack omitting arguments on intermediary functions. (a.k.a.: stack variable)
Dispatch function’s parameters through the callstack omitting arguments on intermediary functions.
https://pypi.org/project/stackvar/
::
pip install -U stackvar
.. code:: python
import stackvar
def test_stackvar(): # sending within a context with stackvar.send(send_email, email='rsanchez@example.com'): foo() # Use default value send_email() # pass specific value send_email('jerry@example.com')
def foo(): # intermediary function bar()
def bar(): # intermediary function send_email()
@stackvar.receive() def send_email(email: stackvar.Variable = 'morty@example.com'): print(f'Sending email to={email}')
if name == 'main': test_stackvar()
Will output
::
Sending email to=rsanchez@example.com Sending email to=morty@example.com Sending email to=jerry@example.com
.. code:: python
import stackvar import uuid
def cheat_sheet_doc(): # Using namespace (recommended method) my_namespace = stackvar.Namespace(uuid.uuid4()) @stackvar.receive(my_namespace) def send_email(email: stackvar.Variable = 'morty@example.com'): print(f'Sending email to={email}') with stackvar.send(my_namespace, email='rsanchez@example.com'): send_email()
# Automatic namespace (solved from function)
@stackvar.receive()
def send_email2(email: stackvar.Variable = 'morty@example.com'):
print(f'Sending email to={email}')
with stackvar.send(send_email2, email='rsanchez@example.com'):
send_email2()
# Without decorator
ns_uuid2 = stackvar.Namespace(uuid.uuid4())
def send_email_nodecorator():
email1 = ns_uuid2.email1
# setting default value for a variable
email2 = getattr(ns_uuid2, 'email2', 'jerry@example.com')
print(f'Sending email1 to={email1} and {email2}')
# another fancier way to set a default
email2 = stackvar.get(ns_uuid2, email2='summer@example.com')
print(f'Sending email1 to={email1} and {email2}')
with stackvar.send(ns_uuid2, email1='rsanchez@example.com'):
send_email_nodecorator()
# No default values
ns_uuid3 = stackvar.Namespace(uuid.uuid4())
@stackvar.receive(ns_uuid3)
def send_no_default(email1: stackvar.Variable, email2: stackvar.Variable):
print(f'Sending={email1} and {email2}')
with stackvar.send(ns_uuid3,
email1='rsanchez@example.com',
email2='summer@example.com'):
send_no_default()
# Using Factory for mutable values
ns_uuid4 = stackvar.Namespace(uuid.uuid4())
@stackvar.receive(ns_uuid4)
def send_factory(email_list: stackvar.Factory = list):
email_list.append('squanchy@example.com')
print(f'Sending to={email_list}')
with stackvar.send(ns_uuid4):
send_factory()
if name == 'main': cheat_sheet_doc()
Check examples at https://gitlab.com/joaduo/stackvar/-/tree/main/tests
FAQs
Dispatch function's parameters through the callstack omitting arguments on intermediary functions. (a.k.a.: stack variable)
We found that stackvar demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Browserslist-rs now uses static data to reduce binary size by over 1MB, improving memory use and performance for Rust-based frontend tools.
Research
Security News
Eight new malicious Firefox extensions impersonate games, steal OAuth tokens, hijack sessions, and exploit browser permissions to spy on users.
Security News
The official Go SDK for the Model Context Protocol is in development, with a stable, production-ready release expected by August 2025.