
Security News
npm Adopts OIDC for Trusted Publishing in CI/CD Workflows
npm now supports Trusted Publishing with OIDC, enabling secure package publishing directly from CI/CD workflows without relying on long-lived tokens.
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
npm now supports Trusted Publishing with OIDC, enabling secure package publishing directly from CI/CD workflows without relying on long-lived tokens.
Research
/Security News
A RubyGems malware campaign used 60 malicious packages posing as automation tools to steal credentials from social media and marketing tool users.
Security News
The CNA Scorecard ranks CVE issuers by data completeness, revealing major gaps in patch info and software identifiers across thousands of vulnerabilities.