- Allow passing multiple file names to graph, to get multiple lines in HTML by @devdanzin in #206
- Test support for Python 3.12 by @tonybaloney in #224
- Add line numbers for metrics in Cyclomatic and Halstead operators by @devdanzin in #218
- Standalone plotly.min.js for graph (fix #189) by @devdanzin in #209
- Use class/function names for metric_type and aggregate in list-metrics by @devdanzin in #213
- Use ruff to replace bandit, flake8 and plugins, isort, pydocstyle, pyupgrade by @cclauss in #174
- ruff recommended code changes from #174 by @cclauss in #175
- Use xmlcharrefreplace to handle codec errors in html report writing (fix #182) by @devdanzin in #183
- HTML report: replace ESCAPE character (fix #184) by @devdanzin in #185
- Allow report to only display revisions that have changes (fix #187) by @devdanzin in #188
- Fix ruff CI checks by @devdanzin in #195
- Fix creating graphs for directories in Windows (fix #190) by @devdanzin in #191
- Avoid statistics.StatisticsError if rank finds no data (fix #196) by @devdanzin in #197
- Avoid using unicode characters if
sys.stdout
doesn't support them (fix #65) by @devdanzin in #200 - Fix some docstrings by @devdanzin in #198
- Fix graph not displaying filenames as line labels by @devdanzin in #202
- Avoid report erroring out if there is no data to show by @devdanzin in #203
- Allow output from commands to be wrapped to terminal width (fix #81) by @devdanzin in #201
- Handle sys.stdout.encoding being None in get_style() by @devdanzin in #204
- Annotate core functions and remove sphinx style argument types by @tonybaloney in #205
- Fix ruff error due to use of .format() in diff.py by @devdanzin in #207
- Fix HTML report table not being scrollable (fix #186) by @devdanzin in #208
- Delete unused, untested decorators.py by @devdanzin in #212
- Fix aggregation in Windows (fix #210) by @devdanzin in #211
- Restore displaying graph markers by @devdanzin in #215
- Update graph and report documentation by @devdanzin in #216
- Lazy-format all logging calls (fix #219) by @devdanzin in #220
- Add some more typing by @devdanzin in #221
- Add unit tests for some commands by @devdanzin in #199
- Fix typing of tests and make pyright check them on CI by @devdanzin in #222
- refactor: apply black on wily codebase by @skarzi in #162
- refactor: apply isort on wily codebase by @skarzi in #163
- Adds Code of Conduct by @kjaymiller in #166
- Upgrade plotly from 4.x to 5.x by @anderso in #167
- Fixed dependency conflict for packages using newer versions of click (@skarzi)
- Graph will include deleted files (@ThomasTNO)
- Add support for Python 3.11
- Fixed click dependencies
- Fixed a bug where the colors for diffs in report were the wrong way around
- Added Python 3.9 support (@skarzi and @willfrey)
- Added cache_path to configuration options (@skarzi)
- Added a German translation (@DahlitzFlorian)
- Added the version number to the help text (@DahlitzFlorian)
- Added infrastructure for international languages in CLI
- Fixed bug on configuration of operators PR#116 by @skarzi
- Fixed bug in use of mkstemp in log files
- Fixed the color of the maintainability index so higher is better (green)
- Added a
rank
command to show files either matching a pattern or all in the index sorted by a particular metric.
- Git archiver now supports a detached head state. Means that wily build can run in a detached head, will checkout the reference after build.
- Add argument to
wily diff
to specify a target revision to compare with, can be a Git SHA or a Git reference, e.g.HEAD^1
wily diff
argument for--all
/--changes-only
has shorter-a
/-c
also.wily diff
argument for--metrics
has shorter-m
also.wily report
argument for--message
has shorter-m
also.wily index
argument for--message
has shorter-m
also.- Added examples, tests and documentation for CICD patterns.
- Debug logs are always stored in a temporary local file, on the event of a crash, wily will suggest the user to upload this file to GitHub with a copy of the crash log
- Unhandled exceptions raised by the operators (normally file formatting) are now debug events not warnings
- Updated to flit 2.0 for packaging (development change, no impact to users)
- Moved source code to src/ (development change, no impact to users)
- The build process uses the metadata from Git to only scan the files that have changed for each revision. Significantly speeds up build times (25x>).
- The diff process uses multiprocessing to make it 3-4x faster to complete.
- Officially add support for Python 3.8.
- Process crashes are now captured and output on the console in the debug log.
- State index building is 10-20% faster.
- Updated radon to 4.0.0
- Added support for IPython Notebooks (enabled by default)
- BUGFIX Fixed
TypeError: unsupported operand type(s) for +: 'int' and 'dict'
occurring when a file contains multiple functions with the same name. Fixes 73 by @alegonz - Updated code style to meet black requirements.
- Pinned version of radon as newer version has API changes.
- [BUGFIX] Fixed an issue where illegal/unusual filepath characters within the git history would cause the halstead harvester to crash unrecoverably. Halstead will now handle and report the error but mark the file as missing in the index (#64) fixed in #63 by @abadger.
- [BUGFIX] Fixed an issue where calling a command without a wily index would run the CLI wizard prompt, but immediately crash because the --skip-git-ignore flag no longer exists (#61)
- [BUGFIX] Fixed an issue where path could not be set via the configuration file because it is required in the CLI
- Metrics no longer need to be in full, e.g. 'raw.loc', but instead can simply be the name, e.g. 'loc' across all commands.
- Added a
--console-format
option to the report command to create Markdown, rST or other formats.
- Report command now has the ability to generate HTML reports with the
-f HTML
option @DahlitzFlorian - Halstead metrics enabled by default
- Wily now supports Windows! Full test suite works on Windows, Mac OS and Linux
- Wily no longer puts the .wily cache in the target path, cache is now stored in the $HOME path. This means you no longer need to add .wily to .gitignore before running a build. Wily will isolate cache folders based on the absolute path
- Added a --cache flag to specify the path to the cache for shared cache's
- Added
-V
version flag and added current version to--help
header @DahlitzFlorian
- [BUGFIX] Fixed an issue where the aggregation of the maintainability.rank metric would cause the build to crash if 2 files in the same directory had the same rank.
- [BUGFIX] Fixed an issue that occurred if a target project contained a revision with invalid Python syntax, this is quite common, especially on long projects. The cyclomatic op would crash, also the aggregation logic would expect all metrics to be inside the output. This change avoids that and raises a warning instead.
- Build process is now run with a multiprocess pool, build times are 50-70% faster (depending on number of operators)
- Build process will now create a stub for each directory so you can run report on any directory and it will give you aggregate metrics. Each metric specifies it's own aggregation function.
- Add halstead metrics as an optional operator
- Add an archiver flag to the build command (
-a
) - Add a new filesystem archiver as an alternative to the git archiver for when you want to measure changes between files without having to use git.
- Setup new workflow - if the git archiver fails to initialise, build will default to the filesystem assuming the path is not a git repository.
NB: Upgrade will warn about index rebuild, this is expected behaviour
- Support for directories in graph command, will recursively scan all .py files and graph them
- Support for configuring the x-axis on the graph command (defaults to history) to a custom metric
- Support for configuring the z-axis (size of bubble on scatter) in graph command by specifying a second metric
- Set metrics to cap at 2 possible options in graph command
- Running the test suite no longer opens 12 browser windows :-)
- API Change The
wily report
command now takes the metrics as the 2nd - nth arguments, instead of via--metrics
- Lots more documentation! See https://wily.readthedocs.io/
NB: Changes to the wily index will require a rebuild of cache.
- Introduce index versioning, raises a warning if index is old
- Add a
setup
command, which will be prompted by default in the absence of wily cache - Wily
build
now specifies the maximum revisions using-n
instead of-h
, which was confusing with--help
- Build targets are now a required argument
skip-ignore-check
argument in build renamed toskip-gitignore-check
- All commands will prompt to build instead of raising an error for missing cache
files
is now a required argument for the diff commandmetrics
is now a required argument for the graph command- Fixed various bugs
- Improved performance
- Support for cyclomatic complexity of methods, functions and classes
- Extend the report and graph command line to support querying of methods, classes and functions within a file
- Sort the index before storing by date (descending) in-case the order changes for git commits
- Diff will only show files with changed metrics by default
- Extend the diff command to have an --all flag to show all changes
- Diff command now supports granular metrics \o/
- Added lines-of-code metric to the granular metrics
- Support multiple metrics in graph command
- Git archiver will now check for existence of '.wily/', '.wily/**/*', '.wily', and others in .gitignore
- Introduce a new
--output
flag to the graph command to specify output HTML file instead of opening file in browser. - Added toggle for disabling the .gitignore check in git archiver
- Add an --skip-ignore-check option to
wily build
to skip the checking of .gitignore - Remove references to the mccabe algorithm as it's not implemented
- Complete support for pre-commit
- Fix a bug where .gitignore was not being passed correctly
- Add a 'diff' command to show the metrics changed values between the last index and the current data.
- Build now compares existing git history with the cached history and only builds the missing revisions instead of building the entire index
- Will check if .wily/ is not in .gitignore before running build
- Improved documentation..
- The build command now requires the target path, and supports multiple paths. Is no longer -t option, but an argument. This is to prevent the user from accidentally trying to scan venv's
- Operators all have a default metric (lines-of-code, maintainability-index)
- Report command by default will now display the default metrics in an index
- Report command now accepts multiple metrics and adds them to the table
- Add support for relative paths in cache
- Fixed bug when non-standard (ie. cwd) was used as the target, would not find items to report
- Add a dabbing fox as a logo
- Add documentation
- Add integration and unit tests for the main commands and packages