Skip to main content

No project description provided

Project description

barkeep

Small C++ header to display async counters and progress bars. Use it by including barkeep.h in your project.

build Coverage Status


  • Display a waiting animation with a message:

    using namespace std::chrono_literals;
    namespace bk = barkeep;
    
    auto anim = bk::Animation().message("Working");
    anim.show();
    /* do work */ std::this_thread::sleep_for(10s);
    anim.done();
    
  • Supports several styles:

    auto anim = bk::Animation().message("Downloading...").style(bk::Earth);
    
  • Display a counter to monitor a numeric variable while waiting:

    int work{0};
    auto c = bk::Counter(&work)
      .message("Reading lines")
      .speed(1.)
      .speed_unit("line/s");
    c.show();
    for (int i = 0; i < 505; i++) {
      std::this_thread::sleep_for(13ms); // read & process line
      work++;
    }
    c.done();
    
  • Display a progress bar to monitor a numeric variable and measure its completion by comparing against a total:

    int work{0};
    auto bar = bk::ProgressBar(&work)
      .message("Reading lines")
      .speed(1.)
      .speed_unit("line/s")
      .total(505);
    bar.show();
    for (int i = 0; i < 505; i++) {
      std::this_thread::sleep_for(13ms); // read & process line
      work++;
    }
    bar.done();
    
  • Combine diplays using | operator to monitor multiple variables:

    std::atomic<size_t> sents{0}, toks{0};
    auto bar =
      bk::ProgressBar(&sents).total(1010).message("Sents") |
      bk::Counter(&toks).message("Toks").speed_unit("tok/s").speed(1.);
    bar.show();
    for (int i = 0; i < 1010; i++) {
      // do work
      std::this_thread::sleep_for(13ms);
      sents++;
      toks += (1 + rand() % 5);
    }
    bar.done();
    
  • Use "no tty" mode to, e.g., output to log files:

    std::atomic<size_t> sents{0}, toks{0};
    auto bar = bk::ProgressBar(&sents)
                   .total(401)
                   .message("Sents")
                   .speed(1.)
                   .interval(1.)
                   .no_tty();
    bar.show();
    for (int i = 0; i < 401; i++) {
      std::this_thread::sleep_for(13ms);
      sents++;
      toks += (1 + rand() % 5);
    }
    bar.done();
    

    no_tty achieves two things:

    • Change the delimiter from \r to \n to avoid wonky looking output in your log files
    • Change the default interval to a minute to avoid overwhelming logs (in the example above, we set the interval ourselves explicitly)

See demo.cpp for more examples.

Notes

  • Progress variables (and total for progress bar) can be floating point types too. They can also be negative and/or decreasing (careful with the numeric type to avoid underflows).
  • Note that progress variable is taken by pointer, which means it needs to outlive the display.

Building

make demo
./demo

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

barkeep-0.0.2.tar.gz (117.8 kB view hashes)

Uploaded Source

Built Distributions

barkeep-0.0.2-cp312-cp312-musllinux_1_1_x86_64.whl (718.4 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.1+ x86-64

barkeep-0.0.2-cp312-cp312-musllinux_1_1_s390x.whl (770.8 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.1+ s390x

barkeep-0.0.2-cp312-cp312-musllinux_1_1_ppc64le.whl (765.4 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.1+ ppc64le

barkeep-0.0.2-cp312-cp312-musllinux_1_1_i686.whl (781.5 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.1+ i686

barkeep-0.0.2-cp312-cp312-musllinux_1_1_aarch64.whl (698.2 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.1+ ARM64

barkeep-0.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (228.3 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

barkeep-0.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (222.9 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ s390x

barkeep-0.0.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (240.1 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ppc64le

barkeep-0.0.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (235.3 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ i686

barkeep-0.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (216.2 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

barkeep-0.0.2-cp312-cp312-macosx_11_0_arm64.whl (478.3 kB view hashes)

Uploaded CPython 3.12 macOS 11.0+ ARM64

barkeep-0.0.2-cp312-cp312-macosx_10_9_x86_64.whl (1.2 MB view hashes)

Uploaded CPython 3.12 macOS 10.9+ x86-64

barkeep-0.0.2-cp311-cp311-musllinux_1_1_x86_64.whl (720.2 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ x86-64

barkeep-0.0.2-cp311-cp311-musllinux_1_1_s390x.whl (771.8 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ s390x

barkeep-0.0.2-cp311-cp311-musllinux_1_1_ppc64le.whl (766.2 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ ppc64le

barkeep-0.0.2-cp311-cp311-musllinux_1_1_i686.whl (783.5 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ i686

barkeep-0.0.2-cp311-cp311-musllinux_1_1_aarch64.whl (699.7 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ ARM64

barkeep-0.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (229.4 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

barkeep-0.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (223.7 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ s390x

barkeep-0.0.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (242.6 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ppc64le

barkeep-0.0.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (236.4 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686

barkeep-0.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (217.8 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

barkeep-0.0.2-cp311-cp311-macosx_11_0_arm64.whl (478.3 kB view hashes)

Uploaded CPython 3.11 macOS 11.0+ ARM64

barkeep-0.0.2-cp311-cp311-macosx_10_9_x86_64.whl (1.2 MB view hashes)

Uploaded CPython 3.11 macOS 10.9+ x86-64

barkeep-0.0.2-cp310-cp310-musllinux_1_1_x86_64.whl (719.0 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

barkeep-0.0.2-cp310-cp310-musllinux_1_1_s390x.whl (770.7 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ s390x

barkeep-0.0.2-cp310-cp310-musllinux_1_1_ppc64le.whl (764.8 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ ppc64le

barkeep-0.0.2-cp310-cp310-musllinux_1_1_i686.whl (782.0 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ i686

barkeep-0.0.2-cp310-cp310-musllinux_1_1_aarch64.whl (698.8 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ ARM64

barkeep-0.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (227.7 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

barkeep-0.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (222.9 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ s390x

barkeep-0.0.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (241.6 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ppc64le

barkeep-0.0.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (235.6 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686

barkeep-0.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (216.6 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

barkeep-0.0.2-cp310-cp310-macosx_11_0_arm64.whl (478.3 kB view hashes)

Uploaded CPython 3.10 macOS 11.0+ ARM64

barkeep-0.0.2-cp310-cp310-macosx_10_9_x86_64.whl (1.2 MB view hashes)

Uploaded CPython 3.10 macOS 10.9+ x86-64

barkeep-0.0.2-cp39-cp39-musllinux_1_1_x86_64.whl (719.2 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

barkeep-0.0.2-cp39-cp39-musllinux_1_1_s390x.whl (770.7 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ s390x

barkeep-0.0.2-cp39-cp39-musllinux_1_1_ppc64le.whl (765.2 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ ppc64le

barkeep-0.0.2-cp39-cp39-musllinux_1_1_i686.whl (781.9 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ i686

barkeep-0.0.2-cp39-cp39-musllinux_1_1_aarch64.whl (698.9 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ ARM64

barkeep-0.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (228.1 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

barkeep-0.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl (223.0 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ s390x

barkeep-0.0.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (242.0 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ppc64le

barkeep-0.0.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (236.0 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686

barkeep-0.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (216.9 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

barkeep-0.0.2-cp39-cp39-macosx_11_0_arm64.whl (634.0 kB view hashes)

Uploaded CPython 3.9 macOS 11.0+ ARM64

barkeep-0.0.2-cp39-cp39-macosx_10_9_x86_64.whl (1.2 MB view hashes)

Uploaded CPython 3.9 macOS 10.9+ x86-64

Supported by

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