Skip to main content

Utility for initialization that runs an extra function once before a function is called

Project description

English | 简体中文

init_once

Introduction

init_once is a decorator that ensures an initialization function is executed only once before the first call of the decorated function. The initialization logic will not be repeated on subsequent calls to the decorated function.

Dependencies and Version Requirements

  • Python 3.8 or higher

Usage

Basic Syntax

@init_once(initializer, *init_args, **init_kwds)
def func(...):
    ...
  • initializer: The initialization function that needs to be executed once.
  • *init_args: Positional arguments to pass to initializer.
  • **init_kwds: Keyword arguments to pass to initializer.

Simple Example

from init_once import init_once

# Initialization function: runs only once
def init_func(msg: str):
    print(f"Initializing msg: {msg}")

@init_once(init_func, "hello")
def main_task(data: str):
    print(f"Processing: {data}")

# First call: init_func executes first, then main_task
main_task("first")
# Output:
# Initializing msg: hello
# Processing: first

# Subsequent calls: only main_task executes
main_task("second")
# Output:
# Processing: second

Notes

  1. Applicability: This decorator is only for simple initialization (return ignored). If you need the return value, you should handle the initialization explicitly instead of using this decorator.
  2. Async and Threading: Async and thread-safe versions are to be implemented in the future.

License

This project is licensed under the MIT License. See the LICENSE file for details.


If you have any questions or suggestions for improvement, feel free to open an Issue or submit a Pull Request.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

init_once-0.1.1.tar.gz (4.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

init_once-0.1.1-py3-none-any.whl (5.5 kB view details)

Uploaded Python 3

File details

Details for the file init_once-0.1.1.tar.gz.

File metadata

  • Download URL: init_once-0.1.1.tar.gz
  • Upload date:
  • Size: 4.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.8

File hashes

Hashes for init_once-0.1.1.tar.gz
Algorithm Hash digest
SHA256 aa3730bd01483345579bf784a25140cacfbbe2627c459654882494793fe1ebb7
MD5 f73d7e4ea318daa3fd37ac58a49f9c4b
BLAKE2b-256 1ff54625f9087a1f1f4759ffd908561d88a6955b6bf0b9902773eab73d752dd2

See more details on using hashes here.

File details

Details for the file init_once-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: init_once-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 5.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.8

File hashes

Hashes for init_once-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 54093b1527ca304f6589803b93cf634e4ddef8ba61c4e767385cefdd6fc0f3d4
MD5 d0268f66eeadcb0fc95cd21661594a0b
BLAKE2b-256 03e3f38d532f6aee67b6453b1b745dd91c01cbb0a39df070afc937e602957361

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page