krober10nd / SeismicMesh

2D/3D serial and parallel triangular mesh generation tool for finite element methods.
https://seismicmesh.readthedocs.io/
GNU General Public License v3.0
126 stars 32 forks source link

more control over verbosity #85

Closed krober10nd closed 3 years ago

krober10nd commented 3 years ago

Purpose

From the docstring:

  * *verbose* (``int``) --
             Output to the screen `verbose` (default==1). If `verbose`==1 only start and end messages are
             written, `verbose`==0, no messages are written besides errors, `verbose` > 1 all messages are written.

How

 def silence(func):
     def wrapper(*args, **kwargs):
         None

     return wrapper

 def talk(func):
     def wrapper(*args, **kwargs):
         func(*args, **kwargs)

     return wrapper

 def _select_verbosity(opts):
     if opts["verbose"] == 0:
         return silence, silence
     elif opts["verbose"] == 1:
         return talk, silence
     elif opts["verbose"] > 1:
         return talk, talk

     else:
         raise ValueError("Unknown verbosity level")

Inside generate_mesh and sliver_removal

 verbosity1, verbosity2 = _select_verbosity(opts)
     @verbosity1
     def print_msg1(msg):
         print(msg)

     @verbosity2
     def print_msg2(msg):
         print(msg)