Name | wily JSON |
Version |
1.24.2
JSON |
| download |
home_page | None |
Summary | A Python application for tracking, reporting on timing and complexity in tests and applications. |
upload_time | 2023-07-05 05:02:32 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.6 |
license | None |
keywords |
|
VCS |
 |
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|

A command-line application for tracking, reporting on complexity of Python tests and applications.
[](https://wily.readthedocs.io/)
[](https://codecov.io/gh/tonybaloney/wily) [](https://wily.readthedocs.io/en/latest/?badge=latest) [](https://badge.fury.io/py/wily) [](https://anaconda.org/conda-forge/wily) 
```
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.
## Installation
Wily can be installed via pip from Python 3.6 and above:
```console
$ pip install wily
```
Alternatively, Wily packages are available on conda-forge:
```console
$ conda install -c conda-forge wily
```
## Usage
See the [Documentation Site](https://wily.readthedocs.io/) for full usage guides.
Wily can be used via a command line interface, `wily`.
```console
$ wily --help
```

## Demo
Here is a demo of wily analysing a Python project, giving a summary of changes to complexity in the last 10 commits and then showing changes against a specific git revision:

## Using Wily in a CI/CD pipeline
Wily can be used in a CI/CD workflow to compare the complexity of the current files against a particular revision.
By default, wily will compare against the previous revision (for a git-pre-commit hook) but you can also give a Git ref, for example `HEAD^1` is the commit before the HEAD reference.
```console
$ wily build src/
$ wily diff src/ -r HEAD^1
```
Or, to compare against
```console
$ wily build src/
$ wily diff src/ -r master
```
## pre-commit plugin
You can install wily as a [pre-commit](http://www.pre-commit.com/) plugin by adding the following to ``.pre-commit-config.yaml``
```yaml
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 the statistics of your project.
```
Usage: __main__.py build [OPTIONS] [TARGETS]...
Build the wily cache
Options:
-n, --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 committed).
```console
$ wily build src/
```
Limit the number of revisions (defaults to 50).

#### `wily report`
Show a specific metric for a given file, requires that `.wily/` exists
`wily report` will print the metric and the delta between each revision.

#### `wily rank`
Show the ranking for all files in a directory or a single file based on the metric provided, requires that `.wily/` exists
`wily rank` will print a table of files and their metric values.

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

#### `wily index`
Show information about the build directory. Requires that `.wily/` exists.
`wily index` will print the configuration to the screen and list all revisions that have been analysed and the operators used.

### `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`
```console
$ 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:
```ini
[wily]
# 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.
## IPython/Jupyter Notebooks
Wily will detect and scan all Python code in .ipynb files automatically.
You can disable this behaviour if you require by setting `ipynb_support = false` in the configuration.
You can also disable the behaviour of reporting on individual cells by setting `ipynb_cells = false`.
# Credits
## Contributors
- @wcooley (Wil Cooley)
- @DahlitzFlorian (Florian Dahlitz)
- @alegonz
- @DanielChabrowski
- @jwattier
- @skarzi
"cute animal doing dabbing" [Designed by Freepik](https://www.freepik.com/free-vector/cute-animal-doing-dabbing_2462508.htm)
Raw data
{
"_id": null,
"home_page": null,
"name": "wily",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": null,
"keywords": null,
"author": null,
"author_email": "Anthony Shaw <anthonyshaw@apache.org>",
"download_url": "https://files.pythonhosted.org/packages/d1/69/73491d1f080ccce853a0e42475506f600622f9b79629e15444fdc0212690/wily-1.24.2.tar.gz",
"platform": null,
"description": "\n\nA command-line application for tracking, reporting on complexity of Python tests and applications.\n\n[](https://wily.readthedocs.io/)\n[](https://codecov.io/gh/tonybaloney/wily) [](https://wily.readthedocs.io/en/latest/?badge=latest) [](https://badge.fury.io/py/wily) [](https://anaconda.org/conda-forge/wily) \n\n\n```\nwily [a]:\nquick to think of things, having a very good understanding of situations and possibilities, \nand often willing to use tricks to achieve an aim.\n```\n\nWily 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.\n\n## Installation\n\nWily can be installed via pip from Python 3.6 and above:\n\n```console\n $ pip install wily\n```\n\nAlternatively, Wily packages are available on conda-forge:\n\n```console\n $ conda install -c conda-forge wily\n```\n\n## Usage\n\nSee the [Documentation Site](https://wily.readthedocs.io/) for full usage guides.\n\nWily can be used via a command line interface, `wily`.\n\n```console\n $ wily --help\n```\n\n\n\n## Demo\n\nHere is a demo of wily analysing a Python project, giving a summary of changes to complexity in the last 10 commits and then showing changes against a specific git revision: \n\n\n\n## Using Wily in a CI/CD pipeline\n\nWily can be used in a CI/CD workflow to compare the complexity of the current files against a particular revision.\n\nBy default, wily will compare against the previous revision (for a git-pre-commit hook) but you can also give a Git ref, for example `HEAD^1` is the commit before the HEAD reference.\n\n```console\n $ wily build src/\n $ wily diff src/ -r HEAD^1\n```\n\nOr, to compare against\n\n```console\n $ wily build src/\n $ wily diff src/ -r master\n```\n\n## pre-commit plugin\n\nYou can install wily as a [pre-commit](http://www.pre-commit.com/) plugin by adding the following to ``.pre-commit-config.yaml``\n\n```yaml\nrepos:\n- repo: local\n hooks:\n - id: wily\n name: wily\n entry: wily diff\n verbose: true\n language: python\n additional_dependencies: [wily]\n```\n\n### Command line usage\n\n#### `wily build`\n\nThe first step to using `wily` is to build a wily cache with the statistics of your project. \n\n```\nUsage: __main__.py build [OPTIONS] [TARGETS]...\n\n Build the wily cache\n\nOptions:\n -n, --max-revisions INTEGER The maximum number of historical commits to\n archive\n -o, --operators TEXT List of operators, separated by commas\n --help Show this message and exit.\n```\n\nBy 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 committed).\n\n```console\n $ wily build src/\n ```\n\nLimit the number of revisions (defaults to 50).\n\n\n\n\n#### `wily report`\n\nShow a specific metric for a given file, requires that `.wily/` exists\n\n`wily report` will print the metric and the delta between each revision.\n\n\n\n#### `wily rank`\n\nShow the ranking for all files in a directory or a single file based on the metric provided, requires that `.wily/` exists\n\n`wily rank` will print a table of files and their metric values.\n\n\n\n#### `wily graph`\n\nSimilar to `wily report` but instead of printing in the console, `wily` will print a graph in a browser.\n\n\n\n#### `wily index`\n\nShow information about the build directory. Requires that `.wily/` exists.\n\n`wily index` will print the configuration to the screen and list all revisions that have been analysed and the operators used.\n\n\n\n \n### `wily list-metrics`\n\nList the metrics available in the Wily operators. Each one of the metrics can be used in `wily graph` and `wily report`\n\n```console\n $ wily list-metrics\nmccabe operator:\nNo metrics available\nraw operator:\n\u2552\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2555\n\u2502 \u2502 Name \u2502 Description \u2502 Type \u2502\n\u255e\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2561\n\u2502 loc \u2502 Lines of Code \u2502 <class 'int'> \u2502 MetricType.Informational \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 lloc \u2502 L Lines of Code \u2502 <class 'int'> \u2502 MetricType.Informational \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 sloc \u2502 S Lines of Code \u2502 <class 'int'> \u2502 MetricType.Informational \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 comments \u2502 Multi-line comments \u2502 <class 'int'> \u2502 MetricType.Informational \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 multi \u2502 Multi lines \u2502 <class 'int'> \u2502 MetricType.Informational \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 blank \u2502 blank lines \u2502 <class 'int'> \u2502 MetricType.Informational \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 single_comments \u2502 Single comment lines \u2502 <class 'int'> \u2502 MetricType.Informational \u2502\n\u2558\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255b\ncyclomatic operator:\nNo metrics available\nmaintainability operator:\n\u2552\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2555\n\u2502 \u2502 Name \u2502 Description \u2502 Type \u2502\n\u255e\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2561\n\u2502 rank \u2502 Maintainability Ranking \u2502 <class 'str'> \u2502 MetricType.Informational \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 mi \u2502 Maintainability Index \u2502 <class 'float'> \u2502 MetricType.AimLow \u2502\n\u2558\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255b\n```\n\n## Configuration\n\nYou can put a `wily.cfg` file in your project directory and `wily` will override the runtime settings. Here are the available options:\n\n```ini\n[wily]\n# list of operators, choose from cyclomatic, maintainability, mccabe and raw\noperators = cyclomatic,raw\n# archiver to use, defaults to git\narchiver = git\n# path to analyse, defaults to .\npath = /path/to/target\n# max revisions to archive, defaults to 50\nmax_revisions = 20\n```\n\nYou can also override the path to the configuration with the `--config` flag on the command-line.\n\n## IPython/Jupyter Notebooks\n\nWily will detect and scan all Python code in .ipynb files automatically. \n\nYou can disable this behaviour if you require by setting `ipynb_support = false` in the configuration.\nYou can also disable the behaviour of reporting on individual cells by setting `ipynb_cells = false`.\n\n\n# Credits\n\n## Contributors\n\n- @wcooley (Wil Cooley)\n- @DahlitzFlorian (Florian Dahlitz)\n- @alegonz\n- @DanielChabrowski\n- @jwattier\n- @skarzi\n\n\"cute animal doing dabbing\" [Designed by Freepik](https://www.freepik.com/free-vector/cute-animal-doing-dabbing_2462508.htm)\n",
"bugtrack_url": null,
"license": null,
"summary": "A Python application for tracking, reporting on timing and complexity in tests and applications.",
"version": "1.24.2",
"project_urls": {
"Documentation": "https://wily.readthedocs.io/en/latest/",
"Homepage": "https://github.com/tonybaloney/wily"
},
"split_keywords": [],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "6253d7e68de0edabfd904532ecaba8708e0a8ab910e9fa86e7e8880b0f29328f",
"md5": "48528ae76748c8304ecc1c3fa4e48af1",
"sha256": "01fda9478e7599d5a81be935789ce106892bf56f0ab78c447c4b3e85d7b3555f"
},
"downloads": -1,
"filename": "wily-1.24.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "48528ae76748c8304ecc1c3fa4e48af1",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 65600,
"upload_time": "2023-07-05T05:02:20",
"upload_time_iso_8601": "2023-07-05T05:02:20.977937Z",
"url": "https://files.pythonhosted.org/packages/62/53/d7e68de0edabfd904532ecaba8708e0a8ab910e9fa86e7e8880b0f29328f/wily-1.24.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d16973491d1f080ccce853a0e42475506f600622f9b79629e15444fdc0212690",
"md5": "ad477607b17e24dae72e0640e2ca98ae",
"sha256": "2e908ec14cfda3ab5d51face1dbaa1fdd046e7b812b2adf3ccef0b7fa1ac99aa"
},
"downloads": -1,
"filename": "wily-1.24.2.tar.gz",
"has_sig": false,
"md5_digest": "ad477607b17e24dae72e0640e2ca98ae",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 1843615,
"upload_time": "2023-07-05T05:02:32",
"upload_time_iso_8601": "2023-07-05T05:02:32.772440Z",
"url": "https://files.pythonhosted.org/packages/d1/69/73491d1f080ccce853a0e42475506f600622f9b79629e15444fdc0212690/wily-1.24.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-07-05 05:02:32",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "tonybaloney",
"github_project": "wily",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "wily"
}