Skip to main content

Executes a cmd that outputs completion percentages, interpreting them and executing callbacks with the increment and total percentage.

Project description

Executes a cmd while interpreting its completion percentage.

The completion percentage of the cmd is stored in an attribute percentage and the user can obtain percentage increments by executing increment or by passing a callback when initializing.

This class is useful to use within a child thread, so the child thread executes the cmd, blocking and updating the increment and percentage to the parent thread, that can do other things in the meantime.

Examples

Badblocks

def my_callback(increment, total):
   print(f'Update: +{increment}% / {total}%.')

def child_thread():
  progress = ProgressiveCmd('badblocks', '-st', 'random', '-w', 'dev/sda1', digits=ProgressiveCmd.DECIMALS, decimal_digits=2, read=35, callback=my_callback)
  progress.run()

t = threading.Thread(target=child_thread)
t.start()

Shred

def my_callback(increment, total):
   print(f'Update: +{increment} / {total}%.')

def child_thread():
  progress = ProgressiveCmd('shred', '-vn 1', 'dev/sda1', callback=my_callback)
  progress.run()

t = threading.Thread(target=child_thread)
t.start()

fsarchiver

def my_callback(increment, total):
   print(f'Update: +{increment} / {total}%.')

def child_thread():
  progress = ProgressiveCmd('fsarchiver', 'restfs', '-v', 'foo/bar/', 'id=0,dest=dev/sda1', callback=my_callback)
  progress.run()

t = threading.Thread(target=child_thread)
t.start()

Using tqdm

You can use the increment value to update tqdm:

t = tqdm(total=100)

def my_callback(increment, total):
    t.update(increment)

def child_thread():
  progress = ProgressiveCmd('a-program', callback=my_callback)
  progress.run()

thread = threading.Thread(target=child_thread)
thread.start()

Testing

  1. git clone this project.

  2. Execute python setup.py test in the project folder.

Contributing

Is a missing or wrong code? Say it in the issues! Feel free to contribute.

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

progressive-cmd-0.1.1.tar.gz (5.3 kB view details)

Uploaded Source

File details

Details for the file progressive-cmd-0.1.1.tar.gz.

File metadata

  • Download URL: progressive-cmd-0.1.1.tar.gz
  • Upload date:
  • Size: 5.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/3.7

File hashes

Hashes for progressive-cmd-0.1.1.tar.gz
Algorithm Hash digest
SHA256 b6985bdc05eccce77406207a6a6d96eee5a17f1475fa65135f03d8d2a3a27ea6
MD5 f09b68e6073e15da756eb3c19fe880ff
BLAKE2b-256 fa4ff62944fcef3083bde793eabd80662c531c17d541bda174d78f3e3c288ba7

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