Skip to main content

locust

"It's git diff --stat on steroids!" - @scottmilliken

What is Locust?

Locust reduces turnaround time on code reviews.

It can take a lot of effort for a reviewer to relate the line-by-line changes in a patch to their mental model of the code base. This is a consistent impediment to fast responses on code reviews.

Locust provides a semantic layer on top of git diff. Where git diff describes changes in terms of the lines in the code base, Locust summarizes changes by the effect on modules, classes, and functions.

How does it work?

Locust is a command line tool, and you can invoke it as:

locust 22dd7fd6adf392bb29d13d10f10e7dbb1d97bfce c9813bd5871a9919551ccd917712135c40367c5c --format yaml

This produces the following output:

locust:
  - file: locust/ci_helpers/github.py
    changes:
      - name: generate_argument_parser
        type: function
        line: 11
        changed_lines: 9
        total_lines: 9
        children: []
      - name: helper_push
        type: function
        line: 22
        changed_lines: 13
        total_lines: 13
        children: []
      - name: helper_pr
        type: function
        line: 37
        changed_lines: 14
        total_lines: 14
        children: []
      - name: main
        type: function
        line: 53
        changed_lines: 29
        total_lines: 29
        children: []
refs:
  initial: 22dd7fd
  terminal: c9813bd

CI/CD

Locust is easy to use in CI/CD pipelines:

Installation

Locust requires Python3 (specifically, it was written in Python3.8).

Install from PyPI

pip install bugout-locust

Install from source

Clone this repository and run from the project root:

python setup.py install

Docker

You can also use the Locust docker image:

docker pull bugout/locust

To run Locust using docker:

docker run -v $ABSOLUTE_PATH_TO_GIT_REPO:/usr/src/app bugout/locust -r /usr/src/app \
    $INITIAL_REVISION \
    $TERMINAL_REVISION \
    --format yaml

Output formats

Locust can produce output in many formats. The currently supported formats are:

  1. JSON (--format json)

  2. YAML (--format yaml)

  3. HTML (--format html)

  4. GitHub-flavored HTML, meant to be used with GitHub styles (--format html-github)

Contributing

Running tests

Make sure to clone simiotics/locust-test-cases repo to your machine.

Run:

git -c <path to locust-test-cases repo> fetch origin

Then, from the root of this repo:

LOCUST_TESTCASES_DIR=<path to locust-test-cases repo> ./test.sh

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bugout-locust-0.1.5.tar.gz (11.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bugout_locust-0.1.5-py3-none-any.whl (15.7 kB view details)

Uploaded Python 3

File details

Details for the file bugout-locust-0.1.5.tar.gz.

File metadata

  • Download URL: bugout-locust-0.1.5.tar.gz
  • Upload date:
  • Size: 11.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.8.5

File hashes

Hashes for bugout-locust-0.1.5.tar.gz
Algorithm Hash digest
SHA256 e96cc1614625b232266d75a0e081b9d6e1b457f803258594dde1d09720ca9668
MD5 505d44b2586e7f76987b251872408e32
BLAKE2b-256 404ed38c268d6dacfe4c2166a16915b62cce5e851b9bd3f0931ef6216de7d7f8

See more details on using hashes here.

File details

Details for the file bugout_locust-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: bugout_locust-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 15.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.8.5

File hashes

Hashes for bugout_locust-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 e5961a76527752e46bc1e1c19dca3c7f051a9976122bdcd1a319063686a8e961
MD5 f81424361d1c2fe918cb2c890fb25868
BLAKE2b-256 4bb7e211b6365f0d6b5dd38603700fd62b791f53c8d49305e9197cb2ac3a66b4

See more details on using hashes here.

Release history Release notifications | RSS feed

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

0.2.8

2 files

0.2.7

2 files

0.2.6

2 files

0.2.5

2 files

0.2.4

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

This release

0.1.5 This release

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.0

3 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page