Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

wily

A command-line application for tracking, reporting on complexity of Python tests and applications.

Build Status codecov Documentation Status PyPI version black

wily [a]:
quick to think of things, having a very good understanding of situations and possibilities, 
and often willing to use tricks to achieve an aim.

Wily uses git to go through each revision (commit) in a branch and run complexity and code-analysis metrics over the code. You can use this to limit your code or report on trends for complexity, length etc.

Usage

See the Documentation Site for full usage guides.

Wily can be used via a command line interface, wily.

 $ wily --help
 

help-screen

pre-commit plugin

You can install wily as a pre-commit plugin.

repos:
-   repo: local
    hooks:
    -   id: wily
        name: wily
        entry: wily diff
        verbose: true
        language: python
        additional_dependencies: [wily]

Command line usage

wily build

The first step to using wily is to build a wily cache with all of the statistics of your project.

Usage: __main__.py build [OPTIONS] [TARGETS]...

  Build the wily cache

Options:
  -h, --max-revisions INTEGER  The maximum number of historical commits to
                               archive
  -o, --operators TEXT         List of operators, separated by commas
  --help                       Show this message and exit.

By default, wily will assume your project folder is a git directory. Wily will not build a cache if the working copy is dirty (has changed files not commited).

 $ wily build src/

Limit the number of revisions (defaults to 50).

wily-build

wily report

Show a specific metric for a given file, requires that .wily/ exists

Usage: wily report [OPTIONS] FILE

  Show metrics for a given file.

Options:
  --metrics TEXT            comma-seperated list of metrics, see list-metrics
                            for choices
  -n, --number INTEGER      Number of items to show
  --message / --no-message  Include revision message
  --help                    Show this message and exit.

wily report will print the metric and the delta between each revision.

wily-report

wily graph

Similar to wily report but instead of printing in the console, wily will print a graph in a browser.

wily-graph

wily index

Show information about the build directory. Requires that .wily/ exists.

Usage: wily index [OPTIONS]

  Show the history archive in the .wily/ folder.

Options:
  --help  Show this message and exit.

wily index will print the configuration to the screen and list all revisions that have been analysed and the operators used.

 $ wily index
--------Configuration---------
Path: .
Archiver: git
Operators: {'cyclomatic', 'raw', 'maintainability'}

-----------History------------
╒══════════════════════════════════════════╤══════════════╤════════════╕
│ Revision                                 │ Author       │ Date       │
╞══════════════════════════════════════════╪══════════════╪════════════╡
│ e8110e550ed018738e9c4e2e573cd2bdc2402ad0 │ Anthony Shaw │ 2018-10-15 │
├──────────────────────────────────────────┼──────────────┼────────────┤
│ d639f1d274cf16d92f74c38fc6cfbee9fa4872bb │ Anthony Shaw │ 2018-10-15 │
├──────────────────────────────────────────┼──────────────┼────────────┤
│ 3e8af55e0f0300013fb621fe93628173907b263e │ Anthony Shaw │ 2018-10-15 │
├──────────────────────────────────────────┼──────────────┼────────────┤
│ 86484e5c33fe11d930be05e9d727846af106af34 │ Anthony Shaw │ 2018-10-15 │
├──────────────────────────────────────────┼──────────────┼────────────┤
│ 3cfe33daa87cb28f0b89c1fd84e1d2c42d7613e9 │ Anthony Shaw │ 2018-10-15 │
├──────────────────────────────────────────┼──────────────┼────────────┤
│ 14e31c613f094c24171e0be3448a8543e73db996 │ Anthony Shaw │ 2018-10-15 │
├──────────────────────────────────────────┼──────────────┼────────────┤
│ 267b91abefb8b47a7bbed7d08889644ced691774 │ Anthony Shaw │ 2018-10-15 │
├──────────────────────────────────────────┼──────────────┼────────────┤
│ 98a95a28e4753a3b783788a2208994b69d4f6b99 │ Anthony Shaw │ 2018-10-15 │
├──────────────────────────────────────────┼──────────────┼────────────┤
│ 8d8da4e1e3fdf0642693ca104d5e4b33ce0b5fad │ Anthony Shaw │ 2018-10-15 │
├──────────────────────────────────────────┼──────────────┼────────────┤
│ 7ac596ee04c2cc86b0f3aa8d7159535834befd59 │ Anthony Shaw │ 2018-10-15 │
╘══════════════════════════════════════════╧══════════════╧════════════╛

wily list-metrics

List the metrics available in the Wily operators. Each one of the metrics can be used in wily graph and wily report

 $ wily list-metrics
mccabe operator:
No metrics available
raw operator:
╒═════════════════╤══════════════════════╤═══════════════╤══════════════════════════╕
│                 │ Name                 │ Description   │ Type                     │
╞═════════════════╪══════════════════════╪═══════════════╪══════════════════════════╡
│ loc             │ Lines of Code        │ <class 'int'> │ MetricType.Informational │
├─────────────────┼──────────────────────┼───────────────┼──────────────────────────┤
│ lloc            │ L Lines of Code      │ <class 'int'> │ MetricType.Informational │
├─────────────────┼──────────────────────┼───────────────┼──────────────────────────┤
│ sloc            │ S Lines of Code      │ <class 'int'> │ MetricType.Informational │
├─────────────────┼──────────────────────┼───────────────┼──────────────────────────┤
│ comments        │ Multi-line comments  │ <class 'int'> │ MetricType.Informational │
├─────────────────┼──────────────────────┼───────────────┼──────────────────────────┤
│ multi           │ Multi lines          │ <class 'int'> │ MetricType.Informational │
├─────────────────┼──────────────────────┼───────────────┼──────────────────────────┤
│ blank           │ blank lines          │ <class 'int'> │ MetricType.Informational │
├─────────────────┼──────────────────────┼───────────────┼──────────────────────────┤
│ single_comments │ Single comment lines │ <class 'int'> │ MetricType.Informational │
╘═════════════════╧══════════════════════╧═══════════════╧══════════════════════════╛
cyclomatic operator:
No metrics available
maintainability operator:
╒══════╤═════════════════════════╤═════════════════╤══════════════════════════╕
│      │ Name                    │ Description     │ Type                     │
╞══════╪═════════════════════════╪═════════════════╪══════════════════════════╡
│ rank │ Maintainability Ranking │ <class 'str'>   │ MetricType.Informational │
├──────┼─────────────────────────┼─────────────────┼──────────────────────────┤
│ mi   │ Maintainability Index   │ <class 'float'> │ MetricType.AimLow        │
╘══════╧═════════════════════════╧═════════════════╧══════════════════════════╛

Configuration

You can put a wily.cfg file in your project directory and wily will override the runtime settings. Here are the available options:

# list of operators, choose from cyclomatic, maintainability, mccabe and raw
operators = cyclomatic,raw
# archiver to use, defaults to git
archiver = git
# path to analyse, defaults to .
path = /path/to/target
# max revisions to archive, defaults to 50
max_revisions = 20

You can also override the path to the configuration with the --config flag on the command-line.

Credits

"cute animal doing dabbing" Designed by Freepik

Metadata

Release files for wily 1.3.0.dev0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wily 1.3.0.dev0
File Size Uploaded
wily-1.3.0.dev0.tar.gz 544.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for wily 1.3.0.dev0
File Interpreter ABI Platform
wily-1.3.0.dev0-py3-none-any.whl Python 3 none any Details

Total release size: 604.6 kB

Release files / wily-1.3.0.dev0.tar.gz

Download URL wily-1.3.0.dev0.tar.gz
Size 544.0 kB
Tags Source
SHA-256 checksum
How to use checksums
5c1b18a5e558351777818f8b1328f80a1e9165bf0f20fd5349f50619a7070f0b
BLAKE2b-256 checksum
How to use checksums
9ae05c228a95d07aea754951f40ed3151c6610e95bf42d63029fc7dfdaf09c88
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-requests/2.19.1

Release files / wily-1.3.0.dev0-py3-none-any.whl

Download URL wily-1.3.0.dev0-py3-none-any.whl
Size 60.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
21ebe0f4d2e979f8146534cab6f2db21cd91e0e8b5b21906a4f28c1b9b6c1088
BLAKE2b-256 checksum
How to use checksums
4a338841fc88aa899b06754c2646a28cdea050250c164d9d36bb3ca43b2e4980
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-requests/2.19.1

Release history Release notifications | RSS feed

1.25.0

2 release files

1.24.0

2 release files

1.23.0

2 release files

1.22.0

2 release files

1.21.0

2 release files

1.18.0

2 release files

1.17.0

2 release files

1.16.0

2 release files

1.12.4

2 release files

1.12.3

2 release files

1.12.2

2 release files

1.12.0

2 release files

1.11.0

2 release files

1.10.0

2 release files

1.9.0

2 release files

1.8.2

2 release files

1.8.1

2 release files

1.8.0

2 release files

1.7.0

2 release files

1.6.0

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.0

2 release files

This release

1.3.0.dev0 This release

2 release files

1.2.0

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.0

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.5.0

2 release files

0.4.2

2 release 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