Provided by: python3-enlighten_1.11.1-1_amd64 bug

NAME

       enlighten - Enlighten Documentation

PIP

          $ pip install enlighten

RPM

   Fedora and EL8 (RHEL/CentOS)
       (EPEL repositories must be configured for EL8)

          $ dnf install python3-enlighten

   EL7 (RHEL/CentOS)
       (EPEL repositories must be configured)

          $ yum install python2-enlighten
          $ yum install python36-enlighten

PKG

   Arch Linux
          $ pacman -S python-enlighten

DEB

   Debian and Ubuntu
          $ apt-get install python3-enlighten

CONDA

          $ conda install -c conda-forge enlighten

BASIC

       For a basic status bar, invoke the Counter class directly.

          import time
          import enlighten

          pbar = enlighten.Counter(total=100, desc='Basic', unit='ticks')
          for num in range(100):
              time.sleep(0.1)  # Simulate work
              pbar.update()

ADVANCED

       To  maintain  multiple  progress bars simultaneously or write to the console, a manager is
       required.

       Advanced output will only work when the  output  stream,  sys.__stdout__  by  default,  is
       attached  to a TTY. get_manager() can be used to get a manager instance.  It will return a
       disabled Manager instance if the stream is not attached to a TTY and an  enabled  instance
       if it is.

          import time
          import enlighten

          manager = enlighten.get_manager()
          ticks = manager.counter(total=100, desc='Ticks', unit='ticks')
          tocks = manager.counter(total=20, desc='Tocks', unit='tocks')

          for num in range(100):
              time.sleep(0.1)  # Simulate work
              print(num)
              ticks.update()
              if not num % 5:
                  tocks.update()

          manager.stop()

COUNTERS

       The Counter class has two output formats, progress bar and counter.

       The  progress  bar  format is used when a total is not None and the count is less than the
       total. If neither of these conditions are met, the counter format is used:

          import time
          import enlighten

          counter = enlighten.Counter(desc='Basic', unit='ticks')
          for num in range(100):
              time.sleep(0.1)  # Simulate work
              counter.update()

STATUS BARS

       Status bars are bars that work similarly  to  progress  similarly  to  progress  bars  and
       counters,  but  present  relatively  static  information.   Status  bars  are created with
       Manager.status_bar.

          import enlighten
          import time

          manager = enlighten.get_manager()
          status_bar = manager.status_bar('Static Message',
                                          color='white_on_red',
                                          justify=enlighten.Justify.CENTER)
          time.sleep(1)
          status_bar.update('Updated static message')
          time.sleep(1)

       Status bars can also use formatting with dynamic variables.

          import enlighten
          import time

          manager = enlighten.get_manager()
          status_format = '{program}{fill}Stage: {stage}{fill} Status {status}'
          status_bar = manager.status_bar(status_format=status_format,
                                          color='bold_slategray',
                                          program='Demo',
                                          stage='Loading',
                                          status='OKAY')
          time.sleep(1)
          status_bar.update(stage='Initializing', status='OKAY')
          time.sleep(1)
          status_bar.update(status='FAIL')

       Status bars, like other bars can be pinned. To pin a status bar to the top  of  all  other
       bars,  initialize  it before any other bars. To pin a bar to the bottom of the screen, use
       position=1 when initializing.

       See StatusBar for more details.

COLOR

       Status bars and the bar component of a progress bar can be colored by  setting  the  color
       keyword argument. See Series Color for more information about valid colors.

          import time
          import enlighten

          counter = enlighten.Counter(total=100, desc='Colorized', unit='ticks', color='red')
          for num in range(100):
              time.sleep(0.1)  # Simulate work
          counter.update()

       Additionally, any part of the progress bar can be colored using counter formatting and the
       color capabilities of the underlying Blessed Terminal.

          import enlighten

          manager = enlighten.get_manager()

          # Standard bar format
          std_bar_format = u'{desc}{desc_pad}{percentage:3.0f}%|{bar}| ' + \
                           u'{count:{len_total}d}/{total:d} ' + \
                           u'[{elapsed}<{eta}, {rate:.2f}{unit_pad}{unit}/s]'

          # Red text
          bar_format = manager.term.red(std_bar_format)

          # Red on white background
          bar_format = manager.term.red_on_white(std_bar_format)

          # X11 colors
          bar_format = manager.term.peru_on_seagreen(std_bar_format)

          # RBG text
          bar_format = manager.term.color_rgb(2, 5, 128)(std_bar_format)

          # RBG background
          bar_format = manager.term.on_color_rgb(255, 190, 195)(std_bar_format)

          # RGB text and background
          bar_format = manager.term.on_color_rgb(255, 190, 195)(std_bar_format)
          bar_format = manager.term.color_rgb(2, 5, 128)(bar_format)

          # Apply color to select parts
          bar_format = manager.term.red(u'{desc}') + u'{desc_pad}' + \
                       manager.term.blue(u'{percentage:3.0f}%') + u'|{bar}|'

          # Apply to counter
          ticks = manager.counter(total=100, desc='Ticks', unit='ticks', bar_format=bar_format)

       If the color option is applied to  a  Counter,  it  will  override  any  foreground  color
       applied.

MULTICOLORED

       The  bar component of a progress bar can be multicolored to track multiple categories in a
       single progress bar.

       The colors are drawn from right to left in the order they were added.

       By default, when multicolored progress bars are used, additional fields are available  for
       bar_format:

          • count_n (int) - Current value of count

          • count_0(int) - Remaining count after deducting counts for all subcounters

          • count_00 (int) - Sum of counts from all subcounters

          • percentage_n (float) - Percentage complete

          • percentage_0(float)  -  Remaining  percentage  after  deducting  percentages  for all
            subcounters

          • percentage_00 (float) - Total of percentages from all subcounters

       When add_subcounter() is called with all_fields set to True, the subcounter will have  the
       additional fields:

          • eta_n (str) - Estimated time to completion

          • rate_n (float) - Average increments per second since parent was created

       More information about bar_format can be found in the Format section of the API.

       One  use case for multicolored progress bars is recording the status of a series of tests.
       In this example, Failures are red, errors are white, and successes are green. The count of
       each is listed in the progress bar.

          import random
          import time
          import enlighten

          bar_format = u'{desc}{desc_pad}{percentage:3.0f}%|{bar}| ' + \
                      u'S:{count_0:{len_total}d} ' + \
                      u'F:{count_2:{len_total}d} ' + \
                      u'E:{count_1:{len_total}d} ' + \
                      u'[{elapsed}<{eta}, {rate:.2f}{unit_pad}{unit}/s]'

          success = enlighten.Counter(total=100, desc='Testing', unit='tests',
                                      color='green', bar_format=bar_format)
          errors = success.add_subcounter('white')
          failures = success.add_subcounter('red')

          while success.count < 100:
              time.sleep(random.uniform(0.1, 0.3))  # Random processing time
              result = random.randint(0, 10)

              if result == 7:
                  errors.update()
              if result in (5, 6):
                  failures.update()
              else:
                  success.update()

       A  more  complicated  example  is recording process start-up. In this case, all items will
       start red, transition to yellow, and eventually all will be green. The count,  percentage,
       rate, and eta fields are all derived from the second subcounter added.

          import random
          import time
          import enlighten

          services = 100
          bar_format = u'{desc}{desc_pad}{percentage_2:3.0f}%|{bar}|' + \
                      u' {count_2:{len_total}d}/{total:d} ' + \
                      u'[{elapsed}<{eta_2}, {rate_2:.2f}{unit_pad}{unit}/s]'

          initializing = enlighten.Counter(total=services, desc='Starting', unit='services',
                                          color='red', bar_format=bar_format)
          starting = initializing.add_subcounter('yellow')
          started = initializing.add_subcounter('green', all_fields=True)

          while started.count < services:
              remaining = services - initializing.count
              if remaining:
                  num = random.randint(0, min(4, remaining))
                  initializing.update(num)

              ready = initializing.count - initializing.subcount
              if ready:
                  num = random.randint(0, min(3, ready))
                  starting.update_from(initializing, num)

              if starting.count:
                  num = random.randint(0, min(2, starting.count))
                  started.update_from(starting, num)

              time.sleep(random.uniform(0.1, 0.5))  # Random processing time

ADDITIONAL EXAMPLES

Basic - Basic progress bar

       • Binary prefixes - Automatic binary prefixes

       • Context manager - Managers and counters as context managers

       • FTP downloader - Show progress downloading files from FTP

       • Floats - Support totals and counts that are floatsMulticolored - Multicolored progress bars

       • Multiple with logging - Nested progress bars and logging

       • Multiprocessing queues - Progress bars with queues for IPC

CUSTOMIZATION

       Enlighten  is highly configurable. For information on modifying the output, see the Series
       and Format sections of the Counter documentation.

ENABLE / DISABLE

       A program may want to disable progress bars based on a configuration setting as well as if
       output redirection occurs.

          import sys
          import enlighten

          # Example configuration object
          config = {'stream': sys.stdout,
                    'useCounter': False}

          enableCounter = config['useCounter'] and stream.isatty()
          manager = enlighten.Manager(stream=config['stream'], enabled=enableCounter)

       The get_manager() function slightly simplifies this

          import enlighten

          # Example configuration object
          config = {'stream': None,  # Defaults to sys.__stdout__
                    'useCounter': False}

          manager = enlighten.get_manager(stream=config['stream'], enabled=config['useCounter'])

CONTEXT MANAGERS

       Both Counter and Manager can be used as context managers.

          import enlighten

          SPLINES = 100

          with enlighten.Manager() as manager:
              with manager.counter(total=SPLINES, desc='Reticulating:', unit='splines') as retic:
                  for num in range(SPLINES + 1):
                      retic.update()

AUTOMATIC UPDATING

       Both Counter and SubCounter instances can be called as functions on one or more iterators.
       A generator is returned which yields each element of the iterables and  then  updates  the
       count by 1.

       NOTE:
          When  a  Counter  instance  is  called  as  a function, type checking is lazy and won't
          validate an iterable was passed until iteration begins.

          import time
          import enlighten

          flock1 = ['Harry', 'Sally', 'Randy', 'Mandy', 'Danny', 'Joe']
          flock2 = ['Punchy', 'Kicky', 'Spotty', 'Touchy', 'Brenda']
          total = len(flock1) + len(flock2)

          manager = enlighten.Manager()
          pbar = manager.counter(total=total, desc='Counting Sheep', unit='sheep')

          for sheep in pbar(flock1, flock2):
              time.sleep(0.2)
              print('%s: Baaa' % sheep)

USER-DEFINED FIELDS

       Both  Counter  and  StatusBar  accept  user  defined  fields  as  keyword   arguments   at
       initialization  and  during  an  update.   These fields are persistent and only need to be
       specified when they change.

       In the following example, source is a user-defined field that is periodically updated.

          import enlighten
          import random
          import time

          bar_format = u'{desc}{desc_pad}{source} {percentage:3.0f}%|{bar}| ' + \
                       u'{count:{len_total}d}/{total:d} ' + \
                       u'[{elapsed}<{eta}, {rate:.2f}{unit_pad}{unit}/s]'
          manager = enlighten.get_manager(bar_format=bar_format)

          bar = manager.counter(total=100, desc='Loading', unit='files', source='server.a')
          for num in range(100):
              time.sleep(0.1)  # Simulate work
              if not num % 5:
                  bar.update(source=random.choice(['server.a', 'server.b', 'server.c']))
              else:
                  bar.update()

       For more information, see the Counter Format and StatusBar Format sections.

HUMAN-READABLE NUMERIC PREFIXES

       Enlighten supports automatic SI (metric) and IEC  (binary)  prefixes  using  the  Prefixed
       library.

       All  rate  and  interval  formatting fields are of the type prefixed.Float.  total and all
       count fields default to int.  If total or or count are set to  a  float,  or  a  float  is
       provided to update(), these fields will be prefixed.Float instead.

          import time
          import random
          import enlighten

          size = random.uniform(1.0, 10.0) * 2 ** 20  # 1-10 MiB (float)
          chunk_size = 64 * 1024  # 64 KiB

          bar_format = '{desc}{desc_pad}{percentage:3.0f}%|{bar}| ' \
                       '{count:!.2j}{unit} / {total:!.2j}{unit} ' \
                       '[{elapsed}<{eta}, {rate:!.2j}{unit}/s]'

          manager = enlighten.get_manager()
          pbar = manager.counter(total=size, desc='Downloading', unit='B', bar_format=bar_format)

          bytes_left = size
          while bytes_left:
              time.sleep(random.uniform(0.05, 0.15))
              next_chunk = min(chunk_size, bytes_left)
              pbar.update(next_chunk)
              bytes_left -= next_chunk

          import enlighten

          counter_format = 'Trying to get to sleep: {count:.2h} sheep'

          counter = enlighten.Counter(counter_format=counter_format)
          counter.count = 0.0
          for num in range(10000000):
              counter.update()

       For more information, see the Counter Format and the Prefixed documentation.

WHY IS ENLIGHTEN CALLED ENLIGHTEN?

       A  progress  bar's  purpose  is  to  inform the user about an ongoing process.  Enlighten,
       meaning "to inform", seems a fitting name.  (Plus  any  names  related  to  progress  were
       already taken)

IS WINDOWS SUPPORTED?

       Enlighten has supported Windows since version 1.3.0.

       Windows does not currently support resizing.

       Enlighten  also  works relatively well in Linux-like subsystems for Windows such as Cygwin
       or Windows Subsystem for Linux.

IS JUPYTER NOTEBOOKS SUPPORTED?

       Experimental support for Jupyter notebooks was added in version 1.10.0.

       Jupyter Notebook support is provide by the NotebookManager class.   If  running  inside  a
       Jupyter Notebook, get_manager() will return a NotebookManager instance.

       There  is  currently  no  support  for detecting the width of a Jupyter notebook so output
       width has been set statically to 100 characters. This can be  overridden  by  passing  the
       width keyword argument to get_manager().

IS PYCHARM SUPPORTED?

       PyCharm  uses  multiple  consoles  and  the  behavior differs depending on how the code is
       called.

       Enlighten works natively in the PyCharm command terminal.

       To use Enlighten with Run or Debug, terminal emulation must be enabled.  Navigate  to  Run
       ->  Edit  Configurations  ->  Templates  ->  Python  and select Emulate terminal in output
       console.

       The PyCharm Python  console  is  currently  not  supported  because  sys.stdout  does  not
       reference a valid TTY.

CAN YOU ADD SUPPORT FOR _______ TERMINAL?

       We  are  happy to add support for as many terminals as we can.  However, not all terminals
       can be supported. There a few requirements.

          1. The terminal must be detectable programmatically
                 We need to be  able  to  identify  the  terminal  in  some  reasonable  way  and
                 differentiate  it  from  other  terminals.  This  could  be  through environment
                 variables, the platform module, or some other method.

          2. A subset of terminal codes must be supported
                 While these codes may vary among terminals, the capability must be provided  and
                 activated by printing a terminal sequence.  The required codes are listed below.

                    • move / CUP - Cursor Position

                    • hide_cursor / DECTCEM - Text Cursor Enable Mode

                    • show_cursor / DECTCEM - Text Cursor Enable Mode

                    • csr / DECSTBM - Set Top and Bottom Margins

                    • clear_eos / ED - Erase in Display

                    • clear_eol / EL - Erase in Line

                    • feed / CUD - Cursor Down (Or scroll with linefeed)

          3. Terminal dimensions must be detectable
                 The height and width of the terminal must be available to the running process.

WHY DOES RUNTIMEERROR: REENTRANT CALL GET RAISED SOMETIMES DURING A RESIZE?

       This  is  caused  when  another thread or process is writing to a standard stream (STDOUT,
       STDERR) at the same time the resize signal handler is writing to the stream.

       Enlighten tries to detect when a program is threaded or  running  multiple  processes  and
       defer  resize  handling  until  the  next  normal  write event. However, this condition is
       evaluated when the scroll area is set, typically when the first counter is  added.  If  no
       threads  or  processes  are  detected  at that time, and the value of threaded was not set
       explicitly, resize events will not be deferred.

       In order to guarantee resize handling is deferred, it is best to pass  threaded=True  when
       creating a manager instance.

WHY DOES THE OUTPUT DISAPPEAR AT THE END OF A NOTEBOOK CELL IN VSCODE?

       This  is  caused  by a bug in the VSCode Jupyter extension that reverts display updates at
       the end of a cell.  This issue has been confirmed by the maintainers, but a  fix  has  not
       been released yet.

       As  a  temporary workaround, manager._primed = False at the end of the cell before calling
       stop(). Note, this will result in double output in other environments so  should  only  be
       used if the display is cleared first or the code is limited to running in this extension.

CLASSES

       class enlighten.Manager(stream=None, counter_class=Counter, **kwargs)

              Parametersstream (file object) -- Output stream. If None, defaults to sys.__stdout__status_bar_class (class) -- Status bar class (Default: StatusBar)

                     • counter_class (class) -- Progress bar class (Default: Counter)

                     • set_scroll (bool) -- Enable scroll area redefinition (Default: True)

                     • companion_stream  (file  object)  -- See companion_stream below. (Default:
                       None)

                     • enabled (bool) -- Status (Default: True)

                     • no_resize (bool) -- Disable resizing support

                     • threaded (bool) -- When True resize handling is deferred until next  write
                       (Default:   False  unless  multiple  threads  or  multiple  processes  are
                       detected)

                     • width (int) -- Static output width. If unset, terminal width is determined
                       dynamically

                     • kwargs  (Dict[str,  Any]) -- Any additional keyword arguments will be used
                       as default values when counter() is called.

              Manager class for outputting progress bars to streams attached to TTYs

              Progress bars are displayed at the  bottom  of  the  screen  with  standard  output
              displayed above.

              companion_stream
                 A  companion  stream  is a file object that shares a TTY with the primary output
                 stream.  The  cursor  position  in  the  companion  stream  will  be  moved   in
                 coordination with the primary stream.

                 If  the  value  is  None,  the  companion stream will be dynamically determined.
                 Unless explicitly specified, a stream which is not attached to a TTY  (the  case
                 when redirected to a file), will not be used as a companion stream.

              counter(position=None, **kwargs)

                     Parametersposition  (int)  --  Line  number  counting  from the bottom of the
                              screen

                            • autorefresh (bool) -- Refresh this  counter  when  other  bars  are
                              drawn

                            • replace  (PrintableCounter)  --  Replace  given  counter  with new.
                              Position ignored.

                            • kwargs (Dict[str, Any]) -- Any  additional  keyword  arguments  are
                              passed to Counter

                     Returns
                            Instance of counter class

                     Return type
                            Counter

                     Get a new progress bar instance

                     If  position  is  specified,  the  counter's  position  will  be  pinned.  A
                     ValueError will be raised if position  exceeds  the  screen  height  or  has
                     already been pinned by another counter.

                     If  autorefresh  is  True,  this bar will be redrawn whenever another bar is
                     drawn assuming it had been min_delta seconds since the last update. This  is
                     usually unnecessary.

                     NOTE:
                        Counters  are  not automatically drawn when created because fields may be
                        missing if subcounters are used. To force  the  counter  to  draw  before
                        updating, call refresh().

              status_bar(*args, **kwargs)

                     Parametersposition  (int)  --  Line  number  counting  from the bottom of the
                              screen

                            • autorefresh (bool) -- Refresh this  counter  when  other  bars  are
                              drawn

                            • replace  (PrintableCounter)  --  Replace  given  counter  with new.
                              Position ignored.

                            • kwargs (Dict[str, Any]) -- Any  additional  keyword  arguments  are
                              passed to StatusBar

                     Returns
                            Instance of status bar class

                     Return type
                            StatusBar

                     Get a new status bar instance

                     If  position  is specified, the counter's position can change dynamically if
                     additional counters are called without a position argument.

                     If autorefresh is True, this bar will be redrawn  whenever  another  bar  is
                     drawn  assuming  it  had  been  min_delta  seconds  since  the  last update.
                     Generally, only need when elapsed is used in status_format.

              stop() Clean up and reset terminal

                     This method should be called when the manager and counters will no longer be
                     needed.

                     Any  progress  bars that have leave set to True or have not been closed will
                     remain on the console. All others will be cleared.

                     Manager and all counters will be disabled.

       class enlighten.NotebookManager(stream=None, counter_class=Counter, **kwargs)

              Parameterscounter_class (class) -- Progress bar class (Default: Counter)

                     • status_bar_class (class) -- Status bar class (Default: StatusBar)

                     • enabled (bool) -- Status (Default: True)

                     • width (int) -- Static output width (Default: 100)

                     • kwargs (Dict[str, Any]) -- Any additional keyword arguments will  be  used
                       as default values when counter() is called.

              Manager class for outputting progress bars to Jupyter notebooks

              The following keyword arguments are set if provided, but ignored:

                 • streamset_scrollcompanion_streamno_resizethreaded

              counter(position=None, **kwargs)

                     Parametersposition  (int)  --  Line  number  counting  from the bottom of the
                              screen

                            • autorefresh (bool) -- Refresh this  counter  when  other  bars  are
                              drawn

                            • replace  (PrintableCounter)  --  Replace  given  counter  with new.
                              Position ignored.

                            • kwargs (Dict[str, Any]) -- Any  additional  keyword  arguments  are
                              passed to Counter

                     Returns
                            Instance of counter class

                     Return type
                            Counter

                     Get a new progress bar instance

                     If  position  is  specified,  the  counter's  position  will  be  pinned.  A
                     ValueError will be raised if position  exceeds  the  screen  height  or  has
                     already been pinned by another counter.

                     If  autorefresh  is  True,  this bar will be redrawn whenever another bar is
                     drawn assuming it had been min_delta seconds since the last update. This  is
                     usually unnecessary.

                     NOTE:
                        Counters  are  not automatically drawn when created because fields may be
                        missing if subcounters are used. To force  the  counter  to  draw  before
                        updating, call refresh().

              status_bar(*args, **kwargs)

                     Parametersposition  (int)  --  Line  number  counting  from the bottom of the
                              screen

                            • autorefresh (bool) -- Refresh this  counter  when  other  bars  are
                              drawn

                            • replace  (PrintableCounter)  --  Replace  given  counter  with new.
                              Position ignored.

                            • kwargs (Dict[str, Any]) -- Any  additional  keyword  arguments  are
                              passed to StatusBar

                     Returns
                            Instance of status bar class

                     Return type
                            StatusBar

                     Get a new status bar instance

                     If  position  is specified, the counter's position can change dynamically if
                     additional counters are called without a position argument.

                     If autorefresh is True, this bar will be redrawn  whenever  another  bar  is
                     drawn  assuming  it  had  been  min_delta  seconds  since  the  last update.
                     Generally, only need when elapsed is used in status_format.

              stop() Clean up and reset terminal

                     This method should be called when the manager and counters will no longer be
                     needed.

                     Any  progress  bars that have leave set to True or have not been closed will
                     remain on the console. All others will be cleared.

                     Manager and all counters will be disabled.

       class enlighten.Counter(**kwargs)

              Parametersall_fields (bool) -- Populate rate, interval, and eta formatting fields in
                       subcounters

                     • bar_format (str) -- Progress bar format, see Format below

                     • count (int) -- Initial count (Default: 0)

                     • counter_format (str) -- Counter format, see Format below

                     • color (str) -- Series color as a string or RGB tuple see Series Colordesc (str) -- Description

                     • enabled (bool) -- Status (Default: True)

                     • fill (str) -- Fill character used for counter_format (Default: ' ')

                     • fields (dict) -- Additional fields used for formattingleave (True) -- Leave progress bar after closing (Default: True)

                     • manager (Manager) -- Manager instance. Creates instance if not specified.

                     • min_delta (float) -- Minimum time, in seconds, between refreshes (Default:
                       0.1)

                     • offset (int) -- Number of non-printable characters  to  account  for  when
                       formatting

                     • series (sequence) -- Progression series, see Series below

                     • stream  (file object) -- Output stream. Not used when instantiated through
                       a manager

                     • total (int) -- Total count when complete

                     • unit (str) -- Unit label

              Progress bar and counter class

              A Counter instance can be created with the  Manager.counter()  method  or,  when  a
              standalone  progress bar for simple applications is required, the Counter class can
              be called directly. The output stream will default to sys.__stdout__ unless  stream
              is set.

              NOTE:
                 With  the  default  values  for bar_format and counter_format, floats can not be
                 used for total, count, or provided to update(). In order to use floats,  provide
                 custom formats to bar_format and counter_format. See Format below.

              Series
                 The  progress bar is constructed from the characters in series. series must be a
                 sequence (str, list, tuple) containing single characters.

                 Default progress series (series):

                     ' ▏▎▍▌▋▊▉█'

                 The first character is the fill character. When the count is 0, the bar will  be
                 made  up  of  only this character.  In the example below, characters 5 through 9
                 are fill characters.

                 The last character is the full character. When the count is equal to total,  the
                 bar  will be made up of only this character.  In the example below, characters 0
                 through 3 are full characters.

                 The remaining characters are  fractional  characters  used  to  more  accurately
                 represent  the  transition between the full and fill characters.  In the example
                 below, character 4 is a fractional character.

                     '45% |████▋     |'
                          '0123456789'

              Series Color
                 The characters specified by series will be displayed in the  terminal's  current
                 foreground color. This can be overwritten with the color argument.

                 color  can be specified as None, a string or, an iterable of three integers, 0 -
                 255, describing an RGB color.

                 For backward compatibility, a color can be expressed as an integer 0 - 255,  but
                 this is deprecated in favor of named or RGB colors.

                 Compound colors, such as 'white_on_seagreen', 'bold_red', or 'underline_on_peru'
                 are also supported.

                 If a terminal is not capable of 24-bit color, and is given a  color  outside  of
                 its range, the color will be downconverted to a supported color.

                 Valid colors for 8 color terminals:

                     • black

                     • blue

                     • cyan

                     • green

                     • magenta

                     • red

                     • white

                     • yellow

                 Additional colors for 16 color terminals:

                     • bright_black

                     • bright_blue

                     • bright_cyan

                     • bright_green

                     • bright_magenta

                     • bright_red

                     • bright_white

                     • bright_yellow

                 See this chart for a complete list of supported color strings.

                 NOTE:
                     If an invalid color is specified, an AttributeError will be raised

              Format
                 If  total is None or count becomes higher than total, the counter format will be
                 used instead of the progress bar format.

                 Default counter format (counter_format):

                     '{desc}{desc_pad}{count:d} {unit}{unit_pad}{elapsed}, {rate:.2f}{unit_pad}{unit}/s]{fill}'

                     # Example output
                     'Loaded 30042 Files [00:01, 21446.45 Files/s]                                    '

                 Default progress bar format (bar_format):

                     '{desc}{desc_pad}{percentage:3.0f}%|{bar}| {count:{len_total}d}/{total:d} [{elapsed}<{eta}, {rate:.2f}{unit_pad}{unit}/s]'

                     # Example output
                     'Processing    22%|█████▊                   |  23/101 [00:27<01:32, 0.84 Files/s]'

                 Available fields:

                 • count(int) - Current value of count

                 • desc(str) - Value of desc

                 • desc_pad(str) - A single space if desc is set, otherwise empty

                 • elapsed(str) - Time elapsed since instance was created

                 • interval(prefixed.Float) - Average seconds per iteration (inverse of rate)

                 • rate(prefixed.Float) -  Average  iterations  per  second  since  instance  was
                   created

                 • total(int) - Value of total

                 • unit(str) - Value of unit

                 • unit_pad(str) - A single space if unit is set, otherwise empty

                 Additional fields for bar_format only:

                 • bar(str) - Progress bar draw with characters from series

                 • eta(str) - Estimated time to completion

                 • len_total(int) - Length of total when converted to a string

                 • percentage(float) - Percentage complete

                 Additional fields for counter_format only:

                 • fill(str)  -  Filled  with  fill until line is width of terminal.  May be used
                   multiple times. Minimum width is 3.

                 Additional fields when subcounters are used:

                 • count_n(int) - Current value of count

                 • count_0(int) - Remaining count after deducting counts for all subcounters

                 • count_00(int) - Sum of counts from all subcounters

                 • interval_0(prefixed.Float) -  Average  seconds  per  non-subcounter  iteration
                   (inverse of rate_0)

                 • interval_00(prefixed.Float)   -   Average   seconds   per  iteration  for  all
                   subcounters (inverse of rate_00)

                 • percentage_n(float) - Percentage complete (bar_format only)

                 • percentage_0(float) - Remaining percentage after deducting percentages for all
                   subcounters (bar_format only)

                 • percentage_00(float) - Total of percentages from all subcounters

                 • rate_0(prefixed.Float)  -  Average iterations per second excluding subcounters
                   since instance was created

                 • rate_00(prefixed.Float) - Average iterations per  second  of  all  subcounters
                   since instance was created

                 NOTE:
                     n  denotes  the  order the subcounter was added starting at 1.  For example,
                     count_1 is the count for the first subcounter added and count_2 is the count
                     for the second subcounter added.

                 Additional fields when add_subcounter() is called with all_fields set to True:

                 • eta_n (str) - Estimated time to completion (bar_format only)

                 • interval_n(prefixed.Float) - Average seconds per iteration (inverse of rate)

                 • rate_n  (prefixed.Float)  -  Average  iterations  per  second since parent was
                   created

                 NOTE:
                     count and total fields, including count_0, count_00, and count_n, default to
                     int.  If  total  or  or  count are set to a float, or a float is provided to
                     update(), these fields will be prefixed.Float instead.

                     This allows additional format specifiers using SI (metric) and IEC  (binary)
                     prefixes. See the Prefixed documentation for more details.

                     This  will  also  require  a  custom  format  and affect the accuracy of the
                     len_total field.

                 User-defined fields:
                     Users can define fields in two ways, the fields  parameter  and  by  passing
                     keyword arguments to Manager.counter() or Counter.update()

                     The  fields  parameter  can  be  used  to  pass  a  dictionary of additional
                     user-defined  fields.  The  dictionary   values   can   be   updated   after
                     initialization to allow for dynamic fields. Any fields that share names with
                     built-in fields are ignored.

                     If  fields  are  passed  as  keyword  arguments  to   Manager.counter()   or
                     Counter.update(), they take precedent over the fields parameter.

              Offset
                 When  offset  is  None, the width of the bar portion of the progress bar and the
                 fill size for counter will be  automatically  determined,  taking  into  account
                 terminal escape sequences that may be included in the string.

                 Under special circumstances, and to permit backward compatibility, offset may be
                 explicitly set to an int value. When  explicitly  set,  automatic  detection  of
                 escape sequences is disabled.

              Instance Attributes

                 count  int - Current count

                 desc   str - Description

                 elapsed
                        float   -   Time   since   start   (since  last  update  if  count`equals
                        :py:attr:`total)

                 enabled
                        bool - Current status

                 manager
                        Manager - Manager Instance

                 position
                        int - Current position

                 total  int - Total count when complete

                 unit   str - Unit label

              add_subcounter(color, count=0, all_fields=None)

                     Parameterscolor (str) -- Series color as a string or  RGB  tuple  see  Series
                              Colorcount (int) -- Initial count (Default: 0)

                            • all_fields  (bool)  --  Populate rate, interval, and eta formatting
                              fields (Default: False unless specified in parent)

                     Returns
                            Subcounter instance

                     Return type
                            SubCounter

                     Add a subcounter for multicolored progress bars

              clear(flush=True)

                     Parameters
                            flush (bool) -- Flush stream after clearing bar (Default:True)

                     Clear bar

              close(clear=False)
                     Do final refresh and remove from manager

                     If leave is True, the default, the effect is the same as refresh().

              property color
                     Color property

                     Preferred to be a string or iterable of  three  integers  for  RGB.   Single
                     integer supported for backwards compatibility

              property fill
                     Fill character used in formatting

              format(width=None, elapsed=None)

                     Parameterswidth (int) -- Width in columns to make progress bar

                            • elapsed  (float) -- Time since started. Automatically determined if
                              None

                     Returns
                            Formatted progress bar or counter

                     Return type
                            str

                     Format progress bar or counter

              refresh(flush=True, elapsed=None)

                     Parametersflush (bool) -- Flush stream after writing bar (Default:True)

                            • elapsed (float) -- Time since started. Automatically determined  if
                              None

                     Redraw bar

              property subcount
                     Sum of counts from all subcounters

              update(incr=1, force=False, **fields)

                     Parametersincr (int) -- Amount to increment count (Default: 1)

                            • force  (bool)  --  Force  refresh  even  if  min_delta has not been
                              reached

                            • fields (dict) -- Fields for for formatting

                     Increment progress bar and redraw

                     Progress bar is only redrawn if min_delta seconds past since the last update

       class enlighten.StatusBar(*args, **kwargs)

              Parametersenabled (bool) -- Status (Default: True)

                     • color (str) -- Color as a string or RGB tuple see Status Colorfields (dict) -- Additional fields used for formatingfill (str) -- Fill  character  used  in  formatting  and  justifying  text
                       (Default: ' ')

                     • justify (str) -- One of Justify.CENTER, Justify.LEFT, Justify.RIGHTleave (True) -- Leave status bar after closing (Default: True)

                     • min_delta (float) -- Minimum time, in seconds, between refreshes (Default:
                       0.1)

                     • status_format (str) -- Status bar format, see Format

              Status bar class

              A StatusBar instance should be created with the Manager.status_bar() method.

              Status Color

              Color works similarly to color on Counter, except it affects the entire status bar.
              See Series Color for more information.

              Format

              There  are  two ways to populate the status bar, direct and formatted. Direct takes
              precedence over formatted.

              Direct Status

              Direct status  is  used  when  arguments  are  passed  to  Manager.status_bar()  or
              StatusBar.update().  Any  arguments are coerced to strings and joined with a space.
              For example:

                 status_bar.update('Hello', 'World!')
                 # Example output: Hello World!

                 status_bar.update('Hello World!')
                 # Example output: Hello World!

                 count = [1, 2, 3, 4]
                 status_bar.update(*count)
                  # Example output: 1 2 3 4

              Formatted Status
                 Formatted status uses the format specified in  the  status_format  parameter  to
                 populate the status bar.

                     'Current Stage: {stage}'

                     # Example output
                     'Current Stage: Testing'

                 Available fields:

                     • elapsed(str) - Time elapsed since instance was created

                     • fill(str) - Filled with fill until line is width of terminal.  May be used
                       multiple times. Minimum width is 3.

                 NOTE:
                     The   status   bar   is   only   updated    when    StatusBar.update()    or
                     StatusBar.refresh()  is  called, so fields like elapsed will need additional
                     calls to appear dynamic.

                 User-defined fields:
                     Users can define fields in two ways, the fields  parameter  and  by  passing
                     keyword arguments to Manager.status_bar() or StatusBar.update()

                     The  fields  parameter  can  be  used  to  pass  a  dictionary of additional
                     user-defined  fields.  The  dictionary   values   can   be   updated   after
                     initialization to allow for dynamic fields. Any fields that share names with
                     available fields are ignored.

                     If fields  are  passed  as  keyword  arguments  to  Manager.status_bar()  or
                     StatusBar.update(), they take precedent over the fields parameter.

              Instance Attributes

                 elapsed
                        float - Time since start

                 enabled
                        bool - Current status

                 manager
                        Manager - Manager Instance

                 position
                        int - Current position

              clear(flush=True)

                     Parameters
                            flush (bool) -- Flush stream after clearing bar (Default:True)

                     Clear bar

              close(clear=False)
                     Do final refresh and remove from manager

                     If leave is True, the default, the effect is the same as refresh().

              property color
                     Color property

                     Preferred  to  be  a  string  or iterable of three integers for RGB.  Single
                     integer supported for backwards compatibility

              property fill
                     Fill character used in formatting

              format(width=None, elapsed=None)

                     Parameterswidth (int) -- Width in columns to make progress bar

                            • elapsed (float) -- Time since started. Automatically determined  if
                              None

                     Returns
                            Formatted status bar

                     Return type
                            str

                     Format status bar

              property justify
                     Maps to justify method determined by justify parameter

              refresh(flush=True, elapsed=None)

                     Parametersflush (bool) -- Flush stream after writing bar (Default:True)

                            • elapsed  (float) -- Time since started. Automatically determined if
                              None

                     Redraw bar

              update(*objects, **fields)

                     Parametersobjects (list) -- Values for Direct Statusforce (bool) -- Force  refresh  even  if  min_delta  has  not  been
                              reached

                            • fields (dict) -- Fields for for Formatted Status

                     Update status and redraw

                     Status bar is only redrawn if min_delta seconds past since the last update

       class enlighten.SubCounter(parent, color=None, count=0, all_fields=False)
              A child counter for multicolored progress bars.

              This  class tracks a portion of multicolored progress bar and should be initialized
              through Counter.add_subcounter()

              Instance Attributes

                 count  int - Current count

                 parent Counter - Parent counter

              update(incr=1, force=False)

                     Parametersincr (int) -- Amount to increment count (Default: 1)

                            • force (bool) -- Force  refresh  even  if  min_delta  has  not  been
                              reached

                     Increment progress bar and redraw

                     Both this counter and the parent are incremented.

                     Progress bar is only redrawn if min_delta seconds past since the last update
                     on the parent.

              update_from(source, incr=1, force=False)

                     Parameterssource (SubCounter) -- SubCounter or Counter to increment from

                            • incr (int) -- Amount to increment count (Default: 1)

                            • force (bool) -- Force  refresh  even  if  min_delta  has  not  been
                              reached

                     Move a value to this counter from another counter.

                     source  must  be  the  parent Counter instance or a SubCounter with the same
                     parent

FUNCTIONS

       enlighten.get_manager(stream=None, counter_class=Counter, **kwargs)

              Parametersstream (file object) -- Output stream. If None, defaults to sys.__stdout__counter_class (class) -- Progress bar class (Default: Counter)

                     • kwargs (Dict[str, Any]) -- Any additional keyword arguments will passed to
                       the manager class.

              Returns
                     Manager instance

              Return type
                     Manager

              Convenience function to get a manager instance

              If  running  inside a notebook, a NotebookManager instance is returned. otherwise a
              standard Manager instance is returned.

              If a a standard Manager instance is used and stream is not attached to a  TTY,  the
              Manager instance is disabled.

CONSTANTS

       class enlighten.Justify
              Enumerated type for justification options

              CENTER Justify center

              LEFT   Justify left

              RIGHT  Justify right

       Enlighten Progress Bar is a console progress bar library for Python.

       The  main  advantage  of  Enlighten  is it allows writing to stdout and stderr without any
       redirection or additional code. Just print or log as you normally would.

       Enlighten also includes experimental support for Jupyter Notebooks.

       The code for this animation can be found in demo.py in examples.

AUTHOR

       Avram Lubkin

COPYRIGHT

       2023 - 2022, Avram Lubkin