Skip to content
/ main Public

For those that think `if __name__ = "__main__"` is ugly

Notifications You must be signed in to change notification settings

flipbit03/main

Repository files navigation

@python_main

PyPI - Python Version PyPI - Version

@python_main is a decorator which:

  • Automatically calls the function(s) tagged with it, if the current module is being executed as a script.
  • Does nothing if the current module is being imported.

It is, essentially, equivalent to the if __name__ == "__main__": construct, but as a decorator.

That's all it does.

Installation

pip install python-main # or
poetry add python-main # ...

Usage

from python_main import python_main

A = 10
B = 20

@python_main
def do_print():
    """This will run if this module is executed."""
    print(A + B)

You can also tag multiple functions with @python_main and they will all run if the module is executed, in the order they are defined.

from python_main import python_main

A = 10
B = 20
C = 0

@python_main
def add_a_to_c():
    global C
    C += A

# ... other functions/ definitions ...

@python_main
def add_b_to_c():
    global C
    C += B

# At this point:
# - C will be 30 if this module is executed as a script.
# - C will be untouched if this module is imported.

About

For those that think `if __name__ = "__main__"` is ugly

Topics

Resources

Stars

Watchers

Forks

Languages