From 64a0cf4327b832eea1e73947ce2f2eedf88a68d5 Mon Sep 17 00:00:00 2001 From: JoeLametta Date: Fri, 2 Feb 2018 18:00:00 +0000 Subject: [PATCH] Push whipper v0.6.0 release --- CHANGELOG.md | 61 +++- COVERAGE | 101 +++--- README.md | 20 +- doc/.gitignore | 4 - doc/Makefile.am | 30 -- etc/bash_completion.d/.gitignore | 2 - misc/radon_reports/radon_cc.json | 1 + misc/radon_reports/radon_cc.txt | 475 +++++++++++++++++++++++++ misc/radon_reports/radon_mi.json | 1 + misc/radon_reports/radon_mi.txt | 47 +++ misc/radon_reports/radon_raw.json | 1 + misc/radon_reports/radon_raw.txt | 554 ++++++++++++++++++++++++++++++ whipper/__init__.py | 2 +- 13 files changed, 1203 insertions(+), 96 deletions(-) delete mode 100644 doc/.gitignore delete mode 100644 doc/Makefile.am delete mode 100644 etc/bash_completion.d/.gitignore create mode 100644 misc/radon_reports/radon_cc.json create mode 100644 misc/radon_reports/radon_cc.txt create mode 100644 misc/radon_reports/radon_mi.json create mode 100644 misc/radon_reports/radon_mi.txt create mode 100644 misc/radon_reports/radon_raw.json create mode 100644 misc/radon_reports/radon_raw.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index 2cd6afd6..6306a13e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,65 @@ ## [Unreleased](https://github.com/JoeLametta/whipper/tree/HEAD) -[Full Changelog](https://github.com/JoeLametta/whipper/compare/v0.5.1...HEAD) +[Full Changelog](https://github.com/JoeLametta/whipper/compare/v0.6.0...HEAD) + +## [v0.6.0](https://github.com/JoeLametta/whipper/tree/v0.6.0) (2018-02-02) + +**Implemented enhancements:** + +- Error: NotFoundException message displayed while ripping an unknown disc [\#198](https://github.com/JoeLametta/whipper/issues/198) +- rename milestone 101010 to backlog [\#190](https://github.com/JoeLametta/whipper/issues/190) +- Use 'Artist as credited' in filename instead of 'Artist in MusicBrainz' \(e.g. to solve \[unknown\]\) [\#155](https://github.com/JoeLametta/whipper/issues/155) +- Declare supported Python version [\#152](https://github.com/JoeLametta/whipper/issues/152) +- Update doc/release or remove it [\#149](https://github.com/JoeLametta/whipper/issues/149) +- Test HTOA peak value against 0 \(integer equality\) [\#143](https://github.com/JoeLametta/whipper/issues/143) +- Identify media type in log file \(ie CD vs CD-R\) [\#137](https://github.com/JoeLametta/whipper/issues/137) +- Rename the Python module [\#100](https://github.com/JoeLametta/whipper/issues/100) +- libcdio-paranoia instead of cdparanoia [\#87](https://github.com/JoeLametta/whipper/issues/87) +- Support both AccurateRip V1 and AccurateRip V2 at the same time [\#18](https://github.com/JoeLametta/whipper/issues/18) +- Test HTOA peak value against 0 \(integer comparison\) [\#224](https://github.com/JoeLametta/whipper/pull/224) ([JoeLametta](https://github.com/JoeLametta)) + +**Fixed bugs:** + +- Catch DNS error [\#206](https://github.com/JoeLametta/whipper/issues/206) +- whipper doesn't name files .flac, which leads to it not being able to find ripped files [\#194](https://github.com/JoeLametta/whipper/issues/194) +- Issues with finding offset [\#182](https://github.com/JoeLametta/whipper/issues/182) +- failing unittests in systemd-nspawn container [\#157](https://github.com/JoeLametta/whipper/issues/157) +- Regression: Unable to resume a failed rip [\#136](https://github.com/JoeLametta/whipper/issues/136) +- "Catalog Number" incorrectly appended to "artist" instead of the Album name. [\#127](https://github.com/JoeLametta/whipper/issues/127) +- Track "can't be ripped" but EAC can :\) [\#116](https://github.com/JoeLametta/whipper/issues/116) +- ERROR: stopping task which is already stopped [\#59](https://github.com/JoeLametta/whipper/issues/59) +- can't find accuraterip-checksum binary in morituri-uninstalled mode [\#47](https://github.com/JoeLametta/whipper/issues/47) + +**Closed issues:** + +- using your own MusicBrainz server [\#172](https://github.com/JoeLametta/whipper/issues/172) +- cdda2wav from cdrtools instead of cdparanoia [\#38](https://github.com/JoeLametta/whipper/issues/38) + +**Merged pull requests:** + +- Fix appearance of template description text. [\#223](https://github.com/JoeLametta/whipper/pull/223) ([calumchisholm](https://github.com/calumchisholm)) +- Run whipper without installation [\#222](https://github.com/JoeLametta/whipper/pull/222) ([vmx](https://github.com/vmx)) +- Remove doc/release [\#218](https://github.com/JoeLametta/whipper/pull/218) ([MerlijnWajer](https://github.com/MerlijnWajer)) +- Fix resuming previous rips [\#217](https://github.com/JoeLametta/whipper/pull/217) ([MerlijnWajer](https://github.com/MerlijnWajer)) +- Switch to libcdio-cdparanoia \(from cdparanoia\) [\#213](https://github.com/JoeLametta/whipper/pull/213) ([MerlijnWajer](https://github.com/MerlijnWajer)) +- Convert docstrings to reStructuredText [\#211](https://github.com/JoeLametta/whipper/pull/211) ([JoeLametta](https://github.com/JoeLametta)) +- Enable connecting to a custom MusicBrainz server [\#210](https://github.com/JoeLametta/whipper/pull/210) ([naiveaiguy](https://github.com/naiveaiguy)) +- Fix recently introduced Python 3 incompatibility [\#199](https://github.com/JoeLametta/whipper/pull/199) ([LingMan](https://github.com/LingMan)) +- restore .flac extension [\#195](https://github.com/JoeLametta/whipper/pull/195) ([RecursiveForest](https://github.com/RecursiveForest)) +- Misc fixes [\#188](https://github.com/JoeLametta/whipper/pull/188) ([ubitux](https://github.com/ubitux)) +- AccurateRip V2 support [\#187](https://github.com/JoeLametta/whipper/pull/187) ([RecursiveForest](https://github.com/RecursiveForest)) +- Solve all flake8 warnings [\#163](https://github.com/JoeLametta/whipper/pull/163) ([JoeLametta](https://github.com/JoeLametta)) +- Minor touchups [\#161](https://github.com/JoeLametta/whipper/pull/161) ([Freso](https://github.com/Freso)) +- Stop allowing flake8 to fail in Travis CI [\#160](https://github.com/JoeLametta/whipper/pull/160) ([Freso](https://github.com/Freso)) +- Fix division by zero [\#159](https://github.com/JoeLametta/whipper/pull/159) ([sqozz](https://github.com/sqozz)) +- Fix artist name [\#156](https://github.com/JoeLametta/whipper/pull/156) ([gorgobacka](https://github.com/gorgobacka)) +- Detect and handle CD-R discs [\#154](https://github.com/JoeLametta/whipper/pull/154) ([gorgobacka](https://github.com/gorgobacka)) +- Disambiguate on release [\#153](https://github.com/JoeLametta/whipper/pull/153) ([Freso](https://github.com/Freso)) +- Add flake8 testing to CI [\#151](https://github.com/JoeLametta/whipper/pull/151) ([Freso](https://github.com/Freso)) +- Clean up files in misc/ [\#150](https://github.com/JoeLametta/whipper/pull/150) ([Freso](https://github.com/Freso)) +- Update .gitignore [\#148](https://github.com/JoeLametta/whipper/pull/148) ([Freso](https://github.com/Freso)) +- Fix references to morituri. [\#109](https://github.com/JoeLametta/whipper/pull/109) ([Freso](https://github.com/Freso)) ## [v0.5.1](https://github.com/JoeLametta/whipper/tree/v0.5.1) (2017-04-24) @@ -168,3 +226,4 @@ \* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)* and hand edited by [JoeLametta](https://github.com/JoeLametta). + diff --git a/COVERAGE b/COVERAGE index 7f3bd052..b1af8a78 100644 --- a/COVERAGE +++ b/COVERAGE @@ -1,53 +1,54 @@ -Coverage.py 4.3.4 text report against whipper v0.5.1 +Coverage.py 4.4.2 text report against whipper v0.6.0 -$ coverage run --source=morituri --omit='morituri/test/*' -m unittest discover +$ coverage run --branch --omit='whipper/test/*' --source=whipper -m unittest discover $ coverage report -m -Name Stmts Miss Cover Missing ----------------------------------------------------------------- -morituri/__init__.py 10 2 80% 9, 11 -morituri/command/__init__.py 0 0 100% -morituri/command/accurip.py 46 46 0% 23-100 -morituri/command/basecommand.py 58 42 28% 53-98, 105-114, 117, 120, 123, 126-129 -morituri/command/cd.py 273 232 15% 85-94, 100-209, 212, 224, 246-287, 293-316, 320-578 -morituri/command/debug.py 168 168 0% 23-297 -morituri/command/drive.py 62 62 0% 23-121 -morituri/command/image.py 74 74 0% 23-152 -morituri/command/main.py 55 55 0% 4-96 -morituri/command/offset.py 121 121 0% 23-241 -morituri/common/__init__.py 0 0 100% -morituri/common/accurip.py 88 43 51% 40-42, 46, 49-65, 69-80, 83-94, 97-102 -morituri/common/cache.py 104 49 53% 67-91, 97, 100, 108-111, 114-115, 131, 143-148, 171-178, 202-207, 212-229 -morituri/common/checksum.py 33 18 45% 42, 45-46, 49-53, 60-65, 68-69, 72-76 -morituri/common/common.py 134 15 89% 51-52, 119-120, 142-143, 165, 259-265, 301-305 -morituri/common/config.py 85 9 89% 72, 97-98, 117-118, 124, 135, 137, 139 -morituri/common/directory.py 21 8 62% 30, 39, 43-50 -morituri/common/drive.py 31 20 35% 36-41, 45-51, 55-61, 65-73 -morituri/common/encode.py 44 23 48% 38-39, 42-43, 46-47, 53-56, 59-60, 63-64, 74-75, 78-79, 82-89 -morituri/common/mbngs.py 157 52 67% 39-40, 46, 91-97, 159-160, 165-166, 211, 214, 217, 238-240, 249, 269-321 -morituri/common/path.py 24 0 100% -morituri/common/program.py 391 262 33% 90-92, 101-117, 125-157, 166-171, 174, 218, 230-231, 233-240, 247-253, 271-285, 292-415, 426-476, 484-492, 496-510, 521-560, 563-565, 575-584, 594-595, 664, 682-692, 695-703 -morituri/common/renamer.py 102 2 98% 138, 161 -morituri/common/task.py 77 19 75% 45-50, 85-86, 89-92, 100, 114-115, 122, 128, 134, 140, 147 -morituri/extern/__init__.py 0 0 100% -morituri/extern/asyncsub.py 130 71 45% 15-17, 32, 37-38, 47-84, 89-102, 115, 122, 133, 144, 150, 155-159, 162-174 -morituri/extern/task/__init__.py 0 0 100% -morituri/extern/task/task.py 272 114 58% 49, 53, 80, 83, 86, 153-154, 171-173, 181-197, 215-217, 238-239, 279-280, 283-289, 303-304, 312-314, 323-330, 336-352, 356, 359, 366-383, 394-395, 398-401, 405, 408, 422, 425-427, 442, 454, 498-503, 513-518, 529-537, 540-549, 552-553, 561, 565-567 -morituri/image/__init__.py 0 0 100% -morituri/image/cue.py 91 9 90% 101, 118-119, 135-137, 161, 189, 207 -morituri/image/image.py 138 110 20% 52-60, 68-70, 77-110, 122-145, 148-149, 163-195, 198-214, 225-255 -morituri/image/table.py 403 22 95% 240, 355-356, 555, 635, 718-719, 740-741, 749-752, 756-757, 802, 848-849, 851-852, 861-862, 867-869 -morituri/image/toc.py 204 15 93% 136, 263-264, 280-283, 345-347, 369-371, 391, 415 -morituri/program/__init__.py 0 0 100% -morituri/program/arc.py 35 28 20% 11-52 -morituri/program/cdparanoia.py 312 183 41% 50-52, 61-62, 126-128, 167-170, 243-257, 260-310, 313-351, 354-358, 361-395, 450-501, 506-552, 584-587, 590, 597, 603, 608-613 -morituri/program/cdrdao.py 44 23 48% 24-46, 55-57, 61-63, 70, 76 -morituri/program/flac.py 9 5 44% 11-18 -morituri/program/sox.py 15 4 73% 17-18, 22-23 -morituri/program/soxi.py 28 2 93% 35, 48 -morituri/program/utils.py 16 10 38% 11-12, 19-20, 30-35 -morituri/result/__init__.py 0 0 100% -morituri/result/logger.py 137 137 0% 1-224 -morituri/result/result.py 57 10 82% 127, 145, 155-156, 165-172 ----------------------------------------------------------------- -TOTAL 4049 2065 49% +Name Stmts Miss Branch BrPart Cover Missing +----------------------------------------------------------------------------- +whipper/__init__.py 10 2 4 2 71% 9, 11, 8->9, 10->11 +whipper/__main__.py 7 7 2 0 0% 4-14 +whipper/command/__init__.py 0 0 0 0 100% +whipper/command/accurip.py 44 44 18 0 0% 21-96 +whipper/command/basecommand.py 58 42 22 0 20% 54-99, 106-115, 118, 121, 124, 127-130 +whipper/command/cd.py 221 181 56 0 14% 75-87, 92-193, 196, 208, 231-285, 292-317, 320-497 +whipper/command/debug.py 167 167 24 0 0% 21-293 +whipper/command/drive.py 62 62 12 0 0% 21-122 +whipper/command/image.py 77 77 14 0 0% 21-151 +whipper/command/main.py 66 66 20 0 0% 4-113 +whipper/command/offset.py 113 113 32 0 0% 21-229 +whipper/common/__init__.py 0 0 0 0 100% +whipper/common/accurip.py 133 5 56 5 95% 128, 139, 148-150, 121->128, 132->139, 165->168, 276->282, 285->291 +whipper/common/cache.py 105 50 34 6 44% 70-94, 100, 103, 111-116, 119-120, 134, 148-153, 181-188, 210-215, 220-237, 99->100, 102->103, 133->134, 146->157, 147->148, 180->181 +whipper/common/checksum.py 26 14 2 0 43% 41-42, 45-46, 49-64 +whipper/common/common.py 133 15 32 6 86% 49-50, 112-113, 136-137, 162, 259-265, 302-306, 111->112, 124->127, 161->162, 171->178, 255->259, 300->308 +whipper/common/config.py 92 8 18 4 89% 114-115, 138-139, 145, 156, 158, 160, 144->145, 155->156, 157->158, 159->160 +whipper/common/directory.py 21 8 10 2 55% 29, 39, 44-51, 28->29, 38->39 +whipper/common/drive.py 31 20 6 0 35% 35-40, 44-50, 54-60, 64-71 +whipper/common/encode.py 44 23 2 0 46% 37-38, 41-42, 45-46, 53-56, 59-60, 63-64, 76-77, 80-81, 84-91 +whipper/common/mbngs.py 157 52 58 7 66% 35-36, 42, 110-116, 182-183, 188-189, 233, 236, 239, 262-265, 274, 297-349, 181->182, 187->188, 232->233, 235->236, 238->239, 261->262, 271->274 +whipper/common/path.py 24 0 8 3 91% 44->47, 54->59, 64->69 +whipper/common/program.py 353 272 112 5 20% 94-96, 112-127, 145-177, 190-195, 198, 202-206, 262, 273-274, 276-280, 298-312, 330-456, 466-516, 523-531, 534-550, 574-614, 617-619, 636-653, 656-674, 677-687, 690-698, 86->89, 259->262, 272->273, 275->276, 282->286 +whipper/common/renamer.py 102 2 16 1 97% 128, 152, 60->68 +whipper/common/task.py 77 19 14 2 75% 45-50, 85-86, 89-92, 100, 114-115, 124, 132, 136, 140, 144, 83->85, 97->100 +whipper/extern/__init__.py 0 0 0 0 100% +whipper/extern/asyncsub.py 130 71 66 12 40% 15-17, 32, 37-38, 47-84, 89-102, 115, 122, 134, 145, 151, 156-160, 164-176, 14->15, 35->37, 45->47, 110->113, 114->115, 121->122, 133->134, 139->141, 141->152, 144->145, 148->151, 163->164 +whipper/extern/task/__init__.py 0 0 0 0 100% +whipper/extern/task/task.py 279 120 54 11 53% 55, 59, 84, 87, 90, 161-163, 184-186, 197-213, 233-236, 258-259, 276, 286, 304, 310-311, 314-320, 334-335, 343-345, 356-363, 367-383, 387, 390, 400-417, 429-430, 433-436, 440, 443, 458, 461-463, 480, 497, 540-545, 554-559, 570-578, 581-589, 592-593, 601, 606-608, 54->55, 58->59, 67->69, 160->161, 177->exit, 232->233, 248->250, 253->exit, 530->532, 567->570, 605->606 +whipper/image/__init__.py 0 0 0 0 100% +whipper/image/cue.py 91 9 20 3 89% 105, 122-123, 138-140, 167, 195, 214, 104->105, 121->122, 137->138 +whipper/image/image.py 116 94 18 0 16% 51-59, 67-69, 79-112, 136-168, 171-187, 204-235 +whipper/image/table.py 399 22 114 16 93% 258, 371-372, 527, 606, 700-701, 721-722, 731-734, 738-739, 788, 835-836, 838-839, 882-883, 888-890, 201->204, 526->527, 560->564, 583->586, 605->606, 613->620, 720->721, 729->735, 730->731, 761->766, 766->760, 787->788, 834->835, 837->838, 881->882, 887->888 +whipper/image/toc.py 203 15 60 10 90% 146, 284-285, 301-304, 362-364, 386-388, 410, 437, 142->146, 235->243, 283->284, 300->301, 310->315, 346->353, 361->362, 385->386, 395->399, 432->437 +whipper/program/__init__.py 0 0 0 0 100% +whipper/program/arc.py 38 15 12 4 58% 26-28, 32, 37-43, 52-58, 22->26, 31->32, 36->37, 45->52 +whipper/program/cdparanoia.py 315 185 86 3 39% 45-47, 54-55, 131-133, 170-173, 209-210, 256-270, 273-325, 328-366, 369-373, 376-412, 472-524, 529-574, 607-610, 613, 620, 626, 631-636, 130->131, 619->620, 623->626 +whipper/program/cdrdao.py 51 29 10 2 39% 31-53, 64-70, 82-84, 88-90, 102, 113, 81->82, 87->88 +whipper/program/flac.py 9 5 0 0 44% 18-25 +whipper/program/sox.py 17 4 4 2 71% 19-20, 24-25, 18->19, 23->24 +whipper/program/soxi.py 28 2 2 1 90% 46, 59, 58->59 +whipper/program/utils.py 16 10 2 0 33% 13-14, 23-24, 37-42 +whipper/result/__init__.py 0 0 0 0 100% +whipper/result/logger.py 142 142 48 0 0% 1-256 +whipper/result/result.py 56 13 6 0 69% 116-120, 135, 145-146, 151-158 +----------------------------------------------------------------------------- +TOTAL 4013 1985 1074 107 48% diff --git a/README.md b/README.md index 505c4b3d..84747978 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![license](https://img.shields.io/github/license/JoeLametta/whipper.svg)](https://github.com/JoeLametta/whipper/blob/master/LICENSE) [![Build Status](https://travis-ci.org/JoeLametta/whipper.svg?branch=master)](https://travis-ci.org/JoeLametta/whipper) [![GitHub (pre-)release](https://img.shields.io/github/release/joelametta/whipper/all.svg)](https://github.com/JoeLametta/whipper/releases/latest) [![IRC](https://img.shields.io/badge/irc-%23whipper%40freenode-brightgreen.svg)](https://webchat.freenode.net/?channels=%23whipper) [![GitHub Stars](https://img.shields.io/github/stars/JoeLametta/whipper.svg)](https://github.com/JoeLametta/whipper/stargazers) [![GitHub Issues](https://img.shields.io/github/issues/JoeLametta/whipper.svg)](https://github.com/JoeLametta/whipper/issues) [![GitHub contributors](https://img.shields.io/github/contributors/JoeLametta/whipper.svg)](https://github.com/JoeLametta/whipper/graphs/contributors) -Whipper is a Python 2.7 CD-DA ripper, fork of the morituri project (_CDDA ripper for *nix systems aiming for accuracy over speed_). It improves morituri which development seems to have halted merging old ignored pull requests, improving it with bugfixes and new features. +Whipper is a Python 2.7 CD-DA ripper, fork of the morituri project (_CDDA ripper for *nix systems aiming for accuracy over speed_). It improves [morituri](https://github.com/thomasvs/morituri) which development seems to have halted merging old ignored pull requests, improving it with bugfixes and new features. Whipper is developed and tested _only_ on Linux distributions but _may_ work fine on other *nix OSes too. @@ -39,6 +39,7 @@ https://web.archive.org/web/20160528213242/https://thomas.apestaart.org/thomas/t ## Features - Detects correct read offset (in samples) +- Detects whether ripped media is a CD-R - Has ability to defeat cache of drives - Performs Test & Copy rips - Verifies rip accuracy using the [AccurateRip database](http://www.accuraterip.com/) @@ -73,9 +74,8 @@ Whipper relies on the following packages in order to run correctly and provide a - [python-mutagen](https://pypi.python.org/pypi/mutagen), for tagging support - [python-setuptools](https://pypi.python.org/pypi/setuptools), for installation, plugins support - [python-cddb](http://cddb-py.sourceforge.net/), for showing but not using metadata if disc not available in the MusicBrainz DB -- [pycdio](https://pypi.python.org/pypi/pycdio/) (to avoid bugs please use `pycdio` **0.20** & `libcdio` >= **0.90** or, with previous `libcdio` versions, `pycdio` **0.17**), for drive identification - - Required for drive offset and caching behavior to be stored in the configuration file -- [requests](https://pypi.python.org/pypi/requests) for retrieving AccurateRip database entries +- [python-requests](https://pypi.python.org/pypi/requests), for retrieving AccurateRip database entries +- [pycdio](https://pypi.python.org/pypi/pycdio/) (to avoid bugs please use `pycdio` **0.20** & `libcdio` >= **0.90** or, with previous `libcdio` versions, `pycdio` **0.17**), for drive identification (required for drive offset and caching behavior to be stored in the configuration file) - [libsndfile](http://www.mega-nerd.com/libsndfile/), for reading wav files - [flac](https://xiph.org/flac/), for reading flac files - [sox](http://sox.sourceforge.net/), for track peak detection @@ -85,7 +85,7 @@ Whipper relies on the following packages in order to run correctly and provide a Change to a directory where you want to put whipper source code (for example, `$HOME/dev/ext` or `$HOME/prefix/src`) ```bash -git clone -b master --single-branch https://github.com/JoeLametta/whipper.git +git clone https://github.com/JoeLametta/whipper.git cd whipper ``` @@ -175,7 +175,7 @@ The possible sections are: - `read_offset`: the read offset of the drive - Rip command section: `[rip.COMMAND.SUBCOMMAND]`. Can be used to change the command options default values. - **Please note that this feature is currently broken (being this way since [PR #122](https://github.com/JoeLametta/whipper/pull/92) / whipper v0.4.1).** + **Please note that this feature is currently broken (being this way since [PR #122](https://github.com/JoeLametta/whipper/pull/92) / whipper [v0.4.1](https://github.com/JoeLametta/whipper/releases/tag/v0.4.1)).** Example section to configure `whipper cd rip` defaults: @@ -192,7 +192,11 @@ Note: to get a literal `%` character it must be doubled. ## Backward incompatible changes -- Profiles (for encoding) aren't supported anymore since ([PR #121](https://github.com/JoeLametta/whipper/pull/121) / whipper v0.5.0): now whipper encodes to FLAC +- Rely on `cd-paranoia` (`libcdio-cdparanoia`) instead of `cdparanoia` (Xiph): changed dependency ([PR #213](https://github.com/JoeLametta/whipper/pull/213) / whipper [v0.6.0](https://github.com/JoeLametta/whipper/releases/tag/v0.6.0)) +- Introduced AccurateRip v2 support: added new `requests` python dependency ([PR #187](https://github.com/JoeLametta/whipper/pull/187) / whipper [v0.6.0](https://github.com/JoeLametta/whipper/releases/tag/v0.6.0)) +- Added CD-R media type disc detection: CD-R rips are now prevented by default ([PR #154](https://github.com/JoeLametta/whipper/pull/154) / whipper [v0.6.0](https://github.com/JoeLametta/whipper/releases/tag/v0.6.0)) +- Changed all `morituri` references to `whipper`: renamed python module and logger too ([PR #109](https://github.com/JoeLametta/whipper/pull/109) / whipper [v0.6.0](https://github.com/JoeLametta/whipper/releases/tag/v0.6.0)) +- Profiles (for encoding) aren't supported anymore since ([PR #121](https://github.com/JoeLametta/whipper/pull/121) / whipper [v0.5.0](https://github.com/JoeLametta/whipper/releases/tag/v0.5.0)): now whipper encodes to FLAC - The image retag feature has been knowingly broken since ([PR #130](https://github.com/JoeLametta/whipper/pull/130)) - Structural changes broke compatibility with existing logger plugins ([PR #94](https://github.com/JoeLametta/whipper/pull/94)) - Dropped external git submodules ([PR #31](https://github.com/JoeLametta/whipper/pull/31), [PR #92](https://github.com/JoeLametta/whipper/pull/92)) @@ -257,7 +261,7 @@ Licensed under the [GNU GPLv3 license](http://www.gnu.org/licenses/gpl-3.0). ```Text Copyright (C) 2009 Thomas Vander Stichele -Copyright (C) 2016, 2017 JoeLametta +Copyright (C) 2016, 2017, 2018 JoeLametta This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/doc/.gitignore b/doc/.gitignore deleted file mode 100644 index 02b12366..00000000 --- a/doc/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -whipper.ics -whipper.rss2 -reference -rip.1 diff --git a/doc/Makefile.am b/doc/Makefile.am deleted file mode 100644 index 9a31b5d2..00000000 --- a/doc/Makefile.am +++ /dev/null @@ -1,30 +0,0 @@ -EXTRA_DIST = whipper.rss2 whipper.ics $(man_MANS) -DISTCLEANFILES = $(man_MANS) - -all-local: feeds reference - -if HAVE_EPYDOC -reference: $(top_srcdir)/whipper/*.py feeds - epydoc -o reference $(top_srcdir)/whipper -else -reference: - @true -endif - -# generate feeds -feeds: whipper.rss2 whipper.ics - -# don't fail fatally if user does not have RDF -whipper.rss2: $(top_srcdir)/whipper.doap - -moap doap -f $(top_srcdir)/whipper.doap rss > whipper.rss2 - -whipper.ics: $(top_srcdir)/whipper.doap - -moap doap -f $(top_srcdir)/whipper.doap ical > whipper.ics - -man_MANS = rip.1 - -rip.1: $(top_srcdir)/whipper/extern/python-command/scripts/help2man $(top_srcdir)/whipper - PYTHONPATH=$(top_srcdir) $(PYTHON) $(top_srcdir)/whipper/extern/python-command/scripts/help2man whipper.rip.main.Rip rip > rip.1 - -clean-local: - @rm -rf reference diff --git a/etc/bash_completion.d/.gitignore b/etc/bash_completion.d/.gitignore deleted file mode 100644 index 89812838..00000000 --- a/etc/bash_completion.d/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -rip -bash-compgen diff --git a/misc/radon_reports/radon_cc.json b/misc/radon_reports/radon_cc.json new file mode 100644 index 00000000..cdc27cf3 --- /dev/null +++ b/misc/radon_reports/radon_cc.json @@ -0,0 +1 @@ +{"whipper/image/table.py": [{"closures": [{"closures": [], "name": "writeFile", "col_offset": 8, "rank": "A", "complexity": 1, "lineno": 516, "endline": 520, "type": "function"}], "name": "cue", "col_offset": 4, "rank": "D", "classname": "Table", "complexity": 24, "lineno": 500, "endline": 632, "type": "method"}, {"closures": [], "name": "absolutize", "col_offset": 4, "rank": "B", "classname": "Table", "complexity": 9, "lineno": 703, "endline": 739, "type": "method"}, {"closures": [], "name": "getMusicBrainzDiscId", "col_offset": 4, "rank": "B", "classname": "Table", "complexity": 7, "lineno": 354, "endline": 411, "type": "method"}, {"closures": [], "name": "_getMusicBrainzValues", "col_offset": 4, "rank": "B", "classname": "Table", "complexity": 6, "lineno": 453, "endline": 498, "type": "method"}, {"closures": [], "name": "merge", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 5, "lineno": 741, "endline": 774, "type": "method"}, {"closures": [], "name": "hasTOC", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 5, "lineno": 823, "endline": 841, "type": "method"}, {"closures": [], "name": "canCue", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 5, "lineno": 879, "endline": 892, "type": "method"}, {"closures": [], "name": "setFile", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 4, "lineno": 659, "endline": 701, "type": "method"}, {"closures": [], "name": "accuraterip_ids", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 4, "lineno": 843, "endline": 870, "type": "method"}, {"closures": [], "name": "index", "col_offset": 4, "rank": "A", "classname": "Track", "complexity": 3, "lineno": 89, "endline": 108, "type": "method"}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "Index", "complexity": 3, "lineno": 160, "endline": 170, "type": "method"}, {"name": "Table", "col_offset": 0, "rank": "A", "complexity": 3, "lineno": 177, "endline": 892, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 2, "lineno": 200, "endline": 209, "type": "method"}, {"closures": [], "name": "unpickled", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 1, "lineno": 211, "endline": 213, "type": "method"}, {"closures": [], "name": "getTrackStart", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 1, "lineno": 215, "endline": 224, "type": "method"}, {"closures": [], "name": "getTrackEnd", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 3, "lineno": 226, "endline": 248, "type": "method"}, {"closures": [], "name": "getTrackLength", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 1, "lineno": 250, "endline": 258, "type": "method"}, {"closures": [], "name": "getAudioTracks", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 3, "lineno": 260, "endline": 266, "type": "method"}, {"closures": [], "name": "hasDataTracks", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 3, "lineno": 268, "endline": 274, "type": "method"}, {"closures": [], "name": "_cddbSum", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 2, "lineno": 276, "endline": 282, "type": "method"}, {"closures": [], "name": "getCDDBValues", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 2, "lineno": 284, "endline": 343, "type": "method"}, {"closures": [], "name": "getCDDBDiscId", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 1, "lineno": 345, "endline": 352, "type": "method"}, {"closures": [], "name": "getMusicBrainzDiscId", "col_offset": 4, "rank": "B", "classname": "Table", "complexity": 7, "lineno": 354, "endline": 411, "type": "method"}, {"closures": [], "name": "getMusicBrainzSubmitURL", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 2, "lineno": 413, "endline": 426, "type": "method"}, {"closures": [], "name": "getFrameLength", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 2, "lineno": 428, "endline": 447, "type": "method"}, {"closures": [], "name": "duration", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 1, "lineno": 449, "endline": 451, "type": "method"}, {"closures": [], "name": "_getMusicBrainzValues", "col_offset": 4, "rank": "B", "classname": "Table", "complexity": 6, "lineno": 453, "endline": 498, "type": "method"}, {"closures": [{"closures": [], "name": "writeFile", "col_offset": 8, "rank": "A", "complexity": 1, "lineno": 516, "endline": 520, "type": "function"}], "name": "cue", "col_offset": 4, "rank": "D", "classname": "Table", "complexity": 24, "lineno": 500, "endline": 632, "type": "method"}, {"closures": [], "name": "clearFiles", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 3, "lineno": 636, "endline": 657, "type": "method"}, {"closures": [], "name": "setFile", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 4, "lineno": 659, "endline": 701, "type": "method"}, {"closures": [], "name": "absolutize", "col_offset": 4, "rank": "B", "classname": "Table", "complexity": 9, "lineno": 703, "endline": 739, "type": "method"}, {"closures": [], "name": "merge", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 5, "lineno": 741, "endline": 774, "type": "method"}, {"closures": [], "name": "_getSessionGap", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 2, "lineno": 776, "endline": 789, "type": "method"}, {"closures": [], "name": "getNextTrackIndex", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 3, "lineno": 793, "endline": 819, "type": "method"}, {"closures": [], "name": "hasTOC", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 5, "lineno": 823, "endline": 841, "type": "method"}, {"closures": [], "name": "accuraterip_ids", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 4, "lineno": 843, "endline": 870, "type": "method"}, {"closures": [], "name": "accuraterip_path", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 1, "lineno": 872, "endline": 876, "type": "method"}, {"closures": [], "name": "canCue", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 5, "lineno": 879, "endline": 892, "type": "method"}]}, {"closures": [], "name": "getTrackEnd", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 3, "lineno": 226, "endline": 248, "type": "method"}, {"closures": [], "name": "getAudioTracks", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 3, "lineno": 260, "endline": 266, "type": "method"}, {"closures": [], "name": "hasDataTracks", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 3, "lineno": 268, "endline": 274, "type": "method"}, {"closures": [], "name": "clearFiles", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 3, "lineno": 636, "endline": 657, "type": "method"}, {"closures": [], "name": "getNextTrackIndex", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 3, "lineno": 793, "endline": 819, "type": "method"}, {"closures": [], "name": "getPregap", "col_offset": 4, "rank": "A", "classname": "Track", "complexity": 2, "lineno": 126, "endline": 135, "type": "method"}, {"name": "Index", "col_offset": 0, "rank": "A", "complexity": 2, "lineno": 138, "endline": 174, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "Index", "complexity": 3, "lineno": 160, "endline": 170, "type": "method"}, {"closures": [], "name": "__repr__", "col_offset": 4, "rank": "A", "classname": "Index", "complexity": 1, "lineno": 172, "endline": 174, "type": "method"}]}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 2, "lineno": 200, "endline": 209, "type": "method"}, {"closures": [], "name": "_cddbSum", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 2, "lineno": 276, "endline": 282, "type": "method"}, {"closures": [], "name": "getCDDBValues", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 2, "lineno": 284, "endline": 343, "type": "method"}, {"closures": [], "name": "getMusicBrainzSubmitURL", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 2, "lineno": 413, "endline": 426, "type": "method"}, {"closures": [], "name": "getFrameLength", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 2, "lineno": 428, "endline": 447, "type": "method"}, {"closures": [], "name": "_getSessionGap", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 2, "lineno": 776, "endline": 789, "type": "method"}, {"name": "Track", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 53, "endline": 135, "type": "class", "methods": [{"closures": [], "name": "__repr__", "col_offset": 4, "rank": "A", "classname": "Track", "complexity": 1, "lineno": 80, "endline": 81, "type": "method"}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "Track", "complexity": 1, "lineno": 83, "endline": 87, "type": "method"}, {"closures": [], "name": "index", "col_offset": 4, "rank": "A", "classname": "Track", "complexity": 3, "lineno": 89, "endline": 108, "type": "method"}, {"closures": [], "name": "getIndex", "col_offset": 4, "rank": "A", "classname": "Track", "complexity": 1, "lineno": 110, "endline": 111, "type": "method"}, {"closures": [], "name": "getFirstIndex", "col_offset": 4, "rank": "A", "classname": "Track", "complexity": 1, "lineno": 113, "endline": 120, "type": "method"}, {"closures": [], "name": "getLastIndex", "col_offset": 4, "rank": "A", "classname": "Track", "complexity": 1, "lineno": 122, "endline": 124, "type": "method"}, {"closures": [], "name": "getPregap", "col_offset": 4, "rank": "A", "classname": "Track", "complexity": 2, "lineno": 126, "endline": 135, "type": "method"}]}, {"closures": [], "name": "__repr__", "col_offset": 4, "rank": "A", "classname": "Track", "complexity": 1, "lineno": 80, "endline": 81, "type": "method"}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "Track", "complexity": 1, "lineno": 83, "endline": 87, "type": "method"}, {"closures": [], "name": "getIndex", "col_offset": 4, "rank": "A", "classname": "Track", "complexity": 1, "lineno": 110, "endline": 111, "type": "method"}, {"closures": [], "name": "getFirstIndex", "col_offset": 4, "rank": "A", "classname": "Track", "complexity": 1, "lineno": 113, "endline": 120, "type": "method"}, {"closures": [], "name": "getLastIndex", "col_offset": 4, "rank": "A", "classname": "Track", "complexity": 1, "lineno": 122, "endline": 124, "type": "method"}, {"closures": [], "name": "__repr__", "col_offset": 4, "rank": "A", "classname": "Index", "complexity": 1, "lineno": 172, "endline": 174, "type": "method"}, {"closures": [], "name": "unpickled", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 1, "lineno": 211, "endline": 213, "type": "method"}, {"closures": [], "name": "getTrackStart", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 1, "lineno": 215, "endline": 224, "type": "method"}, {"closures": [], "name": "getTrackLength", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 1, "lineno": 250, "endline": 258, "type": "method"}, {"closures": [], "name": "getCDDBDiscId", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 1, "lineno": 345, "endline": 352, "type": "method"}, {"closures": [], "name": "duration", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 1, "lineno": 449, "endline": 451, "type": "method"}, {"closures": [], "name": "accuraterip_path", "col_offset": 4, "rank": "A", "classname": "Table", "complexity": 1, "lineno": 872, "endline": 876, "type": "method"}], "whipper/common/task.py": [{"closures": [], "name": "_read", "col_offset": 4, "rank": "B", "classname": "PopenTask", "complexity": 8, "lineno": 57, "endline": 92, "type": "method"}, {"closures": [], "name": "_done", "col_offset": 4, "rank": "A", "classname": "PopenTask", "complexity": 4, "lineno": 94, "endline": 111, "type": "method"}, {"closures": [], "name": "start", "col_offset": 4, "rank": "A", "classname": "PopenTask", "complexity": 3, "lineno": 35, "endline": 55, "type": "method"}, {"name": "PopenTask", "col_offset": 0, "rank": "A", "complexity": 2, "lineno": 27, "endline": 144, "type": "class", "methods": [{"closures": [], "name": "start", "col_offset": 4, "rank": "A", "classname": "PopenTask", "complexity": 3, "lineno": 35, "endline": 55, "type": "method"}, {"closures": [], "name": "_read", "col_offset": 4, "rank": "B", "classname": "PopenTask", "complexity": 8, "lineno": 57, "endline": 92, "type": "method"}, {"closures": [], "name": "_done", "col_offset": 4, "rank": "A", "classname": "PopenTask", "complexity": 4, "lineno": 94, "endline": 111, "type": "method"}, {"closures": [], "name": "abort", "col_offset": 4, "rank": "A", "classname": "PopenTask", "complexity": 1, "lineno": 113, "endline": 115, "type": "method"}, {"closures": [], "name": "readbytesout", "col_offset": 4, "rank": "A", "classname": "PopenTask", "complexity": 1, "lineno": 118, "endline": 124, "type": "method"}, {"closures": [], "name": "readbyteserr", "col_offset": 4, "rank": "A", "classname": "PopenTask", "complexity": 1, "lineno": 126, "endline": 132, "type": "method"}, {"closures": [], "name": "done", "col_offset": 4, "rank": "A", "classname": "PopenTask", "complexity": 1, "lineno": 134, "endline": 136, "type": "method"}, {"closures": [], "name": "failed", "col_offset": 4, "rank": "A", "classname": "PopenTask", "complexity": 1, "lineno": 138, "endline": 140, "type": "method"}, {"closures": [], "name": "commandMissing", "col_offset": 4, "rank": "A", "classname": "PopenTask", "complexity": 1, "lineno": 142, "endline": 144, "type": "method"}]}, {"name": "SyncRunner", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 15, "endline": 16, "type": "class", "methods": []}, {"name": "LoggableTask", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 19, "endline": 20, "type": "class", "methods": []}, {"name": "LoggableMultiSeparateTask", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 23, "endline": 24, "type": "class", "methods": []}, {"closures": [], "name": "abort", "col_offset": 4, "rank": "A", "classname": "PopenTask", "complexity": 1, "lineno": 113, "endline": 115, "type": "method"}, {"closures": [], "name": "readbytesout", "col_offset": 4, "rank": "A", "classname": "PopenTask", "complexity": 1, "lineno": 118, "endline": 124, "type": "method"}, {"closures": [], "name": "readbyteserr", "col_offset": 4, "rank": "A", "classname": "PopenTask", "complexity": 1, "lineno": 126, "endline": 132, "type": "method"}, {"closures": [], "name": "done", "col_offset": 4, "rank": "A", "classname": "PopenTask", "complexity": 1, "lineno": 134, "endline": 136, "type": "method"}, {"closures": [], "name": "failed", "col_offset": 4, "rank": "A", "classname": "PopenTask", "complexity": 1, "lineno": 138, "endline": 140, "type": "method"}, {"closures": [], "name": "commandMissing", "col_offset": 4, "rank": "A", "classname": "PopenTask", "complexity": 1, "lineno": 142, "endline": 144, "type": "method"}], "whipper/common/common.py": [{"closures": [], "name": "getRealPath", "col_offset": 0, "rank": "B", "complexity": 9, "lineno": 185, "endline": 237, "type": "function"}, {"closures": [], "name": "shrinkPath", "col_offset": 0, "rank": "A", "complexity": 4, "lineno": 150, "endline": 182, "type": "function"}, {"closures": [], "name": "get", "col_offset": 4, "rank": "A", "classname": "VersionGetter", "complexity": 4, "lineno": 290, "endline": 308, "type": "method"}, {"closures": [], "name": "formatTime", "col_offset": 0, "rank": "A", "complexity": 3, "lineno": 94, "endline": 129, "type": "function"}, {"name": "VersionGetter", "col_offset": 0, "rank": "A", "complexity": 3, "lineno": 268, "endline": 308, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "VersionGetter", "complexity": 1, "lineno": 284, "endline": 288, "type": "method"}, {"closures": [], "name": "get", "col_offset": 4, "rank": "A", "classname": "VersionGetter", "complexity": 4, "lineno": 290, "endline": 308, "type": "method"}]}, {"closures": [], "name": "msfToFrames", "col_offset": 0, "rank": "A", "complexity": 2, "lineno": 53, "endline": 68, "type": "function"}, {"closures": [], "name": "getRelativePath", "col_offset": 0, "rank": "A", "complexity": 2, "lineno": 240, "endline": 265, "type": "function"}, {"closures": [], "name": "framesToMSF", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 71, "endline": 78, "type": "function"}, {"closures": [], "name": "framesToHMSF", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 81, "endline": 91, "type": "function"}, {"name": "EjectError", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 39, "endline": 50, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "EjectError", "complexity": 1, "lineno": 48, "endline": 50, "type": "method"}]}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "EjectError", "complexity": 1, "lineno": 48, "endline": 50, "type": "method"}, {"name": "MissingDependencyException", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 132, "endline": 137, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "MissingDependencyException", "complexity": 1, "lineno": 135, "endline": 137, "type": "method"}]}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "MissingDependencyException", "complexity": 1, "lineno": 135, "endline": 137, "type": "method"}, {"name": "EmptyError", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 140, "endline": 141, "type": "class", "methods": []}, {"name": "MissingFrames", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 144, "endline": 147, "type": "class", "methods": []}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "VersionGetter", "complexity": 1, "lineno": 284, "endline": 288, "type": "method"}], "whipper/common/checksum.py": [{"closures": [], "name": "_crc32", "col_offset": 4, "rank": "A", "classname": "CRC32Task", "complexity": 2, "lineno": 48, "endline": 64, "type": "method"}, {"name": "CRC32Task", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 36, "endline": 64, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "CRC32Task", "complexity": 1, "lineno": 40, "endline": 42, "type": "method"}, {"closures": [], "name": "start", "col_offset": 4, "rank": "A", "classname": "CRC32Task", "complexity": 1, "lineno": 44, "endline": 46, "type": "method"}, {"closures": [], "name": "_crc32", "col_offset": 4, "rank": "A", "classname": "CRC32Task", "complexity": 2, "lineno": 48, "endline": 64, "type": "method"}]}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "CRC32Task", "complexity": 1, "lineno": 40, "endline": 42, "type": "method"}, {"closures": [], "name": "start", "col_offset": 4, "rank": "A", "classname": "CRC32Task", "complexity": 1, "lineno": 44, "endline": 46, "type": "method"}], "whipper/common/directory.py": [{"closures": [], "name": "cache_path", "col_offset": 0, "rank": "A", "complexity": 4, "lineno": 33, "endline": 40, "type": "function"}, {"closures": [], "name": "data_path", "col_offset": 0, "rank": "A", "complexity": 4, "lineno": 43, "endline": 51, "type": "function"}, {"closures": [], "name": "config_path", "col_offset": 0, "rank": "A", "complexity": 3, "lineno": 25, "endline": 30, "type": "function"}], "whipper/common/renamer.py": [{"closures": [], "name": "load", "col_offset": 4, "rank": "B", "classname": "Operator", "complexity": 7, "lineno": 44, "endline": 68, "type": "method"}, {"closures": [], "name": "save", "col_offset": 4, "rank": "B", "classname": "Operator", "complexity": 6, "lineno": 70, "endline": 87, "type": "method"}, {"name": "Operator", "col_offset": 0, "rank": "A", "complexity": 3, "lineno": 27, "endline": 101, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "Operator", "complexity": 1, "lineno": 29, "endline": 34, "type": "method"}, {"closures": [], "name": "addOperation", "col_offset": 4, "rank": "A", "classname": "Operator", "complexity": 1, "lineno": 36, "endline": 42, "type": "method"}, {"closures": [], "name": "load", "col_offset": 4, "rank": "B", "classname": "Operator", "complexity": 7, "lineno": 44, "endline": 68, "type": "method"}, {"closures": [], "name": "save", "col_offset": 4, "rank": "B", "classname": "Operator", "complexity": 6, "lineno": 70, "endline": 87, "type": "method"}, {"closures": [], "name": "start", "col_offset": 4, "rank": "A", "classname": "Operator", "complexity": 1, "lineno": 89, "endline": 90, "type": "method"}, {"closures": [], "name": "next", "col_offset": 4, "rank": "A", "classname": "Operator", "complexity": 2, "lineno": 92, "endline": 101, "type": "method"}]}, {"closures": [], "name": "verify", "col_offset": 4, "rank": "A", "classname": "RenameFile", "complexity": 3, "lineno": 162, "endline": 162, "type": "method"}, {"closures": [], "name": "do", "col_offset": 4, "rank": "A", "classname": "RenameInFile", "complexity": 3, "lineno": 193, "endline": 201, "type": "method"}, {"closures": [], "name": "__eq__", "col_offset": 4, "rank": "A", "classname": "RenameInFile", "complexity": 3, "lineno": 211, "endline": 214, "type": "method"}, {"closures": [], "name": "next", "col_offset": 4, "rank": "A", "classname": "Operator", "complexity": 2, "lineno": 92, "endline": 101, "type": "method"}, {"closures": [], "name": "__eq__", "col_offset": 4, "rank": "A", "classname": "RenameFile", "complexity": 2, "lineno": 177, "endline": 179, "type": "method"}, {"name": "RenameInFile", "col_offset": 0, "rank": "A", "complexity": 2, "lineno": 182, "endline": 214, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "RenameInFile", "complexity": 1, "lineno": 184, "endline": 187, "type": "method"}, {"closures": [], "name": "verify", "col_offset": 4, "rank": "A", "classname": "RenameInFile", "complexity": 2, "lineno": 189, "endline": 189, "type": "method"}, {"closures": [], "name": "do", "col_offset": 4, "rank": "A", "classname": "RenameInFile", "complexity": 3, "lineno": 193, "endline": 201, "type": "method"}, {"closures": [], "name": "serialize", "col_offset": 4, "rank": "A", "classname": "RenameInFile", "complexity": 1, "lineno": 203, "endline": 204, "type": "method"}, {"closures": [], "name": "deserialize", "col_offset": 4, "rank": "A", "classname": "RenameInFile", "complexity": 1, "lineno": 206, "endline": 208, "type": "method"}, {"closures": [], "name": "__eq__", "col_offset": 4, "rank": "A", "classname": "RenameInFile", "complexity": 3, "lineno": 211, "endline": 214, "type": "method"}]}, {"closures": [], "name": "verify", "col_offset": 4, "rank": "A", "classname": "RenameInFile", "complexity": 2, "lineno": 189, "endline": 189, "type": "method"}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "Operator", "complexity": 1, "lineno": 29, "endline": 34, "type": "method"}, {"closures": [], "name": "addOperation", "col_offset": 4, "rank": "A", "classname": "Operator", "complexity": 1, "lineno": 36, "endline": 42, "type": "method"}, {"closures": [], "name": "start", "col_offset": 4, "rank": "A", "classname": "Operator", "complexity": 1, "lineno": 89, "endline": 90, "type": "method"}, {"name": "FileRenamer", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 104, "endline": 113, "type": "class", "methods": [{"closures": [], "name": "addRename", "col_offset": 4, "rank": "A", "classname": "FileRenamer", "complexity": 1, "lineno": 106, "endline": 113, "type": "method"}]}, {"closures": [], "name": "addRename", "col_offset": 4, "rank": "A", "classname": "FileRenamer", "complexity": 1, "lineno": 106, "endline": 113, "type": "method"}, {"name": "Operation", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 116, "endline": 153, "type": "class", "methods": [{"closures": [], "name": "verify", "col_offset": 4, "rank": "A", "classname": "Operation", "complexity": 1, "lineno": 118, "endline": 124, "type": "method"}, {"closures": [], "name": "do", "col_offset": 4, "rank": "A", "classname": "Operation", "complexity": 1, "lineno": 126, "endline": 128, "type": "method"}, {"closures": [], "name": "redo", "col_offset": 4, "rank": "A", "classname": "Operation", "complexity": 1, "lineno": 130, "endline": 135, "type": "method"}, {"closures": [], "name": "serialize", "col_offset": 4, "rank": "A", "classname": "Operation", "complexity": 1, "lineno": 137, "endline": 144, "type": "method"}, {"closures": [], "name": "deserialize", "col_offset": 4, "rank": "A", "classname": "Operation", "complexity": 1, "lineno": 146, "endline": 152, "type": "method"}]}, {"closures": [], "name": "verify", "col_offset": 4, "rank": "A", "classname": "Operation", "complexity": 1, "lineno": 118, "endline": 124, "type": "method"}, {"closures": [], "name": "do", "col_offset": 4, "rank": "A", "classname": "Operation", "complexity": 1, "lineno": 126, "endline": 128, "type": "method"}, {"closures": [], "name": "redo", "col_offset": 4, "rank": "A", "classname": "Operation", "complexity": 1, "lineno": 130, "endline": 135, "type": "method"}, {"closures": [], "name": "serialize", "col_offset": 4, "rank": "A", "classname": "Operation", "complexity": 1, "lineno": 137, "endline": 144, "type": "method"}, {"closures": [], "name": "deserialize", "col_offset": 4, "rank": "A", "classname": "Operation", "complexity": 1, "lineno": 146, "endline": 152, "type": "method"}, {"name": "RenameFile", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 156, "endline": 179, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "RenameFile", "complexity": 1, "lineno": 158, "endline": 160, "type": "method"}, {"closures": [], "name": "verify", "col_offset": 4, "rank": "A", "classname": "RenameFile", "complexity": 3, "lineno": 162, "endline": 162, "type": "method"}, {"closures": [], "name": "do", "col_offset": 4, "rank": "A", "classname": "RenameFile", "complexity": 1, "lineno": 166, "endline": 167, "type": "method"}, {"closures": [], "name": "serialize", "col_offset": 4, "rank": "A", "classname": "RenameFile", "complexity": 1, "lineno": 169, "endline": 170, "type": "method"}, {"closures": [], "name": "deserialize", "col_offset": 4, "rank": "A", "classname": "RenameFile", "complexity": 1, "lineno": 172, "endline": 174, "type": "method"}, {"closures": [], "name": "__eq__", "col_offset": 4, "rank": "A", "classname": "RenameFile", "complexity": 2, "lineno": 177, "endline": 179, "type": "method"}]}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "RenameFile", "complexity": 1, "lineno": 158, "endline": 160, "type": "method"}, {"closures": [], "name": "do", "col_offset": 4, "rank": "A", "classname": "RenameFile", "complexity": 1, "lineno": 166, "endline": 167, "type": "method"}, {"closures": [], "name": "serialize", "col_offset": 4, "rank": "A", "classname": "RenameFile", "complexity": 1, "lineno": 169, "endline": 170, "type": "method"}, {"closures": [], "name": "deserialize", "col_offset": 4, "rank": "A", "classname": "RenameFile", "complexity": 1, "lineno": 172, "endline": 174, "type": "method"}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "RenameInFile", "complexity": 1, "lineno": 184, "endline": 187, "type": "method"}, {"closures": [], "name": "serialize", "col_offset": 4, "rank": "A", "classname": "RenameInFile", "complexity": 1, "lineno": 203, "endline": 204, "type": "method"}, {"closures": [], "name": "deserialize", "col_offset": 4, "rank": "A", "classname": "RenameInFile", "complexity": 1, "lineno": 206, "endline": 208, "type": "method"}], "whipper/common/drive.py": [{"closures": [], "name": "getAllDevicePaths", "col_offset": 0, "rank": "A", "complexity": 3, "lineno": 34, "endline": 40, "type": "function"}, {"closures": [], "name": "_getAllDevicePathsStatic", "col_offset": 0, "rank": "A", "complexity": 3, "lineno": 53, "endline": 60, "type": "function"}, {"closures": [], "name": "_listify", "col_offset": 0, "rank": "A", "complexity": 2, "lineno": 27, "endline": 31, "type": "function"}, {"closures": [], "name": "getDeviceInfo", "col_offset": 0, "rank": "A", "complexity": 2, "lineno": 63, "endline": 71, "type": "function"}, {"closures": [], "name": "_getAllDevicePathsPyCdio", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 43, "endline": 50, "type": "function"}], "whipper/program/flac.py": [{"closures": [], "name": "encode", "col_offset": 0, "rank": "A", "complexity": 2, "lineno": 7, "endline": 25, "type": "function"}], "whipper/common/cache.py": [{"closures": [], "name": "persist", "col_offset": 4, "rank": "B", "classname": "Persister", "complexity": 6, "lineno": 58, "endline": 94, "type": "method"}, {"closures": [], "name": "get", "col_offset": 4, "rank": "A", "classname": "TableCache", "complexity": 5, "lineno": 217, "endline": 237, "type": "method"}, {"closures": [], "name": "_unpickle", "col_offset": 4, "rank": "A", "classname": "Persister", "complexity": 4, "lineno": 96, "endline": 116, "type": "method"}, {"closures": [], "name": "get", "col_offset": 4, "rank": "A", "classname": "PersistedCache", "complexity": 4, "lineno": 139, "endline": 157, "type": "method"}, {"name": "TableCache", "col_offset": 0, "rank": "A", "complexity": 4, "lineno": 201, "endline": 237, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "TableCache", "complexity": 2, "lineno": 209, "endline": 215, "type": "method"}, {"closures": [], "name": "get", "col_offset": 4, "rank": "A", "classname": "TableCache", "complexity": 5, "lineno": 217, "endline": 237, "type": "method"}]}, {"name": "Persister", "col_offset": 0, "rank": "A", "complexity": 3, "lineno": 34, "endline": 120, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "Persister", "complexity": 1, "lineno": 52, "endline": 56, "type": "method"}, {"closures": [], "name": "persist", "col_offset": 4, "rank": "B", "classname": "Persister", "complexity": 6, "lineno": 58, "endline": 94, "type": "method"}, {"closures": [], "name": "_unpickle", "col_offset": 4, "rank": "A", "classname": "Persister", "complexity": 4, "lineno": 96, "endline": 116, "type": "method"}, {"closures": [], "name": "delete", "col_offset": 4, "rank": "A", "classname": "Persister", "complexity": 1, "lineno": 118, "endline": 120, "type": "method"}]}, {"name": "PersistedCache", "col_offset": 0, "rank": "A", "complexity": 3, "lineno": 123, "endline": 157, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "PersistedCache", "complexity": 3, "lineno": 128, "endline": 134, "type": "method"}, {"closures": [], "name": "_getPath", "col_offset": 4, "rank": "A", "classname": "PersistedCache", "complexity": 1, "lineno": 136, "endline": 137, "type": "method"}, {"closures": [], "name": "get", "col_offset": 4, "rank": "A", "classname": "PersistedCache", "complexity": 4, "lineno": 139, "endline": 157, "type": "method"}]}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "PersistedCache", "complexity": 3, "lineno": 128, "endline": 134, "type": "method"}, {"closures": [], "name": "getRipResult", "col_offset": 4, "rank": "A", "classname": "ResultCache", "complexity": 3, "lineno": 166, "endline": 193, "type": "method"}, {"name": "ResultCache", "col_offset": 0, "rank": "A", "complexity": 2, "lineno": 160, "endline": 198, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "ResultCache", "complexity": 2, "lineno": 162, "endline": 164, "type": "method"}, {"closures": [], "name": "getRipResult", "col_offset": 4, "rank": "A", "classname": "ResultCache", "complexity": 3, "lineno": 166, "endline": 193, "type": "method"}, {"closures": [], "name": "getIds", "col_offset": 4, "rank": "A", "classname": "ResultCache", "complexity": 2, "lineno": 195, "endline": 198, "type": "method"}]}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "ResultCache", "complexity": 2, "lineno": 162, "endline": 164, "type": "method"}, {"closures": [], "name": "getIds", "col_offset": 4, "rank": "A", "classname": "ResultCache", "complexity": 2, "lineno": 195, "endline": 198, "type": "method"}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "TableCache", "complexity": 2, "lineno": 209, "endline": 215, "type": "method"}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "Persister", "complexity": 1, "lineno": 52, "endline": 56, "type": "method"}, {"closures": [], "name": "delete", "col_offset": 4, "rank": "A", "classname": "Persister", "complexity": 1, "lineno": 118, "endline": 120, "type": "method"}, {"closures": [], "name": "_getPath", "col_offset": 4, "rank": "A", "classname": "PersistedCache", "complexity": 1, "lineno": 136, "endline": 137, "type": "method"}], "whipper/program/arc.py": [{"closures": [], "name": "accuraterip_checksum", "col_offset": 0, "rank": "B", "complexity": 8, "lineno": 15, "endline": 58, "type": "function"}, {"closures": [], "name": "_execute", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 10, "endline": 12, "type": "function"}], "whipper/common/mbngs.py": [{"closures": [], "name": "_getMetadata", "col_offset": 0, "rank": "C", "complexity": 20, "lineno": 164, "endline": 276, "type": "function"}, {"closures": [], "name": "musicbrainz", "col_offset": 0, "rank": "B", "complexity": 8, "lineno": 283, "endline": 349, "type": "function"}, {"closures": [], "name": "joiner", "col_offset": 4, "rank": "A", "classname": "_Credit", "complexity": 4, "lineno": 138, "endline": 150, "type": "method"}, {"closures": [], "name": "_record", "col_offset": 0, "rank": "A", "complexity": 2, "lineno": 108, "endline": 116, "type": "function"}, {"name": "_Credit", "col_offset": 0, "rank": "A", "complexity": 2, "lineno": 135, "endline": 161, "type": "class", "methods": [{"closures": [], "name": "joiner", "col_offset": 4, "rank": "A", "classname": "_Credit", "complexity": 4, "lineno": 138, "endline": 150, "type": "method"}, {"closures": [], "name": "getSortName", "col_offset": 4, "rank": "A", "classname": "_Credit", "complexity": 1, "lineno": 152, "endline": 153, "type": "method"}, {"closures": [], "name": "getName", "col_offset": 4, "rank": "A", "classname": "_Credit", "complexity": 1, "lineno": 155, "endline": 157, "type": "method"}, {"closures": [], "name": "getIds", "col_offset": 4, "rank": "A", "classname": "_Credit", "complexity": 1, "lineno": 159, "endline": 161, "type": "method"}]}, {"name": "MusicBrainzException", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 32, "endline": 36, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "MusicBrainzException", "complexity": 1, "lineno": 34, "endline": 36, "type": "method"}]}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "MusicBrainzException", "complexity": 1, "lineno": 34, "endline": 36, "type": "method"}, {"name": "NotFoundException", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 39, "endline": 42, "type": "class", "methods": [{"closures": [], "name": "__str__", "col_offset": 4, "rank": "A", "classname": "NotFoundException", "complexity": 1, "lineno": 41, "endline": 42, "type": "method"}]}, {"closures": [], "name": "__str__", "col_offset": 4, "rank": "A", "classname": "NotFoundException", "complexity": 1, "lineno": 41, "endline": 42, "type": "method"}, {"name": "TrackMetadata", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 45, "endline": 51, "type": "class", "methods": []}, {"name": "DiscMetadata", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 54, "endline": 105, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "DiscMetadata", "complexity": 1, "lineno": 104, "endline": 105, "type": "method"}]}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "DiscMetadata", "complexity": 1, "lineno": 104, "endline": 105, "type": "method"}, {"closures": [], "name": "getSortName", "col_offset": 4, "rank": "A", "classname": "_Credit", "complexity": 1, "lineno": 152, "endline": 153, "type": "method"}, {"closures": [], "name": "getName", "col_offset": 4, "rank": "A", "classname": "_Credit", "complexity": 1, "lineno": 155, "endline": 157, "type": "method"}, {"closures": [], "name": "getIds", "col_offset": 4, "rank": "A", "classname": "_Credit", "complexity": 1, "lineno": 159, "endline": 161, "type": "method"}], "whipper/command/image.py": [{"closures": [], "name": "do", "col_offset": 4, "rank": "A", "classname": "Retag", "complexity": 5, "lineno": 60, "endline": 104, "type": "method"}, {"closures": [], "name": "do", "col_offset": 4, "rank": "A", "classname": "Verify", "complexity": 5, "lineno": 117, "endline": 141, "type": "method"}, {"name": "Retag", "col_offset": 0, "rank": "A", "complexity": 3, "lineno": 35, "endline": 104, "type": "class", "methods": [{"closures": [], "name": "add_arguments", "col_offset": 4, "rank": "A", "classname": "Retag", "complexity": 1, "lineno": 41, "endline": 57, "type": "method"}, {"closures": [], "name": "do", "col_offset": 4, "rank": "A", "classname": "Retag", "complexity": 5, "lineno": 60, "endline": 104, "type": "method"}]}, {"name": "Verify", "col_offset": 0, "rank": "A", "complexity": 3, "lineno": 107, "endline": 141, "type": "class", "methods": [{"closures": [], "name": "add_arguments", "col_offset": 4, "rank": "A", "classname": "Verify", "complexity": 1, "lineno": 113, "endline": 115, "type": "method"}, {"closures": [], "name": "do", "col_offset": 4, "rank": "A", "classname": "Verify", "complexity": 5, "lineno": 117, "endline": 141, "type": "method"}]}, {"closures": [], "name": "add_arguments", "col_offset": 4, "rank": "A", "classname": "Retag", "complexity": 1, "lineno": 41, "endline": 57, "type": "method"}, {"closures": [], "name": "add_arguments", "col_offset": 4, "rank": "A", "classname": "Verify", "complexity": 1, "lineno": 113, "endline": 115, "type": "method"}, {"name": "Image", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 144, "endline": 153, "type": "class", "methods": []}], "whipper/command/basecommand.py": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "B", "classname": "BaseCommand", "complexity": 9, "lineno": 53, "endline": 102, "type": "method"}, {"name": "BaseCommand", "col_offset": 0, "rank": "A", "complexity": 3, "lineno": 28, "endline": 130, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "B", "classname": "BaseCommand", "complexity": 9, "lineno": 53, "endline": 102, "type": "method"}, {"closures": [], "name": "init_parser", "col_offset": 4, "rank": "A", "classname": "BaseCommand", "complexity": 3, "lineno": 105, "endline": 115, "type": "method"}, {"closures": [], "name": "add_arguments", "col_offset": 4, "rank": "A", "classname": "BaseCommand", "complexity": 1, "lineno": 117, "endline": 118, "type": "method"}, {"closures": [], "name": "handle_arguments", "col_offset": 4, "rank": "A", "classname": "BaseCommand", "complexity": 1, "lineno": 120, "endline": 121, "type": "method"}, {"closures": [], "name": "do", "col_offset": 4, "rank": "A", "classname": "BaseCommand", "complexity": 1, "lineno": 123, "endline": 124, "type": "method"}, {"closures": [], "name": "epilog", "col_offset": 4, "rank": "A", "classname": "BaseCommand", "complexity": 2, "lineno": 126, "endline": 130, "type": "method"}]}, {"closures": [], "name": "init_parser", "col_offset": 4, "rank": "A", "classname": "BaseCommand", "complexity": 3, "lineno": 105, "endline": 115, "type": "method"}, {"closures": [], "name": "epilog", "col_offset": 4, "rank": "A", "classname": "BaseCommand", "complexity": 2, "lineno": 126, "endline": 130, "type": "method"}, {"closures": [], "name": "add_arguments", "col_offset": 4, "rank": "A", "classname": "BaseCommand", "complexity": 1, "lineno": 117, "endline": 118, "type": "method"}, {"closures": [], "name": "handle_arguments", "col_offset": 4, "rank": "A", "classname": "BaseCommand", "complexity": 1, "lineno": 120, "endline": 121, "type": "method"}, {"closures": [], "name": "do", "col_offset": 4, "rank": "A", "classname": "BaseCommand", "complexity": 1, "lineno": 123, "endline": 124, "type": "method"}], "whipper/command/accurip.py": [{"closures": [], "name": "do", "col_offset": 4, "rank": "C", "classname": "Show", "complexity": 12, "lineno": 40, "endline": 87, "type": "method"}, {"name": "Show", "col_offset": 0, "rank": "B", "complexity": 7, "lineno": 30, "endline": 87, "type": "class", "methods": [{"closures": [], "name": "add_arguments", "col_offset": 4, "rank": "A", "classname": "Show", "complexity": 1, "lineno": 36, "endline": 38, "type": "method"}, {"closures": [], "name": "do", "col_offset": 4, "rank": "C", "classname": "Show", "complexity": 12, "lineno": 40, "endline": 87, "type": "method"}]}, {"closures": [], "name": "add_arguments", "col_offset": 4, "rank": "A", "classname": "Show", "complexity": 1, "lineno": 36, "endline": 38, "type": "method"}, {"name": "AccuRip", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 90, "endline": 97, "type": "class", "methods": []}], "whipper/common/path.py": [{"closures": [{"closures": [], "name": "separators", "col_offset": 8, "rank": "A", "complexity": 1, "lineno": 47, "endline": 51, "type": "function"}], "name": "filter", "col_offset": 4, "rank": "A", "classname": "PathFilter", "complexity": 5, "lineno": 43, "endline": 69, "type": "method"}, {"name": "PathFilter", "col_offset": 0, "rank": "A", "complexity": 3, "lineno": 24, "endline": 69, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "PathFilter", "complexity": 1, "lineno": 37, "endline": 41, "type": "method"}, {"closures": [{"closures": [], "name": "separators", "col_offset": 8, "rank": "A", "complexity": 1, "lineno": 47, "endline": 51, "type": "function"}], "name": "filter", "col_offset": 4, "rank": "A", "classname": "PathFilter", "complexity": 5, "lineno": 43, "endline": 69, "type": "method"}]}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "PathFilter", "complexity": 1, "lineno": 37, "endline": 41, "type": "method"}], "whipper/common/config.py": [{"closures": [], "name": "_findDriveSection", "col_offset": 4, "rank": "B", "classname": "Config", "complexity": 7, "lineno": 142, "endline": 165, "type": "method"}, {"closures": [], "name": "get_musicbrainz_server", "col_offset": 4, "rank": "A", "classname": "Config", "complexity": 4, "lineno": 78, "endline": 83, "type": "method"}, {"closures": [], "name": "open", "col_offset": 4, "rank": "A", "classname": "Config", "complexity": 3, "lineno": 44, "endline": 51, "type": "method"}, {"closures": [], "name": "_findOrCreateDriveSection", "col_offset": 4, "rank": "A", "classname": "Config", "complexity": 3, "lineno": 167, "endline": 180, "type": "method"}, {"name": "Config", "col_offset": 0, "rank": "A", "complexity": 2, "lineno": 35, "endline": 180, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "Config", "complexity": 2, "lineno": 37, "endline": 42, "type": "method"}, {"closures": [], "name": "open", "col_offset": 4, "rank": "A", "classname": "Config", "complexity": 3, "lineno": 44, "endline": 51, "type": "method"}, {"closures": [], "name": "write", "col_offset": 4, "rank": "A", "classname": "Config", "complexity": 1, "lineno": 53, "endline": 58, "type": "method"}, {"closures": [], "name": "_getter", "col_offset": 4, "rank": "A", "classname": "Config", "complexity": 2, "lineno": 62, "endline": 68, "type": "method"}, {"closures": [], "name": "get", "col_offset": 4, "rank": "A", "classname": "Config", "complexity": 1, "lineno": 70, "endline": 71, "type": "method"}, {"closures": [], "name": "getboolean", "col_offset": 4, "rank": "A", "classname": "Config", "complexity": 1, "lineno": 73, "endline": 74, "type": "method"}, {"closures": [], "name": "get_musicbrainz_server", "col_offset": 4, "rank": "A", "classname": "Config", "complexity": 4, "lineno": 78, "endline": 83, "type": "method"}, {"closures": [], "name": "setReadOffset", "col_offset": 4, "rank": "A", "classname": "Config", "complexity": 1, "lineno": 87, "endline": 100, "type": "method"}, {"closures": [], "name": "getReadOffset", "col_offset": 4, "rank": "A", "classname": "Config", "complexity": 2, "lineno": 102, "endline": 116, "type": "method"}, {"closures": [], "name": "setDefeatsCache", "col_offset": 4, "rank": "A", "classname": "Config", "complexity": 1, "lineno": 118, "endline": 131, "type": "method"}, {"closures": [], "name": "getDefeatsCache", "col_offset": 4, "rank": "A", "classname": "Config", "complexity": 2, "lineno": 133, "endline": 140, "type": "method"}, {"closures": [], "name": "_findDriveSection", "col_offset": 4, "rank": "B", "classname": "Config", "complexity": 7, "lineno": 142, "endline": 165, "type": "method"}, {"closures": [], "name": "_findOrCreateDriveSection", "col_offset": 4, "rank": "A", "classname": "Config", "complexity": 3, "lineno": 167, "endline": 180, "type": "method"}]}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "Config", "complexity": 2, "lineno": 37, "endline": 42, "type": "method"}, {"closures": [], "name": "_getter", "col_offset": 4, "rank": "A", "classname": "Config", "complexity": 2, "lineno": 62, "endline": 68, "type": "method"}, {"closures": [], "name": "getReadOffset", "col_offset": 4, "rank": "A", "classname": "Config", "complexity": 2, "lineno": 102, "endline": 116, "type": "method"}, {"closures": [], "name": "getDefeatsCache", "col_offset": 4, "rank": "A", "classname": "Config", "complexity": 2, "lineno": 133, "endline": 140, "type": "method"}, {"closures": [], "name": "write", "col_offset": 4, "rank": "A", "classname": "Config", "complexity": 1, "lineno": 53, "endline": 58, "type": "method"}, {"closures": [], "name": "get", "col_offset": 4, "rank": "A", "classname": "Config", "complexity": 1, "lineno": 70, "endline": 71, "type": "method"}, {"closures": [], "name": "getboolean", "col_offset": 4, "rank": "A", "classname": "Config", "complexity": 1, "lineno": 73, "endline": 74, "type": "method"}, {"closures": [], "name": "setReadOffset", "col_offset": 4, "rank": "A", "classname": "Config", "complexity": 1, "lineno": 87, "endline": 100, "type": "method"}, {"closures": [], "name": "setDefeatsCache", "col_offset": 4, "rank": "A", "classname": "Config", "complexity": 1, "lineno": 118, "endline": 131, "type": "method"}], "whipper/common/encode.py": [{"closures": [], "name": "_tag", "col_offset": 4, "rank": "A", "classname": "TaggingTask", "complexity": 2, "lineno": 83, "endline": 91, "type": "method"}, {"name": "SoxPeakTask", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 33, "endline": 46, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "SoxPeakTask", "complexity": 1, "lineno": 36, "endline": 38, "type": "method"}, {"closures": [], "name": "start", "col_offset": 4, "rank": "A", "classname": "SoxPeakTask", "complexity": 1, "lineno": 40, "endline": 42, "type": "method"}, {"closures": [], "name": "_sox_peak", "col_offset": 4, "rank": "A", "classname": "SoxPeakTask", "complexity": 1, "lineno": 44, "endline": 46, "type": "method"}]}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "SoxPeakTask", "complexity": 1, "lineno": 36, "endline": 38, "type": "method"}, {"closures": [], "name": "start", "col_offset": 4, "rank": "A", "classname": "SoxPeakTask", "complexity": 1, "lineno": 40, "endline": 42, "type": "method"}, {"closures": [], "name": "_sox_peak", "col_offset": 4, "rank": "A", "classname": "SoxPeakTask", "complexity": 1, "lineno": 44, "endline": 46, "type": "method"}, {"name": "FlacEncodeTask", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 49, "endline": 64, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "FlacEncodeTask", "complexity": 1, "lineno": 52, "endline": 56, "type": "method"}, {"closures": [], "name": "start", "col_offset": 4, "rank": "A", "classname": "FlacEncodeTask", "complexity": 1, "lineno": 58, "endline": 60, "type": "method"}, {"closures": [], "name": "_flac_encode", "col_offset": 4, "rank": "A", "classname": "FlacEncodeTask", "complexity": 1, "lineno": 62, "endline": 64, "type": "method"}]}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "FlacEncodeTask", "complexity": 1, "lineno": 52, "endline": 56, "type": "method"}, {"closures": [], "name": "start", "col_offset": 4, "rank": "A", "classname": "FlacEncodeTask", "complexity": 1, "lineno": 58, "endline": 60, "type": "method"}, {"closures": [], "name": "_flac_encode", "col_offset": 4, "rank": "A", "classname": "FlacEncodeTask", "complexity": 1, "lineno": 62, "endline": 64, "type": "method"}, {"name": "TaggingTask", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 67, "endline": 91, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "TaggingTask", "complexity": 1, "lineno": 75, "endline": 77, "type": "method"}, {"closures": [], "name": "start", "col_offset": 4, "rank": "A", "classname": "TaggingTask", "complexity": 1, "lineno": 79, "endline": 81, "type": "method"}, {"closures": [], "name": "_tag", "col_offset": 4, "rank": "A", "classname": "TaggingTask", "complexity": 2, "lineno": 83, "endline": 91, "type": "method"}]}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "TaggingTask", "complexity": 1, "lineno": 75, "endline": 77, "type": "method"}, {"closures": [], "name": "start", "col_offset": 4, "rank": "A", "classname": "TaggingTask", "complexity": 1, "lineno": 79, "endline": 81, "type": "method"}], "whipper/extern/asyncsub.py": [{"closures": [], "name": "recv_some", "col_offset": 0, "rank": "B", "complexity": 8, "lineno": 132, "endline": 152, "type": "function"}, {"closures": [], "name": "_recv", "col_offset": 8, "rank": "B", "classname": "Popen", "complexity": 8, "lineno": 63, "endline": 84, "type": "method"}, {"closures": [], "name": "_recv", "col_offset": 8, "rank": "B", "classname": "Popen", "complexity": 7, "lineno": 104, "endline": 126, "type": "method"}, {"closures": [], "name": "send", "col_offset": 8, "rank": "A", "classname": "Popen", "complexity": 5, "lineno": 47, "endline": 61, "type": "method"}, {"closures": [], "name": "send", "col_offset": 8, "rank": "A", "classname": "Popen", "complexity": 5, "lineno": 88, "endline": 102, "type": "method"}, {"closures": [], "name": "send_all", "col_offset": 0, "rank": "A", "complexity": 3, "lineno": 155, "endline": 160, "type": "function"}, {"name": "Popen", "col_offset": 0, "rank": "A", "complexity": 3, "lineno": 23, "endline": 126, "type": "class", "methods": [{"closures": [], "name": "recv", "col_offset": 4, "rank": "A", "classname": "Popen", "complexity": 1, "lineno": 25, "endline": 26, "type": "method"}, {"closures": [], "name": "recv_err", "col_offset": 4, "rank": "A", "classname": "Popen", "complexity": 1, "lineno": 28, "endline": 29, "type": "method"}, {"closures": [], "name": "send_recv", "col_offset": 4, "rank": "A", "classname": "Popen", "complexity": 1, "lineno": 31, "endline": 32, "type": "method"}, {"closures": [], "name": "get_conn_maxsize", "col_offset": 4, "rank": "A", "classname": "Popen", "complexity": 3, "lineno": 34, "endline": 39, "type": "method"}, {"closures": [], "name": "_close", "col_offset": 4, "rank": "A", "classname": "Popen", "complexity": 1, "lineno": 41, "endline": 43, "type": "method"}, {"closures": [], "name": "send", "col_offset": 8, "rank": "A", "classname": "Popen", "complexity": 5, "lineno": 47, "endline": 61, "type": "method"}, {"closures": [], "name": "_recv", "col_offset": 8, "rank": "B", "classname": "Popen", "complexity": 8, "lineno": 63, "endline": 84, "type": "method"}, {"closures": [], "name": "send", "col_offset": 8, "rank": "A", "classname": "Popen", "complexity": 5, "lineno": 88, "endline": 102, "type": "method"}, {"closures": [], "name": "_recv", "col_offset": 8, "rank": "B", "classname": "Popen", "complexity": 7, "lineno": 104, "endline": 126, "type": "method"}]}, {"closures": [], "name": "get_conn_maxsize", "col_offset": 4, "rank": "A", "classname": "Popen", "complexity": 3, "lineno": 34, "endline": 39, "type": "method"}, {"closures": [], "name": "recv", "col_offset": 4, "rank": "A", "classname": "Popen", "complexity": 1, "lineno": 25, "endline": 26, "type": "method"}, {"closures": [], "name": "recv_err", "col_offset": 4, "rank": "A", "classname": "Popen", "complexity": 1, "lineno": 28, "endline": 29, "type": "method"}, {"closures": [], "name": "send_recv", "col_offset": 4, "rank": "A", "classname": "Popen", "complexity": 1, "lineno": 31, "endline": 32, "type": "method"}, {"closures": [], "name": "_close", "col_offset": 4, "rank": "A", "classname": "Popen", "complexity": 1, "lineno": 41, "endline": 43, "type": "method"}], "whipper/image/toc.py": [{"closures": [], "name": "parse", "col_offset": 4, "rank": "E", "classname": "TocFile", "complexity": 31, "lineno": 191, "endline": 400, "type": "method"}, {"name": "TocFile", "col_offset": 0, "rank": "B", "complexity": 6, "lineno": 149, "endline": 445, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "TocFile", "complexity": 2, "lineno": 164, "endline": 171, "type": "method"}, {"closures": [], "name": "_index", "col_offset": 4, "rank": "A", "classname": "TocFile", "complexity": 1, "lineno": 173, "endline": 189, "type": "method"}, {"closures": [], "name": "parse", "col_offset": 4, "rank": "E", "classname": "TocFile", "complexity": 31, "lineno": 191, "endline": 400, "type": "method"}, {"closures": [], "name": "message", "col_offset": 4, "rank": "A", "classname": "TocFile", "complexity": 1, "lineno": 402, "endline": 410, "type": "method"}, {"closures": [], "name": "getTrackLength", "col_offset": 4, "rank": "A", "classname": "TocFile", "complexity": 4, "lineno": 412, "endline": 437, "type": "method"}, {"closures": [], "name": "getRealPath", "col_offset": 4, "rank": "A", "classname": "TocFile", "complexity": 1, "lineno": 439, "endline": 445, "type": "method"}]}, {"closures": [], "name": "getTrackLength", "col_offset": 4, "rank": "A", "classname": "TocFile", "complexity": 4, "lineno": 412, "endline": 437, "type": "method"}, {"closures": [], "name": "get", "col_offset": 4, "rank": "A", "classname": "Sources", "complexity": 3, "lineno": 124, "endline": 134, "type": "method"}, {"closures": [], "name": "getCounterStart", "col_offset": 4, "rank": "A", "classname": "Sources", "complexity": 3, "lineno": 136, "endline": 146, "type": "method"}, {"name": "Sources", "col_offset": 0, "rank": "A", "complexity": 2, "lineno": 94, "endline": 146, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "Sources", "complexity": 1, "lineno": 104, "endline": 105, "type": "method"}, {"closures": [], "name": "append", "col_offset": 4, "rank": "A", "classname": "Sources", "complexity": 1, "lineno": 107, "endline": 122, "type": "method"}, {"closures": [], "name": "get", "col_offset": 4, "rank": "A", "classname": "Sources", "complexity": 3, "lineno": 124, "endline": 134, "type": "method"}, {"closures": [], "name": "getCounterStart", "col_offset": 4, "rank": "A", "classname": "Sources", "complexity": 3, "lineno": 136, "endline": 146, "type": "method"}]}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "TocFile", "complexity": 2, "lineno": 164, "endline": 171, "type": "method"}, {"name": "File", "col_offset": 0, "rank": "A", "complexity": 2, "lineno": 448, "endline": 467, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "File", "complexity": 2, "lineno": 459, "endline": 464, "type": "method"}, {"closures": [], "name": "__repr__", "col_offset": 4, "rank": "A", "classname": "File", "complexity": 1, "lineno": 466, "endline": 467, "type": "method"}]}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "File", "complexity": 2, "lineno": 459, "endline": 464, "type": "method"}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "Sources", "complexity": 1, "lineno": 104, "endline": 105, "type": "method"}, {"closures": [], "name": "append", "col_offset": 4, "rank": "A", "classname": "Sources", "complexity": 1, "lineno": 107, "endline": 122, "type": "method"}, {"closures": [], "name": "_index", "col_offset": 4, "rank": "A", "classname": "TocFile", "complexity": 1, "lineno": 173, "endline": 189, "type": "method"}, {"closures": [], "name": "message", "col_offset": 4, "rank": "A", "classname": "TocFile", "complexity": 1, "lineno": 402, "endline": 410, "type": "method"}, {"closures": [], "name": "getRealPath", "col_offset": 4, "rank": "A", "classname": "TocFile", "complexity": 1, "lineno": 439, "endline": 445, "type": "method"}, {"closures": [], "name": "__repr__", "col_offset": 4, "rank": "A", "classname": "File", "complexity": 1, "lineno": 466, "endline": 467, "type": "method"}], "whipper/program/sox.py": [{"closures": [], "name": "peak_level", "col_offset": 0, "rank": "A", "complexity": 3, "lineno": 10, "endline": 31, "type": "function"}], "whipper/command/main.py": [{"closures": [], "name": "main", "col_offset": 0, "rank": "C", "complexity": 13, "lineno": 21, "endline": 71, "type": "function"}, {"closures": [], "name": "handle_arguments", "col_offset": 4, "rank": "A", "classname": "Whipper", "complexity": 3, "lineno": 107, "endline": 113, "type": "method"}, {"name": "Whipper", "col_offset": 0, "rank": "A", "complexity": 2, "lineno": 74, "endline": 113, "type": "class", "methods": [{"closures": [], "name": "add_arguments", "col_offset": 4, "rank": "A", "classname": "Whipper", "complexity": 1, "lineno": 90, "endline": 105, "type": "method"}, {"closures": [], "name": "handle_arguments", "col_offset": 4, "rank": "A", "classname": "Whipper", "complexity": 3, "lineno": 107, "endline": 113, "type": "method"}]}, {"closures": [], "name": "add_arguments", "col_offset": 4, "rank": "A", "classname": "Whipper", "complexity": 1, "lineno": 90, "endline": 105, "type": "method"}], "whipper/command/cd.py": [{"closures": [], "name": "do", "col_offset": 4, "rank": "C", "classname": "_CD", "complexity": 17, "lineno": 91, "endline": 193, "type": "method"}, {"closures": [{"closures": [], "name": "_ripIfNotRipped", "col_offset": 8, "rank": "C", "complexity": 15, "lineno": 347, "endline": 463, "type": "function"}], "name": "doCommand", "col_offset": 4, "rank": "B", "classname": "Rip", "complexity": 7, "lineno": 319, "endline": 497, "type": "method"}, {"name": "_CD", "col_offset": 0, "rank": "B", "complexity": 6, "lineno": 69, "endline": 196, "type": "class", "methods": [{"closures": [], "name": "add_arguments", "col_offset": 4, "rank": "A", "classname": "_CD", "complexity": 1, "lineno": 72, "endline": 89, "type": "method"}, {"closures": [], "name": "do", "col_offset": 4, "rank": "C", "classname": "_CD", "complexity": 17, "lineno": 91, "endline": 193, "type": "method"}, {"closures": [], "name": "doCommand", "col_offset": 4, "rank": "A", "classname": "_CD", "complexity": 1, "lineno": 195, "endline": 196, "type": "method"}]}, {"name": "Rip", "col_offset": 0, "rank": "A", "complexity": 5, "lineno": 211, "endline": 497, "type": "class", "methods": [{"closures": [], "name": "add_arguments", "col_offset": 4, "rank": "A", "classname": "Rip", "complexity": 3, "lineno": 230, "endline": 289, "type": "method"}, {"closures": [], "name": "handle_arguments", "col_offset": 4, "rank": "A", "classname": "Rip", "complexity": 5, "lineno": 291, "endline": 317, "type": "method"}, {"closures": [{"closures": [], "name": "_ripIfNotRipped", "col_offset": 8, "rank": "C", "complexity": 15, "lineno": 347, "endline": 463, "type": "function"}], "name": "doCommand", "col_offset": 4, "rank": "B", "classname": "Rip", "complexity": 7, "lineno": 319, "endline": 497, "type": "method"}]}, {"closures": [], "name": "handle_arguments", "col_offset": 4, "rank": "A", "classname": "Rip", "complexity": 5, "lineno": 291, "endline": 317, "type": "method"}, {"closures": [], "name": "add_arguments", "col_offset": 4, "rank": "A", "classname": "Rip", "complexity": 3, "lineno": 230, "endline": 289, "type": "method"}, {"closures": [], "name": "add_arguments", "col_offset": 4, "rank": "A", "classname": "_CD", "complexity": 1, "lineno": 72, "endline": 89, "type": "method"}, {"closures": [], "name": "doCommand", "col_offset": 4, "rank": "A", "classname": "_CD", "complexity": 1, "lineno": 195, "endline": 196, "type": "method"}, {"name": "Info", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 199, "endline": 208, "type": "class", "methods": [{"closures": [], "name": "add_arguments", "col_offset": 4, "rank": "A", "classname": "Info", "complexity": 1, "lineno": 207, "endline": 208, "type": "method"}]}, {"closures": [], "name": "add_arguments", "col_offset": 4, "rank": "A", "classname": "Info", "complexity": 1, "lineno": 207, "endline": 208, "type": "method"}, {"name": "CD", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 500, "endline": 507, "type": "class", "methods": []}], "whipper/common/program.py": [{"closures": [], "name": "getMusicBrainz", "col_offset": 4, "rank": "D", "classname": "Program", "complexity": 27, "lineno": 314, "endline": 456, "type": "method"}, {"closures": [], "name": "getPath", "col_offset": 4, "rank": "B", "classname": "Program", "complexity": 10, "lineno": 208, "endline": 287, "type": "method"}, {"closures": [], "name": "getTagList", "col_offset": 4, "rank": "B", "classname": "Program", "complexity": 9, "lineno": 458, "endline": 516, "type": "method"}, {"closures": [], "name": "verifyImage", "col_offset": 4, "rank": "B", "classname": "Program", "complexity": 6, "lineno": 621, "endline": 653, "type": "method"}, {"name": "Program", "col_offset": 0, "rank": "A", "complexity": 5, "lineno": 41, "endline": 698, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "Program", "complexity": 3, "lineno": 72, "endline": 91, "type": "method"}, {"closures": [], "name": "setWorkingDirectory", "col_offset": 4, "rank": "A", "classname": "Program", "complexity": 2, "lineno": 93, "endline": 96, "type": "method"}, {"closures": [{"closures": [], "name": "function", "col_offset": 8, "rank": "A", "complexity": 1, "lineno": 112, "endline": 113, "type": "function"}], "name": "getFastToc", "col_offset": 4, "rank": "A", "classname": "Program", "complexity": 5, "lineno": 98, "endline": 127, "type": "method"}, {"closures": [], "name": "getTable", "col_offset": 4, "rank": "A", "classname": "Program", "complexity": 5, "lineno": 129, "endline": 177, "type": "method"}, {"closures": [], "name": "getRipResult", "col_offset": 4, "rank": "A", "classname": "Program", "complexity": 2, "lineno": 179, "endline": 195, "type": "method"}, {"closures": [], "name": "saveRipResult", "col_offset": 4, "rank": "A", "classname": "Program", "complexity": 1, "lineno": 197, "endline": 198, "type": "method"}, {"closures": [], "name": "addDisambiguation", "col_offset": 4, "rank": "A", "classname": "Program", "complexity": 3, "lineno": 200, "endline": 206, "type": "method"}, {"closures": [], "name": "getPath", "col_offset": 4, "rank": "B", "classname": "Program", "complexity": 10, "lineno": 208, "endline": 287, "type": "method"}, {"closures": [], "name": "getCDDB", "col_offset": 4, "rank": "A", "classname": "Program", "complexity": 4, "lineno": 289, "endline": 312, "type": "method"}, {"closures": [], "name": "getMusicBrainz", "col_offset": 4, "rank": "D", "classname": "Program", "complexity": 27, "lineno": 314, "endline": 456, "type": "method"}, {"closures": [], "name": "getTagList", "col_offset": 4, "rank": "B", "classname": "Program", "complexity": 9, "lineno": 458, "endline": 516, "type": "method"}, {"closures": [], "name": "getHTOA", "col_offset": 4, "rank": "A", "classname": "Program", "complexity": 2, "lineno": 518, "endline": 531, "type": "method"}, {"closures": [], "name": "verifyTrack", "col_offset": 4, "rank": "A", "classname": "Program", "complexity": 3, "lineno": 533, "endline": 550, "type": "method"}, {"closures": [], "name": "ripTrack", "col_offset": 4, "rank": "A", "classname": "Program", "complexity": 5, "lineno": 552, "endline": 614, "type": "method"}, {"closures": [], "name": "retagImage", "col_offset": 4, "rank": "A", "classname": "Program", "complexity": 1, "lineno": 616, "endline": 619, "type": "method"}, {"closures": [], "name": "verifyImage", "col_offset": 4, "rank": "B", "classname": "Program", "complexity": 6, "lineno": 621, "endline": 653, "type": "method"}, {"closures": [], "name": "write_m3u", "col_offset": 4, "rank": "A", "classname": "Program", "complexity": 5, "lineno": 655, "endline": 674, "type": "method"}, {"closures": [], "name": "writeCue", "col_offset": 4, "rank": "A", "classname": "Program", "complexity": 2, "lineno": 676, "endline": 687, "type": "method"}, {"closures": [], "name": "writeLog", "col_offset": 4, "rank": "A", "classname": "Program", "complexity": 1, "lineno": 689, "endline": 698, "type": "method"}]}, {"closures": [{"closures": [], "name": "function", "col_offset": 8, "rank": "A", "complexity": 1, "lineno": 112, "endline": 113, "type": "function"}], "name": "getFastToc", "col_offset": 4, "rank": "A", "classname": "Program", "complexity": 5, "lineno": 98, "endline": 127, "type": "method"}, {"closures": [], "name": "getTable", "col_offset": 4, "rank": "A", "classname": "Program", "complexity": 5, "lineno": 129, "endline": 177, "type": "method"}, {"closures": [], "name": "ripTrack", "col_offset": 4, "rank": "A", "classname": "Program", "complexity": 5, "lineno": 552, "endline": 614, "type": "method"}, {"closures": [], "name": "write_m3u", "col_offset": 4, "rank": "A", "classname": "Program", "complexity": 5, "lineno": 655, "endline": 674, "type": "method"}, {"closures": [], "name": "getCDDB", "col_offset": 4, "rank": "A", "classname": "Program", "complexity": 4, "lineno": 289, "endline": 312, "type": "method"}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "Program", "complexity": 3, "lineno": 72, "endline": 91, "type": "method"}, {"closures": [], "name": "addDisambiguation", "col_offset": 4, "rank": "A", "classname": "Program", "complexity": 3, "lineno": 200, "endline": 206, "type": "method"}, {"closures": [], "name": "verifyTrack", "col_offset": 4, "rank": "A", "classname": "Program", "complexity": 3, "lineno": 533, "endline": 550, "type": "method"}, {"closures": [], "name": "setWorkingDirectory", "col_offset": 4, "rank": "A", "classname": "Program", "complexity": 2, "lineno": 93, "endline": 96, "type": "method"}, {"closures": [], "name": "getRipResult", "col_offset": 4, "rank": "A", "classname": "Program", "complexity": 2, "lineno": 179, "endline": 195, "type": "method"}, {"closures": [], "name": "getHTOA", "col_offset": 4, "rank": "A", "classname": "Program", "complexity": 2, "lineno": 518, "endline": 531, "type": "method"}, {"closures": [], "name": "writeCue", "col_offset": 4, "rank": "A", "classname": "Program", "complexity": 2, "lineno": 676, "endline": 687, "type": "method"}, {"closures": [], "name": "saveRipResult", "col_offset": 4, "rank": "A", "classname": "Program", "complexity": 1, "lineno": 197, "endline": 198, "type": "method"}, {"closures": [], "name": "retagImage", "col_offset": 4, "rank": "A", "classname": "Program", "complexity": 1, "lineno": 616, "endline": 619, "type": "method"}, {"closures": [], "name": "writeLog", "col_offset": 4, "rank": "A", "classname": "Program", "complexity": 1, "lineno": 689, "endline": 698, "type": "method"}], "whipper/command/drive.py": [{"name": "List", "col_offset": 0, "rank": "B", "complexity": 7, "lineno": 66, "endline": 116, "type": "class", "methods": [{"closures": [], "name": "do", "col_offset": 4, "rank": "B", "classname": "List", "complexity": 7, "lineno": 70, "endline": 116, "type": "method"}]}, {"closures": [], "name": "do", "col_offset": 4, "rank": "B", "classname": "List", "complexity": 7, "lineno": 70, "endline": 116, "type": "method"}, {"name": "Analyze", "col_offset": 0, "rank": "A", "complexity": 4, "lineno": 32, "endline": 63, "type": "class", "methods": [{"closures": [], "name": "do", "col_offset": 4, "rank": "A", "classname": "Analyze", "complexity": 4, "lineno": 37, "endline": 63, "type": "method"}]}, {"closures": [], "name": "do", "col_offset": 4, "rank": "A", "classname": "Analyze", "complexity": 4, "lineno": 37, "endline": 63, "type": "method"}, {"name": "Drive", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 119, "endline": 124, "type": "class", "methods": []}], "whipper/result/result.py": [{"closures": [], "name": "getTrackResult", "col_offset": 4, "rank": "A", "classname": "RipResult", "complexity": 3, "lineno": 110, "endline": 120, "type": "method"}, {"closures": [], "name": "getLoggers", "col_offset": 0, "rank": "A", "complexity": 2, "lineno": 149, "endline": 158, "type": "function"}, {"name": "RipResult", "col_offset": 0, "rank": "A", "complexity": 2, "lineno": 68, "endline": 120, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "RipResult", "complexity": 1, "lineno": 107, "endline": 108, "type": "method"}, {"closures": [], "name": "getTrackResult", "col_offset": 4, "rank": "A", "classname": "RipResult", "complexity": 3, "lineno": 110, "endline": 120, "type": "method"}]}, {"name": "TrackResult", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 25, "endline": 64, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "TrackResult", "complexity": 1, "lineno": 51, "endline": 64, "type": "method"}]}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "TrackResult", "complexity": 1, "lineno": 51, "endline": 64, "type": "method"}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "RipResult", "complexity": 1, "lineno": 107, "endline": 108, "type": "method"}, {"name": "Logger", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 123, "endline": 135, "type": "class", "methods": [{"closures": [], "name": "log", "col_offset": 4, "rank": "A", "classname": "Logger", "complexity": 1, "lineno": 126, "endline": 135, "type": "method"}]}, {"closures": [], "name": "log", "col_offset": 4, "rank": "A", "classname": "Logger", "complexity": 1, "lineno": 126, "endline": 135, "type": "method"}, {"name": "EntryPoint", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 141, "endline": 146, "type": "class", "methods": [{"closures": [], "name": "load", "col_offset": 4, "rank": "A", "classname": "EntryPoint", "complexity": 1, "lineno": 144, "endline": 146, "type": "method"}]}, {"closures": [], "name": "load", "col_offset": 4, "rank": "A", "classname": "EntryPoint", "complexity": 1, "lineno": 144, "endline": 146, "type": "method"}], "whipper/image/image.py": [{"name": "ImageVerifyTask", "col_offset": 0, "rank": "B", "complexity": 6, "lineno": 115, "endline": 187, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "B", "classname": "ImageVerifyTask", "complexity": 6, "lineno": 135, "endline": 168, "type": "method"}, {"closures": [], "name": "stop", "col_offset": 4, "rank": "A", "classname": "ImageVerifyTask", "complexity": 5, "lineno": 170, "endline": 187, "type": "method"}]}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "B", "classname": "ImageVerifyTask", "complexity": 6, "lineno": 135, "endline": 168, "type": "method"}, {"closures": [], "name": "stop", "col_offset": 4, "rank": "A", "classname": "ImageVerifyTask", "complexity": 5, "lineno": 170, "endline": 187, "type": "method"}, {"closures": [], "name": "setup", "col_offset": 4, "rank": "A", "classname": "Image", "complexity": 4, "lineno": 71, "endline": 112, "type": "method"}, {"name": "Image", "col_offset": 0, "rank": "A", "complexity": 3, "lineno": 33, "endline": 112, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "Image", "complexity": 2, "lineno": 50, "endline": 59, "type": "method"}, {"closures": [], "name": "getRealPath", "col_offset": 4, "rank": "A", "classname": "Image", "complexity": 2, "lineno": 61, "endline": 69, "type": "method"}, {"closures": [], "name": "setup", "col_offset": 4, "rank": "A", "classname": "Image", "complexity": 4, "lineno": 71, "endline": 112, "type": "method"}]}, {"name": "ImageEncodeTask", "col_offset": 0, "rank": "A", "complexity": 3, "lineno": 190, "endline": 235, "type": "class", "methods": [{"closures": [{"closures": [], "name": "add", "col_offset": 8, "rank": "A", "complexity": 2, "lineno": 211, "endline": 222, "type": "function"}], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "ImageEncodeTask", "complexity": 3, "lineno": 203, "endline": 235, "type": "method"}]}, {"closures": [{"closures": [], "name": "add", "col_offset": 8, "rank": "A", "complexity": 2, "lineno": 211, "endline": 222, "type": "function"}], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "ImageEncodeTask", "complexity": 3, "lineno": 203, "endline": 235, "type": "method"}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "Image", "complexity": 2, "lineno": 50, "endline": 59, "type": "method"}, {"closures": [], "name": "getRealPath", "col_offset": 4, "rank": "A", "classname": "Image", "complexity": 2, "lineno": 61, "endline": 69, "type": "method"}], "whipper/program/utils.py": [{"closures": [], "name": "unmount_device", "col_offset": 0, "rank": "A", "complexity": 2, "lineno": 27, "endline": 42, "type": "function"}, {"closures": [], "name": "eject_device", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 7, "endline": 14, "type": "function"}, {"closures": [], "name": "load_device", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 17, "endline": 24, "type": "function"}], "whipper/extern/task/task.py": [{"closures": [], "name": "_getExceptionMessage", "col_offset": 0, "rank": "B", "complexity": 6, "lineno": 39, "endline": 70, "type": "function"}, {"closures": [], "name": "setProgress", "col_offset": 4, "rank": "A", "classname": "Task", "complexity": 4, "lineno": 169, "endline": 181, "type": "method"}, {"closures": [], "name": "_notifyListeners", "col_offset": 4, "rank": "A", "classname": "Task", "complexity": 4, "lineno": 252, "endline": 259, "type": "method"}, {"closures": [], "name": "run", "col_offset": 4, "rank": "A", "classname": "SyncRunner", "complexity": 4, "lineno": 507, "endline": 532, "type": "method"}, {"closures": [], "name": "progressed", "col_offset": 4, "rank": "A", "classname": "SyncRunner", "complexity": 4, "lineno": 566, "endline": 578, "type": "method"}, {"closures": [], "name": "_output", "col_offset": 4, "rank": "A", "classname": "SyncRunner", "complexity": 4, "lineno": 580, "endline": 589, "type": "method"}, {"closures": [], "name": "stopped", "col_offset": 4, "rank": "A", "classname": "BaseMultiTask", "complexity": 3, "lineno": 392, "endline": 417, "type": "method"}, {"name": "Task", "col_offset": 0, "rank": "A", "complexity": 2, "lineno": 93, "endline": 259, "type": "class", "methods": [{"closures": [], "name": "start", "col_offset": 4, "rank": "A", "classname": "Task", "complexity": 1, "lineno": 125, "endline": 144, "type": "method"}, {"closures": [], "name": "stop", "col_offset": 4, "rank": "A", "classname": "Task", "complexity": 2, "lineno": 146, "endline": 166, "type": "method"}, {"closures": [], "name": "setProgress", "col_offset": 4, "rank": "A", "classname": "Task", "complexity": 4, "lineno": 169, "endline": 181, "type": "method"}, {"closures": [], "name": "setDescription", "col_offset": 4, "rank": "A", "classname": "Task", "complexity": 2, "lineno": 183, "endline": 186, "type": "method"}, {"closures": [], "name": "setExceptionAndTraceback", "col_offset": 4, "rank": "A", "classname": "Task", "complexity": 2, "lineno": 189, "endline": 213, "type": "method"}, {"closures": [], "name": "setException", "col_offset": 4, "rank": "A", "classname": "Task", "complexity": 1, "lineno": 217, "endline": 229, "type": "method"}, {"closures": [], "name": "schedule", "col_offset": 4, "rank": "A", "classname": "Task", "complexity": 2, "lineno": 231, "endline": 237, "type": "method"}, {"closures": [], "name": "addListener", "col_offset": 4, "rank": "A", "classname": "Task", "complexity": 2, "lineno": 239, "endline": 250, "type": "method"}, {"closures": [], "name": "_notifyListeners", "col_offset": 4, "rank": "A", "classname": "Task", "complexity": 4, "lineno": 252, "endline": 259, "type": "method"}]}, {"closures": [], "name": "stop", "col_offset": 4, "rank": "A", "classname": "Task", "complexity": 2, "lineno": 146, "endline": 166, "type": "method"}, {"closures": [], "name": "setDescription", "col_offset": 4, "rank": "A", "classname": "Task", "complexity": 2, "lineno": 183, "endline": 186, "type": "method"}, {"closures": [], "name": "setExceptionAndTraceback", "col_offset": 4, "rank": "A", "classname": "Task", "complexity": 2, "lineno": 189, "endline": 213, "type": "method"}, {"closures": [], "name": "schedule", "col_offset": 4, "rank": "A", "classname": "Task", "complexity": 2, "lineno": 231, "endline": 237, "type": "method"}, {"closures": [], "name": "addListener", "col_offset": 4, "rank": "A", "classname": "Task", "complexity": 2, "lineno": 239, "endline": 250, "type": "method"}, {"name": "DummyTask", "col_offset": 0, "rank": "A", "complexity": 2, "lineno": 308, "endline": 320, "type": "class", "methods": [{"closures": [], "name": "start", "col_offset": 4, "rank": "A", "classname": "DummyTask", "complexity": 1, "lineno": 309, "endline": 311, "type": "method"}, {"closures": [], "name": "_wind", "col_offset": 4, "rank": "A", "classname": "DummyTask", "complexity": 2, "lineno": 313, "endline": 320, "type": "method"}]}, {"closures": [], "name": "_wind", "col_offset": 4, "rank": "A", "classname": "DummyTask", "complexity": 2, "lineno": 313, "endline": 320, "type": "method"}, {"closures": [], "name": "addTask", "col_offset": 4, "rank": "A", "classname": "BaseMultiTask", "complexity": 2, "lineno": 337, "endline": 345, "type": "method"}, {"closures": [], "name": "start", "col_offset": 4, "rank": "A", "classname": "BaseMultiTask", "complexity": 2, "lineno": 347, "endline": 363, "type": "method"}, {"closures": [], "name": "next", "col_offset": 4, "rank": "A", "classname": "BaseMultiTask", "complexity": 2, "lineno": 365, "endline": 383, "type": "method"}, {"name": "SyncRunner", "col_offset": 0, "rank": "A", "complexity": 2, "lineno": 500, "endline": 602, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "SyncRunner", "complexity": 1, "lineno": 503, "endline": 505, "type": "method"}, {"closures": [], "name": "run", "col_offset": 4, "rank": "A", "classname": "SyncRunner", "complexity": 4, "lineno": 507, "endline": 532, "type": "method"}, {"closures": [], "name": "_startWrap", "col_offset": 4, "rank": "A", "classname": "SyncRunner", "complexity": 2, "lineno": 534, "endline": 545, "type": "method"}, {"closures": [{"closures": [], "name": "c", "col_offset": 8, "rank": "A", "complexity": 2, "lineno": 548, "endline": 559, "type": "function"}], "name": "schedule", "col_offset": 4, "rank": "A", "classname": "SyncRunner", "complexity": 1, "lineno": 547, "endline": 563, "type": "method"}, {"closures": [], "name": "progressed", "col_offset": 4, "rank": "A", "classname": "SyncRunner", "complexity": 4, "lineno": 566, "endline": 578, "type": "method"}, {"closures": [], "name": "_output", "col_offset": 4, "rank": "A", "classname": "SyncRunner", "complexity": 4, "lineno": 580, "endline": 589, "type": "method"}, {"closures": [], "name": "described", "col_offset": 4, "rank": "A", "classname": "SyncRunner", "complexity": 2, "lineno": 591, "endline": 593, "type": "method"}, {"closures": [], "name": "stopped", "col_offset": 4, "rank": "A", "classname": "SyncRunner", "complexity": 1, "lineno": 595, "endline": 598, "type": "method"}, {"closures": [], "name": "_report", "col_offset": 4, "rank": "A", "classname": "SyncRunner", "complexity": 1, "lineno": 600, "endline": 602, "type": "method"}]}, {"closures": [], "name": "_startWrap", "col_offset": 4, "rank": "A", "classname": "SyncRunner", "complexity": 2, "lineno": 534, "endline": 545, "type": "method"}, {"closures": [], "name": "described", "col_offset": 4, "rank": "A", "classname": "SyncRunner", "complexity": 2, "lineno": 591, "endline": 593, "type": "method"}, {"name": "TaskException", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 26, "endline": 34, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "TaskException", "complexity": 1, "lineno": 31, "endline": 34, "type": "method"}]}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "TaskException", "complexity": 1, "lineno": 31, "endline": 34, "type": "method"}, {"name": "LogStub", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 73, "endline": 90, "type": "class", "methods": [{"closures": [], "name": "log", "col_offset": 4, "rank": "A", "classname": "LogStub", "complexity": 1, "lineno": 77, "endline": 78, "type": "method"}, {"closures": [], "name": "debug", "col_offset": 4, "rank": "A", "classname": "LogStub", "complexity": 1, "lineno": 80, "endline": 81, "type": "method"}, {"closures": [], "name": "info", "col_offset": 4, "rank": "A", "classname": "LogStub", "complexity": 1, "lineno": 83, "endline": 84, "type": "method"}, {"closures": [], "name": "warning", "col_offset": 4, "rank": "A", "classname": "LogStub", "complexity": 1, "lineno": 86, "endline": 87, "type": "method"}, {"closures": [], "name": "error", "col_offset": 4, "rank": "A", "classname": "LogStub", "complexity": 1, "lineno": 89, "endline": 90, "type": "method"}]}, {"closures": [], "name": "log", "col_offset": 4, "rank": "A", "classname": "LogStub", "complexity": 1, "lineno": 77, "endline": 78, "type": "method"}, {"closures": [], "name": "debug", "col_offset": 4, "rank": "A", "classname": "LogStub", "complexity": 1, "lineno": 80, "endline": 81, "type": "method"}, {"closures": [], "name": "info", "col_offset": 4, "rank": "A", "classname": "LogStub", "complexity": 1, "lineno": 83, "endline": 84, "type": "method"}, {"closures": [], "name": "warning", "col_offset": 4, "rank": "A", "classname": "LogStub", "complexity": 1, "lineno": 86, "endline": 87, "type": "method"}, {"closures": [], "name": "error", "col_offset": 4, "rank": "A", "classname": "LogStub", "complexity": 1, "lineno": 89, "endline": 90, "type": "method"}, {"closures": [], "name": "start", "col_offset": 4, "rank": "A", "classname": "Task", "complexity": 1, "lineno": 125, "endline": 144, "type": "method"}, {"closures": [], "name": "setException", "col_offset": 4, "rank": "A", "classname": "Task", "complexity": 1, "lineno": 217, "endline": 229, "type": "method"}, {"name": "ITaskListener", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 263, "endline": 304, "type": "class", "methods": [{"closures": [], "name": "progressed", "col_offset": 4, "rank": "A", "classname": "ITaskListener", "complexity": 1, "lineno": 268, "endline": 276, "type": "method"}, {"closures": [], "name": "described", "col_offset": 4, "rank": "A", "classname": "ITaskListener", "complexity": 1, "lineno": 278, "endline": 286, "type": "method"}, {"closures": [], "name": "started", "col_offset": 4, "rank": "A", "classname": "ITaskListener", "complexity": 1, "lineno": 288, "endline": 294, "type": "method"}, {"closures": [], "name": "stopped", "col_offset": 4, "rank": "A", "classname": "ITaskListener", "complexity": 1, "lineno": 296, "endline": 304, "type": "method"}]}, {"closures": [], "name": "progressed", "col_offset": 4, "rank": "A", "classname": "ITaskListener", "complexity": 1, "lineno": 268, "endline": 276, "type": "method"}, {"closures": [], "name": "described", "col_offset": 4, "rank": "A", "classname": "ITaskListener", "complexity": 1, "lineno": 278, "endline": 286, "type": "method"}, {"closures": [], "name": "started", "col_offset": 4, "rank": "A", "classname": "ITaskListener", "complexity": 1, "lineno": 288, "endline": 294, "type": "method"}, {"closures": [], "name": "stopped", "col_offset": 4, "rank": "A", "classname": "ITaskListener", "complexity": 1, "lineno": 296, "endline": 304, "type": "method"}, {"closures": [], "name": "start", "col_offset": 4, "rank": "A", "classname": "DummyTask", "complexity": 1, "lineno": 309, "endline": 311, "type": "method"}, {"name": "BaseMultiTask", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 323, "endline": 417, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "BaseMultiTask", "complexity": 1, "lineno": 333, "endline": 335, "type": "method"}, {"closures": [], "name": "addTask", "col_offset": 4, "rank": "A", "classname": "BaseMultiTask", "complexity": 2, "lineno": 337, "endline": 345, "type": "method"}, {"closures": [], "name": "start", "col_offset": 4, "rank": "A", "classname": "BaseMultiTask", "complexity": 2, "lineno": 347, "endline": 363, "type": "method"}, {"closures": [], "name": "next", "col_offset": 4, "rank": "A", "classname": "BaseMultiTask", "complexity": 2, "lineno": 365, "endline": 383, "type": "method"}, {"closures": [], "name": "started", "col_offset": 4, "rank": "A", "classname": "BaseMultiTask", "complexity": 1, "lineno": 386, "endline": 387, "type": "method"}, {"closures": [], "name": "progressed", "col_offset": 4, "rank": "A", "classname": "BaseMultiTask", "complexity": 1, "lineno": 389, "endline": 390, "type": "method"}, {"closures": [], "name": "stopped", "col_offset": 4, "rank": "A", "classname": "BaseMultiTask", "complexity": 3, "lineno": 392, "endline": 417, "type": "method"}]}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "BaseMultiTask", "complexity": 1, "lineno": 333, "endline": 335, "type": "method"}, {"closures": [], "name": "started", "col_offset": 4, "rank": "A", "classname": "BaseMultiTask", "complexity": 1, "lineno": 386, "endline": 387, "type": "method"}, {"closures": [], "name": "progressed", "col_offset": 4, "rank": "A", "classname": "BaseMultiTask", "complexity": 1, "lineno": 389, "endline": 390, "type": "method"}, {"name": "MultiSeparateTask", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 420, "endline": 444, "type": "class", "methods": [{"closures": [], "name": "start", "col_offset": 4, "rank": "A", "classname": "MultiSeparateTask", "complexity": 1, "lineno": 428, "endline": 430, "type": "method"}, {"closures": [], "name": "next", "col_offset": 4, "rank": "A", "classname": "MultiSeparateTask", "complexity": 1, "lineno": 432, "endline": 436, "type": "method"}, {"closures": [], "name": "progressed", "col_offset": 4, "rank": "A", "classname": "MultiSeparateTask", "complexity": 1, "lineno": 439, "endline": 440, "type": "method"}, {"closures": [], "name": "described", "col_offset": 4, "rank": "A", "classname": "MultiSeparateTask", "complexity": 1, "lineno": 442, "endline": 444, "type": "method"}]}, {"closures": [], "name": "start", "col_offset": 4, "rank": "A", "classname": "MultiSeparateTask", "complexity": 1, "lineno": 428, "endline": 430, "type": "method"}, {"closures": [], "name": "next", "col_offset": 4, "rank": "A", "classname": "MultiSeparateTask", "complexity": 1, "lineno": 432, "endline": 436, "type": "method"}, {"closures": [], "name": "progressed", "col_offset": 4, "rank": "A", "classname": "MultiSeparateTask", "complexity": 1, "lineno": 439, "endline": 440, "type": "method"}, {"closures": [], "name": "described", "col_offset": 4, "rank": "A", "classname": "MultiSeparateTask", "complexity": 1, "lineno": 442, "endline": 444, "type": "method"}, {"name": "MultiCombinedTask", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 447, "endline": 463, "type": "class", "methods": [{"closures": [], "name": "progressed", "col_offset": 4, "rank": "A", "classname": "MultiCombinedTask", "complexity": 1, "lineno": 457, "endline": 458, "type": "method"}, {"closures": [], "name": "stopped", "col_offset": 4, "rank": "A", "classname": "MultiCombinedTask", "complexity": 1, "lineno": 460, "endline": 463, "type": "method"}]}, {"closures": [], "name": "progressed", "col_offset": 4, "rank": "A", "classname": "MultiCombinedTask", "complexity": 1, "lineno": 457, "endline": 458, "type": "method"}, {"closures": [], "name": "stopped", "col_offset": 4, "rank": "A", "classname": "MultiCombinedTask", "complexity": 1, "lineno": 460, "endline": 463, "type": "method"}, {"name": "TaskRunner", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 466, "endline": 497, "type": "class", "methods": [{"closures": [], "name": "run", "col_offset": 4, "rank": "A", "classname": "TaskRunner", "complexity": 1, "lineno": 474, "endline": 480, "type": "method"}, {"closures": [], "name": "schedule", "col_offset": 4, "rank": "A", "classname": "TaskRunner", "complexity": 1, "lineno": 483, "endline": 497, "type": "method"}]}, {"closures": [], "name": "run", "col_offset": 4, "rank": "A", "classname": "TaskRunner", "complexity": 1, "lineno": 474, "endline": 480, "type": "method"}, {"closures": [], "name": "schedule", "col_offset": 4, "rank": "A", "classname": "TaskRunner", "complexity": 1, "lineno": 483, "endline": 497, "type": "method"}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "SyncRunner", "complexity": 1, "lineno": 503, "endline": 505, "type": "method"}, {"closures": [{"closures": [], "name": "c", "col_offset": 8, "rank": "A", "complexity": 2, "lineno": 548, "endline": 559, "type": "function"}], "name": "schedule", "col_offset": 4, "rank": "A", "classname": "SyncRunner", "complexity": 1, "lineno": 547, "endline": 563, "type": "method"}, {"closures": [], "name": "stopped", "col_offset": 4, "rank": "A", "classname": "SyncRunner", "complexity": 1, "lineno": 595, "endline": 598, "type": "method"}, {"closures": [], "name": "_report", "col_offset": 4, "rank": "A", "classname": "SyncRunner", "complexity": 1, "lineno": 600, "endline": 602, "type": "method"}], "whipper/program/cdrdao.py": [{"closures": [], "name": "read_toc", "col_offset": 0, "rank": "A", "complexity": 4, "lineno": 15, "endline": 53, "type": "function"}, {"closures": [], "name": "version", "col_offset": 0, "rank": "A", "complexity": 3, "lineno": 73, "endline": 91, "type": "function"}, {"closures": [], "name": "DetectCdr", "col_offset": 0, "rank": "A", "complexity": 2, "lineno": 56, "endline": 70, "type": "function"}, {"closures": [], "name": "ReadTOCTask", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 94, "endline": 102, "type": "function"}, {"closures": [], "name": "ReadTableTask", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 105, "endline": 113, "type": "function"}, {"closures": [], "name": "getCDRDAOVersion", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 116, "endline": 122, "type": "function"}], "whipper/command/offset.py": [{"closures": [{"closures": [], "name": "match", "col_offset": 8, "rank": "A", "complexity": 4, "lineno": 110, "endline": 116, "type": "function"}], "name": "do", "col_offset": 4, "rank": "C", "classname": "Find", "complexity": 14, "lineno": 78, "endline": 177, "type": "method"}, {"name": "Find", "col_offset": 0, "rank": "A", "complexity": 4, "lineno": 52, "endline": 221, "type": "class", "methods": [{"closures": [], "name": "add_arguments", "col_offset": 4, "rank": "A", "classname": "Find", "complexity": 1, "lineno": 59, "endline": 63, "type": "method"}, {"closures": [], "name": "handle_arguments", "col_offset": 4, "rank": "A", "classname": "Find", "complexity": 3, "lineno": 66, "endline": 76, "type": "method"}, {"closures": [{"closures": [], "name": "match", "col_offset": 8, "rank": "A", "complexity": 4, "lineno": 110, "endline": 116, "type": "function"}], "name": "do", "col_offset": 4, "rank": "C", "classname": "Find", "complexity": 14, "lineno": 78, "endline": 177, "type": "method"}, {"closures": [], "name": "_arcs", "col_offset": 4, "rank": "A", "classname": "Find", "complexity": 1, "lineno": 179, "endline": 205, "type": "method"}, {"closures": [], "name": "_foundOffset", "col_offset": 4, "rank": "A", "classname": "Find", "complexity": 2, "lineno": 207, "endline": 221, "type": "method"}]}, {"closures": [], "name": "handle_arguments", "col_offset": 4, "rank": "A", "classname": "Find", "complexity": 3, "lineno": 66, "endline": 76, "type": "method"}, {"closures": [], "name": "_foundOffset", "col_offset": 4, "rank": "A", "classname": "Find", "complexity": 2, "lineno": 207, "endline": 221, "type": "method"}, {"closures": [], "name": "add_arguments", "col_offset": 4, "rank": "A", "classname": "Find", "complexity": 1, "lineno": 59, "endline": 63, "type": "method"}, {"closures": [], "name": "_arcs", "col_offset": 4, "rank": "A", "classname": "Find", "complexity": 1, "lineno": 179, "endline": 205, "type": "method"}, {"name": "Offset", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 224, "endline": 230, "type": "class", "methods": []}], "whipper/program/cdparanoia.py": [{"closures": [], "name": "_parse_read", "col_offset": 4, "rank": "C", "classname": "ProgressParser", "complexity": 13, "lineno": 129, "endline": 186, "type": "method"}, {"closures": [], "name": "_read", "col_offset": 4, "rank": "B", "classname": "ReadTrackTask", "complexity": 9, "lineno": 327, "endline": 366, "type": "method"}, {"closures": [], "name": "start", "col_offset": 4, "rank": "B", "classname": "ReadTrackTask", "complexity": 8, "lineno": 272, "endline": 325, "type": "method"}, {"closures": [], "name": "stop", "col_offset": 4, "rank": "B", "classname": "ReadVerifyTrackTask", "complexity": 7, "lineno": 526, "endline": 574, "type": "method"}, {"closures": [], "name": "_done", "col_offset": 4, "rank": "B", "classname": "ReadTrackTask", "complexity": 6, "lineno": 375, "endline": 412, "type": "method"}, {"name": "ReadVerifyTrackTask", "col_offset": 0, "rank": "B", "complexity": 6, "lineno": 415, "endline": 574, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "ReadVerifyTrackTask", "complexity": 4, "lineno": 470, "endline": 524, "type": "method"}, {"closures": [], "name": "stop", "col_offset": 4, "rank": "B", "classname": "ReadVerifyTrackTask", "complexity": 7, "lineno": 526, "endline": 574, "type": "method"}]}, {"closures": [], "name": "parse", "col_offset": 4, "rank": "A", "classname": "ProgressParser", "complexity": 5, "lineno": 109, "endline": 127, "type": "method"}, {"name": "ReadTrackTask", "col_offset": 0, "rank": "A", "complexity": 5, "lineno": 215, "endline": 412, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "ReadTrackTask", "complexity": 2, "lineno": 254, "endline": 270, "type": "method"}, {"closures": [], "name": "start", "col_offset": 4, "rank": "B", "classname": "ReadTrackTask", "complexity": 8, "lineno": 272, "endline": 325, "type": "method"}, {"closures": [], "name": "_read", "col_offset": 4, "rank": "B", "classname": "ReadTrackTask", "complexity": 9, "lineno": 327, "endline": 366, "type": "method"}, {"closures": [], "name": "_poll", "col_offset": 4, "rank": "A", "classname": "ReadTrackTask", "complexity": 2, "lineno": 368, "endline": 373, "type": "method"}, {"closures": [], "name": "_done", "col_offset": 4, "rank": "B", "classname": "ReadTrackTask", "complexity": 6, "lineno": 375, "endline": 412, "type": "method"}]}, {"name": "ProgressParser", "col_offset": 0, "rank": "A", "complexity": 4, "lineno": 76, "endline": 210, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "ProgressParser", "complexity": 1, "lineno": 100, "endline": 107, "type": "method"}, {"closures": [], "name": "parse", "col_offset": 4, "rank": "A", "classname": "ProgressParser", "complexity": 5, "lineno": 109, "endline": 127, "type": "method"}, {"closures": [], "name": "_parse_read", "col_offset": 4, "rank": "C", "classname": "ProgressParser", "complexity": 13, "lineno": 129, "endline": 186, "type": "method"}, {"closures": [], "name": "_parse_wrote", "col_offset": 4, "rank": "A", "classname": "ProgressParser", "complexity": 1, "lineno": 188, "endline": 191, "type": "method"}, {"closures": [], "name": "getTrackQuality", "col_offset": 4, "rank": "A", "classname": "ProgressParser", "complexity": 2, "lineno": 193, "endline": 210, "type": "method"}]}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "ReadVerifyTrackTask", "complexity": 4, "lineno": 470, "endline": 524, "type": "method"}, {"closures": [], "name": "done", "col_offset": 4, "rank": "A", "classname": "AnalyzeTask", "complexity": 3, "lineno": 618, "endline": 626, "type": "method"}, {"closures": [], "name": "failed", "col_offset": 4, "rank": "A", "classname": "AnalyzeTask", "complexity": 3, "lineno": 628, "endline": 636, "type": "method"}, {"closures": [], "name": "getTrackQuality", "col_offset": 4, "rank": "A", "classname": "ProgressParser", "complexity": 2, "lineno": 193, "endline": 210, "type": "method"}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "ReadTrackTask", "complexity": 2, "lineno": 254, "endline": 270, "type": "method"}, {"closures": [], "name": "_poll", "col_offset": 4, "rank": "A", "classname": "ReadTrackTask", "complexity": 2, "lineno": 368, "endline": 373, "type": "method"}, {"name": "AnalyzeTask", "col_offset": 0, "rank": "A", "complexity": 2, "lineno": 594, "endline": 636, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "AnalyzeTask", "complexity": 2, "lineno": 605, "endline": 610, "type": "method"}, {"closures": [], "name": "commandMissing", "col_offset": 4, "rank": "A", "classname": "AnalyzeTask", "complexity": 1, "lineno": 612, "endline": 613, "type": "method"}, {"closures": [], "name": "readbyteserr", "col_offset": 4, "rank": "A", "classname": "AnalyzeTask", "complexity": 1, "lineno": 615, "endline": 616, "type": "method"}, {"closures": [], "name": "done", "col_offset": 4, "rank": "A", "classname": "AnalyzeTask", "complexity": 3, "lineno": 618, "endline": 626, "type": "method"}, {"closures": [], "name": "failed", "col_offset": 4, "rank": "A", "classname": "AnalyzeTask", "complexity": 3, "lineno": 628, "endline": 636, "type": "method"}]}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "AnalyzeTask", "complexity": 2, "lineno": 605, "endline": 610, "type": "method"}, {"closures": [], "name": "getCdParanoiaVersion", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 581, "endline": 587, "type": "function"}, {"name": "FileSizeError", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 39, "endline": 47, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "FileSizeError", "complexity": 1, "lineno": 44, "endline": 47, "type": "method"}]}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "FileSizeError", "complexity": 1, "lineno": 44, "endline": 47, "type": "method"}, {"name": "ReturnCodeError", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 50, "endline": 55, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "ReturnCodeError", "complexity": 1, "lineno": 53, "endline": 55, "type": "method"}]}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "ReturnCodeError", "complexity": 1, "lineno": 53, "endline": 55, "type": "method"}, {"name": "ChecksumException", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 58, "endline": 59, "type": "class", "methods": []}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "ProgressParser", "complexity": 1, "lineno": 100, "endline": 107, "type": "method"}, {"closures": [], "name": "_parse_wrote", "col_offset": 4, "rank": "A", "classname": "ProgressParser", "complexity": 1, "lineno": 188, "endline": 191, "type": "method"}, {"closures": [], "name": "commandMissing", "col_offset": 4, "rank": "A", "classname": "AnalyzeTask", "complexity": 1, "lineno": 612, "endline": 613, "type": "method"}, {"closures": [], "name": "readbyteserr", "col_offset": 4, "rank": "A", "classname": "AnalyzeTask", "complexity": 1, "lineno": 615, "endline": 616, "type": "method"}], "whipper/command/debug.py": [{"closures": [], "name": "do", "col_offset": 4, "rank": "B", "classname": "MusicBrainzNGS", "complexity": 6, "lineno": 230, "endline": 256, "type": "method"}, {"name": "RCList", "col_offset": 0, "rank": "A", "complexity": 5, "lineno": 56, "endline": 77, "type": "class", "methods": [{"closures": [], "name": "do", "col_offset": 4, "rank": "A", "classname": "RCList", "complexity": 5, "lineno": 60, "endline": 77, "type": "method"}]}, {"closures": [], "name": "do", "col_offset": 4, "rank": "A", "classname": "RCList", "complexity": 5, "lineno": 60, "endline": 77, "type": "method"}, {"name": "MusicBrainzNGS", "col_offset": 0, "rank": "A", "complexity": 4, "lineno": 218, "endline": 256, "type": "class", "methods": [{"closures": [], "name": "add_arguments", "col_offset": 4, "rank": "A", "classname": "MusicBrainzNGS", "complexity": 1, "lineno": 226, "endline": 228, "type": "method"}, {"closures": [], "name": "do", "col_offset": 4, "rank": "B", "classname": "MusicBrainzNGS", "complexity": 6, "lineno": 230, "endline": 256, "type": "method"}]}, {"name": "RCCue", "col_offset": 0, "rank": "A", "complexity": 3, "lineno": 32, "endline": 53, "type": "class", "methods": [{"closures": [], "name": "do", "col_offset": 4, "rank": "A", "classname": "RCCue", "complexity": 3, "lineno": 36, "endline": 53, "type": "method"}]}, {"closures": [], "name": "do", "col_offset": 4, "rank": "A", "classname": "RCCue", "complexity": 3, "lineno": 36, "endline": 53, "type": "method"}, {"closures": [], "name": "do", "col_offset": 4, "rank": "A", "classname": "RCLog", "complexity": 3, "lineno": 95, "endline": 113, "type": "method"}, {"closures": [], "name": "do", "col_offset": 4, "rank": "A", "classname": "Encode", "complexity": 3, "lineno": 157, "endline": 188, "type": "method"}, {"closures": [], "name": "do", "col_offset": 4, "rank": "A", "classname": "Tag", "complexity": 3, "lineno": 199, "endline": 215, "type": "method"}, {"name": "RCLog", "col_offset": 0, "rank": "A", "complexity": 2, "lineno": 80, "endline": 113, "type": "class", "methods": [{"closures": [], "name": "add_arguments", "col_offset": 4, "rank": "A", "classname": "RCLog", "complexity": 1, "lineno": 85, "endline": 92, "type": "method"}, {"closures": [], "name": "do", "col_offset": 4, "rank": "A", "classname": "RCLog", "complexity": 3, "lineno": 95, "endline": 113, "type": "method"}]}, {"name": "Checksum", "col_offset": 0, "rank": "A", "complexity": 2, "lineno": 127, "endline": 144, "type": "class", "methods": [{"closures": [], "name": "add_arguments", "col_offset": 4, "rank": "A", "classname": "Checksum", "complexity": 1, "lineno": 131, "endline": 133, "type": "method"}, {"closures": [], "name": "do", "col_offset": 4, "rank": "A", "classname": "Checksum", "complexity": 2, "lineno": 135, "endline": 144, "type": "method"}]}, {"closures": [], "name": "do", "col_offset": 4, "rank": "A", "classname": "Checksum", "complexity": 2, "lineno": 135, "endline": 144, "type": "method"}, {"name": "Encode", "col_offset": 0, "rank": "A", "complexity": 2, "lineno": 147, "endline": 188, "type": "class", "methods": [{"closures": [], "name": "add_arguments", "col_offset": 4, "rank": "A", "classname": "Encode", "complexity": 1, "lineno": 151, "endline": 155, "type": "method"}, {"closures": [], "name": "do", "col_offset": 4, "rank": "A", "classname": "Encode", "complexity": 3, "lineno": 157, "endline": 188, "type": "method"}]}, {"name": "Tag", "col_offset": 0, "rank": "A", "complexity": 2, "lineno": 191, "endline": 215, "type": "class", "methods": [{"closures": [], "name": "add_arguments", "col_offset": 4, "rank": "A", "classname": "Tag", "complexity": 1, "lineno": 195, "endline": 197, "type": "method"}, {"closures": [], "name": "do", "col_offset": 4, "rank": "A", "classname": "Tag", "complexity": 3, "lineno": 199, "endline": 215, "type": "method"}]}, {"closures": [], "name": "add_arguments", "col_offset": 4, "rank": "A", "classname": "RCLog", "complexity": 1, "lineno": 85, "endline": 92, "type": "method"}, {"name": "ResultCache", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 116, "endline": 123, "type": "class", "methods": []}, {"closures": [], "name": "add_arguments", "col_offset": 4, "rank": "A", "classname": "Checksum", "complexity": 1, "lineno": 131, "endline": 133, "type": "method"}, {"closures": [], "name": "add_arguments", "col_offset": 4, "rank": "A", "classname": "Encode", "complexity": 1, "lineno": 151, "endline": 155, "type": "method"}, {"closures": [], "name": "add_arguments", "col_offset": 4, "rank": "A", "classname": "Tag", "complexity": 1, "lineno": 195, "endline": 197, "type": "method"}, {"closures": [], "name": "add_arguments", "col_offset": 4, "rank": "A", "classname": "MusicBrainzNGS", "complexity": 1, "lineno": 226, "endline": 228, "type": "method"}, {"name": "CDParanoia", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 259, "endline": 266, "type": "class", "methods": [{"closures": [], "name": "do", "col_offset": 4, "rank": "A", "classname": "CDParanoia", "complexity": 1, "lineno": 263, "endline": 266, "type": "method"}]}, {"closures": [], "name": "do", "col_offset": 4, "rank": "A", "classname": "CDParanoia", "complexity": 1, "lineno": 263, "endline": 266, "type": "method"}, {"name": "CDRDAO", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 269, "endline": 276, "type": "class", "methods": [{"closures": [], "name": "do", "col_offset": 4, "rank": "A", "classname": "CDRDAO", "complexity": 1, "lineno": 273, "endline": 276, "type": "method"}]}, {"closures": [], "name": "do", "col_offset": 4, "rank": "A", "classname": "CDRDAO", "complexity": 1, "lineno": 273, "endline": 276, "type": "method"}, {"name": "Version", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 279, "endline": 285, "type": "class", "methods": []}, {"name": "Debug", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 289, "endline": 299, "type": "class", "methods": []}], "whipper/program/soxi.py": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "AudioLengthTask", "complexity": 2, "lineno": 35, "endline": 43, "type": "method"}, {"closures": [], "name": "done", "col_offset": 4, "rank": "A", "classname": "AudioLengthTask", "complexity": 2, "lineno": 57, "endline": 60, "type": "method"}, {"name": "AudioLengthTask", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 12, "endline": 60, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "AudioLengthTask", "complexity": 2, "lineno": 35, "endline": 43, "type": "method"}, {"closures": [], "name": "commandMissing", "col_offset": 4, "rank": "A", "classname": "AudioLengthTask", "complexity": 1, "lineno": 45, "endline": 46, "type": "method"}, {"closures": [], "name": "readbytesout", "col_offset": 4, "rank": "A", "classname": "AudioLengthTask", "complexity": 1, "lineno": 48, "endline": 49, "type": "method"}, {"closures": [], "name": "readbyteserr", "col_offset": 4, "rank": "A", "classname": "AudioLengthTask", "complexity": 1, "lineno": 51, "endline": 52, "type": "method"}, {"closures": [], "name": "failed", "col_offset": 4, "rank": "A", "classname": "AudioLengthTask", "complexity": 1, "lineno": 54, "endline": 55, "type": "method"}, {"closures": [], "name": "done", "col_offset": 4, "rank": "A", "classname": "AudioLengthTask", "complexity": 2, "lineno": 57, "endline": 60, "type": "method"}]}, {"closures": [], "name": "commandMissing", "col_offset": 4, "rank": "A", "classname": "AudioLengthTask", "complexity": 1, "lineno": 45, "endline": 46, "type": "method"}, {"closures": [], "name": "readbytesout", "col_offset": 4, "rank": "A", "classname": "AudioLengthTask", "complexity": 1, "lineno": 48, "endline": 49, "type": "method"}, {"closures": [], "name": "readbyteserr", "col_offset": 4, "rank": "A", "classname": "AudioLengthTask", "complexity": 1, "lineno": 51, "endline": 52, "type": "method"}, {"closures": [], "name": "failed", "col_offset": 4, "rank": "A", "classname": "AudioLengthTask", "complexity": 1, "lineno": 54, "endline": 55, "type": "method"}], "whipper/result/logger.py": [{"closures": [], "name": "logRip", "col_offset": 4, "rank": "C", "classname": "WhipperLogger", "complexity": 16, "lineno": 29, "endline": 170, "type": "method"}, {"closures": [], "name": "trackLog", "col_offset": 4, "rank": "C", "classname": "WhipperLogger", "complexity": 13, "lineno": 172, "endline": 256, "type": "method"}, {"name": "WhipperLogger", "col_offset": 0, "rank": "B", "complexity": 10, "lineno": 10, "endline": 256, "type": "class", "methods": [{"closures": [], "name": "log", "col_offset": 4, "rank": "A", "classname": "WhipperLogger", "complexity": 1, "lineno": 16, "endline": 27, "type": "method"}, {"closures": [], "name": "logRip", "col_offset": 4, "rank": "C", "classname": "WhipperLogger", "complexity": 16, "lineno": 29, "endline": 170, "type": "method"}, {"closures": [], "name": "trackLog", "col_offset": 4, "rank": "C", "classname": "WhipperLogger", "complexity": 13, "lineno": 172, "endline": 256, "type": "method"}]}, {"closures": [], "name": "log", "col_offset": 4, "rank": "A", "classname": "WhipperLogger", "complexity": 1, "lineno": 16, "endline": 27, "type": "method"}], "whipper/image/cue.py": [{"closures": [], "name": "parse", "col_offset": 4, "rank": "B", "classname": "CueFile", "complexity": 9, "lineno": 88, "endline": 157, "type": "method"}, {"closures": [], "name": "getTrackLength", "col_offset": 4, "rank": "A", "classname": "CueFile", "complexity": 4, "lineno": 169, "endline": 187, "type": "method"}, {"name": "CueFile", "col_offset": 0, "rank": "A", "complexity": 3, "lineno": 60, "endline": 195, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "CueFile", "complexity": 2, "lineno": 79, "endline": 86, "type": "method"}, {"closures": [], "name": "parse", "col_offset": 4, "rank": "B", "classname": "CueFile", "complexity": 9, "lineno": 88, "endline": 157, "type": "method"}, {"closures": [], "name": "message", "col_offset": 4, "rank": "A", "classname": "CueFile", "complexity": 1, "lineno": 159, "endline": 167, "type": "method"}, {"closures": [], "name": "getTrackLength", "col_offset": 4, "rank": "A", "classname": "CueFile", "complexity": 4, "lineno": 169, "endline": 187, "type": "method"}, {"closures": [], "name": "getRealPath", "col_offset": 4, "rank": "A", "classname": "CueFile", "complexity": 1, "lineno": 189, "endline": 195, "type": "method"}]}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "CueFile", "complexity": 2, "lineno": 79, "endline": 86, "type": "method"}, {"name": "File", "col_offset": 0, "rank": "A", "complexity": 2, "lineno": 198, "endline": 214, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "File", "complexity": 2, "lineno": 207, "endline": 211, "type": "method"}, {"closures": [], "name": "__repr__", "col_offset": 4, "rank": "A", "classname": "File", "complexity": 1, "lineno": 213, "endline": 214, "type": "method"}]}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "File", "complexity": 2, "lineno": 207, "endline": 211, "type": "method"}, {"closures": [], "name": "message", "col_offset": 4, "rank": "A", "classname": "CueFile", "complexity": 1, "lineno": 159, "endline": 167, "type": "method"}, {"closures": [], "name": "getRealPath", "col_offset": 4, "rank": "A", "classname": "CueFile", "complexity": 1, "lineno": 189, "endline": 195, "type": "method"}, {"closures": [], "name": "__repr__", "col_offset": 4, "rank": "A", "classname": "File", "complexity": 1, "lineno": 213, "endline": 214, "type": "method"}], "whipper/common/accurip.py": [{"closures": [], "name": "print_report", "col_offset": 0, "rank": "C", "complexity": 11, "lineno": 263, "endline": 302, "type": "function"}, {"closures": [], "name": "_match_responses", "col_offset": 0, "rank": "B", "complexity": 8, "lineno": 207, "endline": 235, "type": "function"}, {"closures": [], "name": "verify_result", "col_offset": 0, "rank": "A", "complexity": 5, "lineno": 239, "endline": 260, "type": "function"}, {"closures": [], "name": "calculate_checksums", "col_offset": 0, "rank": "A", "complexity": 4, "lineno": 99, "endline": 140, "type": "function"}, {"closures": [], "name": "get_db_entry", "col_offset": 0, "rank": "A", "complexity": 4, "lineno": 171, "endline": 194, "type": "function"}, {"closures": [], "name": "_assign_checksums_and_confidences", "col_offset": 0, "rank": "A", "complexity": 4, "lineno": 197, "endline": 203, "type": "function"}, {"closures": [], "name": "_download_entry", "col_offset": 0, "rank": "A", "complexity": 3, "lineno": 143, "endline": 156, "type": "function"}, {"closures": [], "name": "_save_entry", "col_offset": 0, "rank": "A", "complexity": 3, "lineno": 159, "endline": 168, "type": "function"}, {"closures": [], "name": "_split_responses", "col_offset": 0, "rank": "A", "complexity": 2, "lineno": 89, "endline": 96, "type": "function"}, {"name": "_AccurateRipResponse", "col_offset": 0, "rank": "A", "complexity": 2, "lineno": 43, "endline": 85, "type": "class", "methods": [{"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "_AccurateRipResponse", "complexity": 2, "lineno": 63, "endline": 77, "type": "method"}, {"closures": [], "name": "__eq__", "col_offset": 4, "rank": "A", "classname": "_AccurateRipResponse", "complexity": 1, "lineno": 79, "endline": 85, "type": "method"}]}, {"closures": [], "name": "__init__", "col_offset": 4, "rank": "A", "classname": "_AccurateRipResponse", "complexity": 2, "lineno": 63, "endline": 77, "type": "method"}, {"name": "EntryNotFound", "col_offset": 0, "rank": "A", "complexity": 1, "lineno": 39, "endline": 40, "type": "class", "methods": []}, {"closures": [], "name": "__eq__", "col_offset": 4, "rank": "A", "classname": "_AccurateRipResponse", "complexity": 1, "lineno": 79, "endline": 85, "type": "method"}]} diff --git a/misc/radon_reports/radon_cc.txt b/misc/radon_reports/radon_cc.txt new file mode 100644 index 00000000..dff09bef --- /dev/null +++ b/misc/radon_reports/radon_cc.txt @@ -0,0 +1,475 @@ +$ radon cc -a -s -i test whipper/ + +whipper/result/result.py + M 110:4 RipResult.getTrackResult - A (3) + F 149:0 getLoggers - A (2) + C 68:0 RipResult - A (2) + C 25:0 TrackResult - A (1) + M 51:4 TrackResult.__init__ - A (1) + M 107:4 RipResult.__init__ - A (1) + C 123:0 Logger - A (1) + M 126:4 Logger.log - A (1) + C 141:0 EntryPoint - A (1) + M 144:4 EntryPoint.load - A (1) +whipper/result/logger.py + M 29:4 WhipperLogger.logRip - C (16) + M 172:4 WhipperLogger.trackLog - C (13) + C 10:0 WhipperLogger - B (10) + M 16:4 WhipperLogger.log - A (1) +whipper/program/utils.py + F 27:0 unmount_device - A (2) + F 7:0 eject_device - A (1) + F 17:0 load_device - A (1) +whipper/program/soxi.py + M 35:4 AudioLengthTask.__init__ - A (2) + M 57:4 AudioLengthTask.done - A (2) + C 12:0 AudioLengthTask - A (1) + M 45:4 AudioLengthTask.commandMissing - A (1) + M 48:4 AudioLengthTask.readbytesout - A (1) + M 51:4 AudioLengthTask.readbyteserr - A (1) + M 54:4 AudioLengthTask.failed - A (1) +whipper/program/sox.py + F 10:0 peak_level - A (3) +whipper/program/flac.py + F 7:0 encode - A (2) +whipper/program/cdrdao.py + F 15:0 read_toc - A (4) + F 73:0 version - A (3) + F 56:0 DetectCdr - A (2) + F 94:0 ReadTOCTask - A (1) + F 105:0 ReadTableTask - A (1) + F 116:0 getCDRDAOVersion - A (1) +whipper/program/cdparanoia.py + M 129:4 ProgressParser._parse_read - C (13) + M 327:4 ReadTrackTask._read - B (9) + M 272:4 ReadTrackTask.start - B (8) + M 526:4 ReadVerifyTrackTask.stop - B (7) + M 375:4 ReadTrackTask._done - B (6) + C 415:0 ReadVerifyTrackTask - B (6) + M 109:4 ProgressParser.parse - A (5) + C 215:0 ReadTrackTask - A (5) + C 76:0 ProgressParser - A (4) + M 470:4 ReadVerifyTrackTask.__init__ - A (4) + M 618:4 AnalyzeTask.done - A (3) + M 628:4 AnalyzeTask.failed - A (3) + M 193:4 ProgressParser.getTrackQuality - A (2) + M 254:4 ReadTrackTask.__init__ - A (2) + M 368:4 ReadTrackTask._poll - A (2) + C 594:0 AnalyzeTask - A (2) + M 605:4 AnalyzeTask.__init__ - A (2) + F 581:0 getCdParanoiaVersion - A (1) + C 39:0 FileSizeError - A (1) + M 44:4 FileSizeError.__init__ - A (1) + C 50:0 ReturnCodeError - A (1) + M 53:4 ReturnCodeError.__init__ - A (1) + C 58:0 ChecksumException - A (1) + M 100:4 ProgressParser.__init__ - A (1) + M 188:4 ProgressParser._parse_wrote - A (1) + M 612:4 AnalyzeTask.commandMissing - A (1) + M 615:4 AnalyzeTask.readbyteserr - A (1) +whipper/program/arc.py + F 15:0 accuraterip_checksum - B (8) + F 10:0 _execute - A (1) +whipper/image/toc.py + M 191:4 TocFile.parse - E (31) + C 149:0 TocFile - B (6) + M 412:4 TocFile.getTrackLength - A (4) + M 124:4 Sources.get - A (3) + M 136:4 Sources.getCounterStart - A (3) + C 94:0 Sources - A (2) + M 164:4 TocFile.__init__ - A (2) + C 448:0 File - A (2) + M 459:4 File.__init__ - A (2) + M 104:4 Sources.__init__ - A (1) + M 107:4 Sources.append - A (1) + M 173:4 TocFile._index - A (1) + M 402:4 TocFile.message - A (1) + M 439:4 TocFile.getRealPath - A (1) + M 466:4 File.__repr__ - A (1) +whipper/image/table.py + M 500:4 Table.cue - D (24) + M 703:4 Table.absolutize - B (9) + M 354:4 Table.getMusicBrainzDiscId - B (7) + M 453:4 Table._getMusicBrainzValues - B (6) + M 741:4 Table.merge - A (5) + M 823:4 Table.hasTOC - A (5) + M 879:4 Table.canCue - A (5) + M 659:4 Table.setFile - A (4) + M 843:4 Table.accuraterip_ids - A (4) + M 89:4 Track.index - A (3) + M 160:4 Index.__init__ - A (3) + C 177:0 Table - A (3) + M 226:4 Table.getTrackEnd - A (3) + M 260:4 Table.getAudioTracks - A (3) + M 268:4 Table.hasDataTracks - A (3) + M 636:4 Table.clearFiles - A (3) + M 793:4 Table.getNextTrackIndex - A (3) + M 126:4 Track.getPregap - A (2) + C 138:0 Index - A (2) + M 200:4 Table.__init__ - A (2) + M 276:4 Table._cddbSum - A (2) + M 284:4 Table.getCDDBValues - A (2) + M 413:4 Table.getMusicBrainzSubmitURL - A (2) + M 428:4 Table.getFrameLength - A (2) + M 776:4 Table._getSessionGap - A (2) + C 53:0 Track - A (1) + M 80:4 Track.__repr__ - A (1) + M 83:4 Track.__init__ - A (1) + M 110:4 Track.getIndex - A (1) + M 113:4 Track.getFirstIndex - A (1) + M 122:4 Track.getLastIndex - A (1) + M 172:4 Index.__repr__ - A (1) + M 211:4 Table.unpickled - A (1) + M 215:4 Table.getTrackStart - A (1) + M 250:4 Table.getTrackLength - A (1) + M 345:4 Table.getCDDBDiscId - A (1) + M 449:4 Table.duration - A (1) + M 872:4 Table.accuraterip_path - A (1) +whipper/image/image.py + C 115:0 ImageVerifyTask - B (6) + M 135:4 ImageVerifyTask.__init__ - B (6) + M 170:4 ImageVerifyTask.stop - A (5) + M 71:4 Image.setup - A (4) + C 33:0 Image - A (3) + C 190:0 ImageEncodeTask - A (3) + M 203:4 ImageEncodeTask.__init__ - A (3) + M 50:4 Image.__init__ - A (2) + M 61:4 Image.getRealPath - A (2) +whipper/image/cue.py + M 88:4 CueFile.parse - B (9) + M 169:4 CueFile.getTrackLength - A (4) + C 60:0 CueFile - A (3) + M 79:4 CueFile.__init__ - A (2) + C 198:0 File - A (2) + M 207:4 File.__init__ - A (2) + M 159:4 CueFile.message - A (1) + M 189:4 CueFile.getRealPath - A (1) + M 213:4 File.__repr__ - A (1) +whipper/extern/asyncsub.py + F 132:0 recv_some - B (8) + M 63:8 Popen._recv - B (8) + M 104:8 Popen._recv - B (7) + M 47:8 Popen.send - A (5) + M 88:8 Popen.send - A (5) + F 155:0 send_all - A (3) + C 23:0 Popen - A (3) + M 34:4 Popen.get_conn_maxsize - A (3) + M 25:4 Popen.recv - A (1) + M 28:4 Popen.recv_err - A (1) + M 31:4 Popen.send_recv - A (1) + M 41:4 Popen._close - A (1) +whipper/extern/task/task.py + F 39:0 _getExceptionMessage - B (6) + M 169:4 Task.setProgress - A (4) + M 252:4 Task._notifyListeners - A (4) + M 507:4 SyncRunner.run - A (4) + M 566:4 SyncRunner.progressed - A (4) + M 580:4 SyncRunner._output - A (4) + M 392:4 BaseMultiTask.stopped - A (3) + C 93:0 Task - A (2) + M 146:4 Task.stop - A (2) + M 183:4 Task.setDescription - A (2) + M 189:4 Task.setExceptionAndTraceback - A (2) + M 231:4 Task.schedule - A (2) + M 239:4 Task.addListener - A (2) + C 308:0 DummyTask - A (2) + M 313:4 DummyTask._wind - A (2) + M 337:4 BaseMultiTask.addTask - A (2) + M 347:4 BaseMultiTask.start - A (2) + M 365:4 BaseMultiTask.next - A (2) + C 500:0 SyncRunner - A (2) + M 534:4 SyncRunner._startWrap - A (2) + M 591:4 SyncRunner.described - A (2) + C 26:0 TaskException - A (1) + M 31:4 TaskException.__init__ - A (1) + C 73:0 LogStub - A (1) + M 77:4 LogStub.log - A (1) + M 80:4 LogStub.debug - A (1) + M 83:4 LogStub.info - A (1) + M 86:4 LogStub.warning - A (1) + M 89:4 LogStub.error - A (1) + M 125:4 Task.start - A (1) + M 217:4 Task.setException - A (1) + C 263:0 ITaskListener - A (1) + M 268:4 ITaskListener.progressed - A (1) + M 278:4 ITaskListener.described - A (1) + M 288:4 ITaskListener.started - A (1) + M 296:4 ITaskListener.stopped - A (1) + M 309:4 DummyTask.start - A (1) + C 323:0 BaseMultiTask - A (1) + M 333:4 BaseMultiTask.__init__ - A (1) + M 386:4 BaseMultiTask.started - A (1) + M 389:4 BaseMultiTask.progressed - A (1) + C 420:0 MultiSeparateTask - A (1) + M 428:4 MultiSeparateTask.start - A (1) + M 432:4 MultiSeparateTask.next - A (1) + M 439:4 MultiSeparateTask.progressed - A (1) + M 442:4 MultiSeparateTask.described - A (1) + C 447:0 MultiCombinedTask - A (1) + M 457:4 MultiCombinedTask.progressed - A (1) + M 460:4 MultiCombinedTask.stopped - A (1) + C 466:0 TaskRunner - A (1) + M 474:4 TaskRunner.run - A (1) + M 483:4 TaskRunner.schedule - A (1) + M 503:4 SyncRunner.__init__ - A (1) + M 547:4 SyncRunner.schedule - A (1) + M 595:4 SyncRunner.stopped - A (1) + M 600:4 SyncRunner._report - A (1) +whipper/common/task.py + M 57:4 PopenTask._read - B (8) + M 94:4 PopenTask._done - A (4) + M 35:4 PopenTask.start - A (3) + C 27:0 PopenTask - A (2) + C 15:0 SyncRunner - A (1) + C 19:0 LoggableTask - A (1) + C 23:0 LoggableMultiSeparateTask - A (1) + M 113:4 PopenTask.abort - A (1) + M 118:4 PopenTask.readbytesout - A (1) + M 126:4 PopenTask.readbyteserr - A (1) + M 134:4 PopenTask.done - A (1) + M 138:4 PopenTask.failed - A (1) + M 142:4 PopenTask.commandMissing - A (1) +whipper/common/renamer.py + M 44:4 Operator.load - B (7) + M 70:4 Operator.save - B (6) + C 27:0 Operator - A (3) + M 162:4 RenameFile.verify - A (3) + M 193:4 RenameInFile.do - A (3) + M 211:4 RenameInFile.__eq__ - A (3) + M 92:4 Operator.next - A (2) + M 177:4 RenameFile.__eq__ - A (2) + C 182:0 RenameInFile - A (2) + M 189:4 RenameInFile.verify - A (2) + M 29:4 Operator.__init__ - A (1) + M 36:4 Operator.addOperation - A (1) + M 89:4 Operator.start - A (1) + C 104:0 FileRenamer - A (1) + M 106:4 FileRenamer.addRename - A (1) + C 116:0 Operation - A (1) + M 118:4 Operation.verify - A (1) + M 126:4 Operation.do - A (1) + M 130:4 Operation.redo - A (1) + M 137:4 Operation.serialize - A (1) + M 146:4 Operation.deserialize - A (1) + C 156:0 RenameFile - A (1) + M 158:4 RenameFile.__init__ - A (1) + M 166:4 RenameFile.do - A (1) + M 169:4 RenameFile.serialize - A (1) + M 172:4 RenameFile.deserialize - A (1) + M 184:4 RenameInFile.__init__ - A (1) + M 203:4 RenameInFile.serialize - A (1) + M 206:4 RenameInFile.deserialize - A (1) +whipper/common/program.py + M 314:4 Program.getMusicBrainz - D (27) + M 208:4 Program.getPath - B (10) + M 458:4 Program.getTagList - B (9) + M 621:4 Program.verifyImage - B (6) + C 41:0 Program - A (5) + M 98:4 Program.getFastToc - A (5) + M 129:4 Program.getTable - A (5) + M 552:4 Program.ripTrack - A (5) + M 655:4 Program.write_m3u - A (5) + M 289:4 Program.getCDDB - A (4) + M 72:4 Program.__init__ - A (3) + M 200:4 Program.addDisambiguation - A (3) + M 533:4 Program.verifyTrack - A (3) + M 93:4 Program.setWorkingDirectory - A (2) + M 179:4 Program.getRipResult - A (2) + M 518:4 Program.getHTOA - A (2) + M 676:4 Program.writeCue - A (2) + M 197:4 Program.saveRipResult - A (1) + M 616:4 Program.retagImage - A (1) + M 689:4 Program.writeLog - A (1) +whipper/common/path.py + M 43:4 PathFilter.filter - A (5) + C 24:0 PathFilter - A (3) + M 37:4 PathFilter.__init__ - A (1) +whipper/common/mbngs.py + F 164:0 _getMetadata - C (20) + F 283:0 musicbrainz - B (8) + M 138:4 _Credit.joiner - A (4) + F 108:0 _record - A (2) + C 135:0 _Credit - A (2) + C 32:0 MusicBrainzException - A (1) + M 34:4 MusicBrainzException.__init__ - A (1) + C 39:0 NotFoundException - A (1) + M 41:4 NotFoundException.__str__ - A (1) + C 45:0 TrackMetadata - A (1) + C 54:0 DiscMetadata - A (1) + M 104:4 DiscMetadata.__init__ - A (1) + M 152:4 _Credit.getSortName - A (1) + M 155:4 _Credit.getName - A (1) + M 159:4 _Credit.getIds - A (1) +whipper/common/encode.py + M 83:4 TaggingTask._tag - A (2) + C 33:0 SoxPeakTask - A (1) + M 36:4 SoxPeakTask.__init__ - A (1) + M 40:4 SoxPeakTask.start - A (1) + M 44:4 SoxPeakTask._sox_peak - A (1) + C 49:0 FlacEncodeTask - A (1) + M 52:4 FlacEncodeTask.__init__ - A (1) + M 58:4 FlacEncodeTask.start - A (1) + M 62:4 FlacEncodeTask._flac_encode - A (1) + C 67:0 TaggingTask - A (1) + M 75:4 TaggingTask.__init__ - A (1) + M 79:4 TaggingTask.start - A (1) +whipper/common/drive.py + F 34:0 getAllDevicePaths - A (3) + F 53:0 _getAllDevicePathsStatic - A (3) + F 27:0 _listify - A (2) + F 63:0 getDeviceInfo - A (2) + F 43:0 _getAllDevicePathsPyCdio - A (1) +whipper/common/directory.py + F 33:0 cache_path - A (4) + F 43:0 data_path - A (4) + F 25:0 config_path - A (3) +whipper/common/config.py + M 142:4 Config._findDriveSection - B (7) + M 78:4 Config.get_musicbrainz_server - A (4) + M 44:4 Config.open - A (3) + M 167:4 Config._findOrCreateDriveSection - A (3) + C 35:0 Config - A (2) + M 37:4 Config.__init__ - A (2) + M 62:4 Config._getter - A (2) + M 102:4 Config.getReadOffset - A (2) + M 133:4 Config.getDefeatsCache - A (2) + M 53:4 Config.write - A (1) + M 70:4 Config.get - A (1) + M 73:4 Config.getboolean - A (1) + M 87:4 Config.setReadOffset - A (1) + M 118:4 Config.setDefeatsCache - A (1) +whipper/common/common.py + F 185:0 getRealPath - B (9) + F 150:0 shrinkPath - A (4) + M 290:4 VersionGetter.get - A (4) + F 94:0 formatTime - A (3) + C 268:0 VersionGetter - A (3) + F 53:0 msfToFrames - A (2) + F 240:0 getRelativePath - A (2) + F 71:0 framesToMSF - A (1) + F 81:0 framesToHMSF - A (1) + C 39:0 EjectError - A (1) + M 48:4 EjectError.__init__ - A (1) + C 132:0 MissingDependencyException - A (1) + M 135:4 MissingDependencyException.__init__ - A (1) + C 140:0 EmptyError - A (1) + C 144:0 MissingFrames - A (1) + M 284:4 VersionGetter.__init__ - A (1) +whipper/common/checksum.py + M 48:4 CRC32Task._crc32 - A (2) + C 36:0 CRC32Task - A (1) + M 40:4 CRC32Task.__init__ - A (1) + M 44:4 CRC32Task.start - A (1) +whipper/common/cache.py + M 58:4 Persister.persist - B (6) + M 217:4 TableCache.get - A (5) + M 96:4 Persister._unpickle - A (4) + M 139:4 PersistedCache.get - A (4) + C 201:0 TableCache - A (4) + C 34:0 Persister - A (3) + C 123:0 PersistedCache - A (3) + M 128:4 PersistedCache.__init__ - A (3) + M 166:4 ResultCache.getRipResult - A (3) + C 160:0 ResultCache - A (2) + M 162:4 ResultCache.__init__ - A (2) + M 195:4 ResultCache.getIds - A (2) + M 209:4 TableCache.__init__ - A (2) + M 52:4 Persister.__init__ - A (1) + M 118:4 Persister.delete - A (1) + M 136:4 PersistedCache._getPath - A (1) +whipper/common/accurip.py + F 263:0 print_report - C (11) + F 207:0 _match_responses - B (8) + F 239:0 verify_result - A (5) + F 99:0 calculate_checksums - A (4) + F 171:0 get_db_entry - A (4) + F 197:0 _assign_checksums_and_confidences - A (4) + F 143:0 _download_entry - A (3) + F 159:0 _save_entry - A (3) + F 89:0 _split_responses - A (2) + C 43:0 _AccurateRipResponse - A (2) + M 63:4 _AccurateRipResponse.__init__ - A (2) + C 39:0 EntryNotFound - A (1) + M 79:4 _AccurateRipResponse.__eq__ - A (1) +whipper/command/offset.py + M 78:4 Find.do - C (14) + C 52:0 Find - A (4) + M 66:4 Find.handle_arguments - A (3) + M 207:4 Find._foundOffset - A (2) + M 59:4 Find.add_arguments - A (1) + M 179:4 Find._arcs - A (1) + C 224:0 Offset - A (1) +whipper/command/main.py + F 21:0 main - C (13) + M 107:4 Whipper.handle_arguments - A (3) + C 74:0 Whipper - A (2) + M 90:4 Whipper.add_arguments - A (1) +whipper/command/image.py + M 60:4 Retag.do - A (5) + M 117:4 Verify.do - A (5) + C 35:0 Retag - A (3) + C 107:0 Verify - A (3) + M 41:4 Retag.add_arguments - A (1) + M 113:4 Verify.add_arguments - A (1) + C 144:0 Image - A (1) +whipper/command/drive.py + C 66:0 List - B (7) + M 70:4 List.do - B (7) + C 32:0 Analyze - A (4) + M 37:4 Analyze.do - A (4) + C 119:0 Drive - A (1) +whipper/command/debug.py + M 230:4 MusicBrainzNGS.do - B (6) + C 56:0 RCList - A (5) + M 60:4 RCList.do - A (5) + C 218:0 MusicBrainzNGS - A (4) + C 32:0 RCCue - A (3) + M 36:4 RCCue.do - A (3) + M 95:4 RCLog.do - A (3) + M 157:4 Encode.do - A (3) + M 199:4 Tag.do - A (3) + C 80:0 RCLog - A (2) + C 127:0 Checksum - A (2) + M 135:4 Checksum.do - A (2) + C 147:0 Encode - A (2) + C 191:0 Tag - A (2) + M 85:4 RCLog.add_arguments - A (1) + C 116:0 ResultCache - A (1) + M 131:4 Checksum.add_arguments - A (1) + M 151:4 Encode.add_arguments - A (1) + M 195:4 Tag.add_arguments - A (1) + M 226:4 MusicBrainzNGS.add_arguments - A (1) + C 259:0 CDParanoia - A (1) + M 263:4 CDParanoia.do - A (1) + C 269:0 CDRDAO - A (1) + M 273:4 CDRDAO.do - A (1) + C 279:0 Version - A (1) + C 289:0 Debug - A (1) +whipper/command/cd.py + M 91:4 _CD.do - C (17) + M 319:4 Rip.doCommand - B (7) + C 69:0 _CD - B (6) + C 211:0 Rip - A (5) + M 291:4 Rip.handle_arguments - A (5) + M 230:4 Rip.add_arguments - A (3) + M 72:4 _CD.add_arguments - A (1) + M 195:4 _CD.doCommand - A (1) + C 199:0 Info - A (1) + M 207:4 Info.add_arguments - A (1) + C 500:0 CD - A (1) +whipper/command/basecommand.py + M 53:4 BaseCommand.__init__ - B (9) + C 28:0 BaseCommand - A (3) + M 105:4 BaseCommand.init_parser - A (3) + M 126:4 BaseCommand.epilog - A (2) + M 117:4 BaseCommand.add_arguments - A (1) + M 120:4 BaseCommand.handle_arguments - A (1) + M 123:4 BaseCommand.do - A (1) +whipper/command/accurip.py + M 40:4 Show.do - C (12) + C 30:0 Show - B (7) + M 36:4 Show.add_arguments - A (1) + C 90:0 AccuRip - A (1) + +434 blocks (classes, functions, methods) analyzed. +Average complexity: A (2.85023041475) diff --git a/misc/radon_reports/radon_mi.json b/misc/radon_reports/radon_mi.json new file mode 100644 index 00000000..694de43e --- /dev/null +++ b/misc/radon_reports/radon_mi.json @@ -0,0 +1 @@ +{"whipper/__init__.py": {"mi": 69.32314736945543, "rank": "A"}, "whipper/image/table.py": {"mi": 36.38710913480764, "rank": "A"}, "whipper/common/task.py": {"mi": 65.83073540635783, "rank": "A"}, "whipper/common/common.py": {"mi": 58.19024283957668, "rank": "A"}, "whipper/common/checksum.py": {"mi": 89.21822698513452, "rank": "A"}, "whipper/common/directory.py": {"mi": 86.89975970546708, "rank": "A"}, "whipper/common/renamer.py": {"mi": 64.99770902754665, "rank": "A"}, "whipper/image/toc.py": {"mi": 52.16238829950187, "rank": "A"}, "whipper/result/__init__.py": {"mi": 100.0, "rank": "A"}, "whipper/common/drive.py": {"mi": 90.75976953355465, "rank": "A"}, "whipper/program/flac.py": {"mi": 100.0, "rank": "A"}, "whipper/common/cache.py": {"mi": 64.19417569953121, "rank": "A"}, "whipper/command/__init__.py": {"mi": 100.0, "rank": "A"}, "whipper/common/__init__.py": {"mi": 100.0, "rank": "A"}, "whipper/program/arc.py": {"mi": 51.611919730245745, "rank": "A"}, "whipper/common/mbngs.py": {"mi": 57.9686246751526, "rank": "A"}, "whipper/command/image.py": {"mi": 67.1387480629294, "rank": "A"}, "whipper/command/basecommand.py": {"mi": 73.90201579323883, "rank": "A"}, "whipper/command/accurip.py": {"mi": 74.03684350145554, "rank": "A"}, "whipper/common/path.py": {"mi": 100.0, "rank": "A"}, "whipper/common/config.py": {"mi": 65.29740853557456, "rank": "A"}, "whipper/common/encode.py": {"mi": 88.09595555792843, "rank": "A"}, "whipper/extern/asyncsub.py": {"mi": 39.9028972425382, "rank": "A"}, "whipper/program/__init__.py": {"mi": 100.0, "rank": "A"}, "whipper/__main__.py": {"mi": 100.0, "rank": "A"}, "whipper/extern/__init__.py": {"mi": 100.0, "rank": "A"}, "whipper/command/main.py": {"mi": 60.224912112868566, "rank": "A"}, "whipper/program/sox.py": {"mi": 94.4811529524249, "rank": "A"}, "whipper/common/program.py": {"mi": 38.4799071186587, "rank": "A"}, "whipper/command/drive.py": {"mi": 71.03790224962133, "rank": "A"}, "whipper/result/result.py": {"mi": 81.25685459109454, "rank": "A"}, "whipper/extern/task/__init__.py": {"mi": 100.0, "rank": "A"}, "whipper/image/image.py": {"mi": 62.72534120058029, "rank": "A"}, "whipper/program/utils.py": {"mi": 88.18865793232631, "rank": "A"}, "whipper/extern/task/task.py": {"mi": 50.46636705893654, "rank": "A"}, "whipper/program/cdrdao.py": {"mi": 75.82817118502996, "rank": "A"}, "whipper/command/offset.py": {"mi": 54.988268477793056, "rank": "A"}, "whipper/image/__init__.py": {"mi": 100.0, "rank": "A"}, "whipper/program/cdparanoia.py": {"mi": 43.60606445875359, "rank": "A"}, "whipper/command/debug.py": {"mi": 48.61706439000409, "rank": "A"}, "whipper/program/soxi.py": {"mi": 87.24528637704343, "rank": "A"}, "whipper/result/logger.py": {"mi": 53.55047902441077, "rank": "A"}, "whipper/image/cue.py": {"mi": 66.61480487529172, "rank": "A"}, "whipper/common/accurip.py": {"mi": 55.59141967567796, "rank": "A"}, "whipper/command/cd.py": {"mi": 41.31178463454205, "rank": "A"}} diff --git a/misc/radon_reports/radon_mi.txt b/misc/radon_reports/radon_mi.txt new file mode 100644 index 00000000..aaf3fed3 --- /dev/null +++ b/misc/radon_reports/radon_mi.txt @@ -0,0 +1,47 @@ +$ radon mi -s -i test whipper/ + +whipper/__main__.py - A (100.00) +whipper/__init__.py - A (69.32) +whipper/result/result.py - A (81.26) +whipper/result/logger.py - A (53.55) +whipper/result/__init__.py - A (100.00) +whipper/program/utils.py - A (88.19) +whipper/program/soxi.py - A (87.25) +whipper/program/sox.py - A (94.48) +whipper/program/flac.py - A (100.00) +whipper/program/cdrdao.py - A (75.83) +whipper/program/cdparanoia.py - A (43.61) +whipper/program/arc.py - A (51.61) +whipper/program/__init__.py - A (100.00) +whipper/image/toc.py - A (52.16) +whipper/image/table.py - A (36.39) +whipper/image/image.py - A (62.73) +whipper/image/cue.py - A (66.61) +whipper/image/__init__.py - A (100.00) +whipper/extern/asyncsub.py - A (39.90) +whipper/extern/__init__.py - A (100.00) +whipper/extern/task/task.py - A (50.47) +whipper/extern/task/__init__.py - A (100.00) +whipper/common/task.py - A (65.83) +whipper/common/renamer.py - A (65.00) +whipper/common/program.py - A (38.48) +whipper/common/path.py - A (100.00) +whipper/common/mbngs.py - A (57.97) +whipper/common/encode.py - A (88.10) +whipper/common/drive.py - A (90.76) +whipper/common/directory.py - A (86.90) +whipper/common/config.py - A (65.30) +whipper/common/common.py - A (58.19) +whipper/common/checksum.py - A (89.22) +whipper/common/cache.py - A (64.19) +whipper/common/accurip.py - A (55.59) +whipper/common/__init__.py - A (100.00) +whipper/command/offset.py - A (54.99) +whipper/command/main.py - A (60.22) +whipper/command/image.py - A (67.14) +whipper/command/drive.py - A (71.04) +whipper/command/debug.py - A (48.62) +whipper/command/cd.py - A (41.31) +whipper/command/basecommand.py - A (73.90) +whipper/command/accurip.py - A (74.04) +whipper/command/__init__.py - A (100.00) diff --git a/misc/radon_reports/radon_raw.json b/misc/radon_reports/radon_raw.json new file mode 100644 index 00000000..47979459 --- /dev/null +++ b/misc/radon_reports/radon_raw.json @@ -0,0 +1 @@ +{"whipper/__init__.py": {"loc": 14, "lloc": 11, "single_comments": 0, "sloc": 12, "multi": 0, "comments": 0, "blank": 2}, "whipper/image/table.py": {"loc": 892, "lloc": 400, "single_comments": 93, "sloc": 449, "multi": 175, "comments": 96, "blank": 175}, "whipper/common/task.py": {"loc": 144, "lloc": 79, "single_comments": 12, "sloc": 86, "multi": 8, "comments": 8, "blank": 38}, "whipper/common/common.py": {"loc": 308, "lloc": 136, "single_comments": 33, "sloc": 147, "multi": 57, "comments": 33, "blank": 71}, "whipper/common/checksum.py": {"loc": 64, "lloc": 28, "single_comments": 21, "sloc": 28, "multi": 0, "comments": 21, "blank": 15}, "whipper/common/directory.py": {"loc": 51, "lloc": 21, "single_comments": 17, "sloc": 25, "multi": 0, "comments": 17, "blank": 9}, "whipper/common/renamer.py": {"loc": 214, "lloc": 103, "single_comments": 25, "sloc": 107, "multi": 29, "comments": 21, "blank": 53}, "whipper/image/toc.py": {"loc": 467, "lloc": 202, "single_comments": 68, "sloc": 253, "multi": 62, "comments": 70, "blank": 84}, "whipper/result/__init__.py": {"loc": 0, "lloc": 0, "single_comments": 0, "sloc": 0, "multi": 0, "comments": 0, "blank": 0}, "whipper/common/drive.py": {"loc": 71, "lloc": 31, "single_comments": 21, "sloc": 31, "multi": 0, "comments": 21, "blank": 19}, "whipper/program/flac.py": {"loc": 25, "lloc": 9, "single_comments": 2, "sloc": 10, "multi": 8, "comments": 2, "blank": 5}, "whipper/common/cache.py": {"loc": 237, "lloc": 108, "single_comments": 32, "sloc": 113, "multi": 38, "comments": 32, "blank": 54}, "whipper/command/__init__.py": {"loc": 0, "lloc": 0, "single_comments": 0, "sloc": 0, "multi": 0, "comments": 0, "blank": 0}, "whipper/common/__init__.py": {"loc": 0, "lloc": 0, "single_comments": 0, "sloc": 0, "multi": 0, "comments": 0, "blank": 0}, "whipper/program/arc.py": {"loc": 58, "lloc": 39, "single_comments": 0, "sloc": 45, "multi": 0, "comments": 0, "blank": 13}, "whipper/common/mbngs.py": {"loc": 349, "lloc": 166, "single_comments": 47, "sloc": 178, "multi": 54, "comments": 47, "blank": 70}, "whipper/command/image.py": {"loc": 154, "lloc": 79, "single_comments": 19, "sloc": 109, "multi": 0, "comments": 20, "blank": 26}, "whipper/command/basecommand.py": {"loc": 130, "lloc": 60, "single_comments": 16, "sloc": 73, "multi": 14, "comments": 18, "blank": 27}, "whipper/command/accurip.py": {"loc": 98, "lloc": 46, "single_comments": 19, "sloc": 58, "multi": 0, "comments": 19, "blank": 21}, "whipper/common/path.py": {"loc": 69, "lloc": 24, "single_comments": 20, "sloc": 26, "multi": 10, "comments": 20, "blank": 13}, "whipper/common/config.py": {"loc": 180, "lloc": 92, "single_comments": 21, "sloc": 99, "multi": 19, "comments": 21, "blank": 41}, "whipper/common/encode.py": {"loc": 91, "lloc": 44, "single_comments": 21, "sloc": 44, "multi": 0, "comments": 21, "blank": 26}, "whipper/extern/asyncsub.py": {"loc": 176, "lloc": 136, "single_comments": 3, "sloc": 136, "multi": 0, "comments": 4, "blank": 37}, "whipper/program/__init__.py": {"loc": 0, "lloc": 0, "single_comments": 0, "sloc": 0, "multi": 0, "comments": 0, "blank": 0}, "whipper/__main__.py": {"loc": 14, "lloc": 7, "single_comments": 3, "sloc": 7, "multi": 0, "comments": 3, "blank": 4}, "whipper/extern/__init__.py": {"loc": 0, "lloc": 0, "single_comments": 0, "sloc": 0, "multi": 0, "comments": 0, "blank": 0}, "whipper/command/main.py": {"loc": 113, "lloc": 68, "single_comments": 6, "sloc": 92, "multi": 0, "comments": 7, "blank": 15}, "whipper/program/sox.py": {"loc": 31, "lloc": 17, "single_comments": 3, "sloc": 17, "multi": 6, "comments": 3, "blank": 5}, "whipper/common/program.py": {"loc": 698, "lloc": 363, "single_comments": 34, "sloc": 416, "multi": 139, "comments": 36, "blank": 109}, "whipper/command/drive.py": {"loc": 125, "lloc": 64, "single_comments": 18, "sloc": 83, "multi": 0, "comments": 20, "blank": 24}, "whipper/result/result.py": {"loc": 158, "lloc": 57, "single_comments": 21, "sloc": 69, "multi": 35, "comments": 20, "blank": 33}, "whipper/extern/task/__init__.py": {"loc": 0, "lloc": 0, "single_comments": 0, "sloc": 0, "multi": 0, "comments": 0, "blank": 0}, "whipper/image/image.py": {"loc": 235, "lloc": 118, "single_comments": 22, "sloc": 125, "multi": 41, "comments": 24, "blank": 47}, "whipper/program/utils.py": {"loc": 42, "lloc": 16, "single_comments": 0, "sloc": 16, "multi": 14, "comments": 0, "blank": 12}, "whipper/extern/task/task.py": {"loc": 608, "lloc": 282, "single_comments": 54, "sloc": 296, "multi": 122, "comments": 52, "blank": 136}, "whipper/program/cdrdao.py": {"loc": 122, "lloc": 52, "single_comments": 8, "sloc": 57, "multi": 34, "comments": 8, "blank": 23}, "whipper/command/offset.py": {"loc": 231, "lloc": 116, "single_comments": 28, "sloc": 161, "multi": 0, "comments": 28, "blank": 42}, "whipper/image/__init__.py": {"loc": 0, "lloc": 0, "single_comments": 0, "sloc": 0, "multi": 0, "comments": 0, "blank": 0}, "whipper/program/cdparanoia.py": {"loc": 636, "lloc": 324, "single_comments": 66, "sloc": 364, "multi": 89, "comments": 78, "blank": 117}, "whipper/command/debug.py": {"loc": 300, "lloc": 170, "single_comments": 22, "sloc": 202, "multi": 0, "comments": 23, "blank": 76}, "whipper/program/soxi.py": {"loc": 60, "lloc": 28, "single_comments": 0, "sloc": 28, "multi": 16, "comments": 0, "blank": 16}, "whipper/result/logger.py": {"loc": 256, "lloc": 150, "single_comments": 29, "sloc": 169, "multi": 23, "comments": 29, "blank": 35}, "whipper/image/cue.py": {"loc": 214, "lloc": 91, "single_comments": 27, "sloc": 111, "multi": 33, "comments": 29, "blank": 43}, "whipper/common/accurip.py": {"loc": 303, "lloc": 146, "single_comments": 24, "sloc": 178, "multi": 50, "comments": 24, "blank": 51}, "whipper/command/cd.py": {"loc": 508, "lloc": 229, "single_comments": 42, "sloc": 390, "multi": 0, "comments": 42, "blank": 76}} diff --git a/misc/radon_reports/radon_raw.txt b/misc/radon_reports/radon_raw.txt new file mode 100644 index 00000000..77526104 --- /dev/null +++ b/misc/radon_reports/radon_raw.txt @@ -0,0 +1,554 @@ +$ radon raw -s -i test whipper/ + +whipper/__main__.py + LOC: 14 + LLOC: 7 + SLOC: 7 + Comments: 3 + Single comments: 3 + Multi: 0 + Blank: 4 + - Comment Stats + (C % L): 21% + (C % S): 43% + (C + M % L): 21% +whipper/__init__.py + LOC: 14 + LLOC: 11 + SLOC: 12 + Comments: 0 + Single comments: 0 + Multi: 0 + Blank: 2 + - Comment Stats + (C % L): 0% + (C % S): 0% + (C + M % L): 0% +whipper/result/result.py + LOC: 158 + LLOC: 57 + SLOC: 69 + Comments: 20 + Single comments: 21 + Multi: 35 + Blank: 33 + - Comment Stats + (C % L): 13% + (C % S): 29% + (C + M % L): 35% +whipper/result/logger.py + LOC: 256 + LLOC: 150 + SLOC: 169 + Comments: 29 + Single comments: 29 + Multi: 23 + Blank: 35 + - Comment Stats + (C % L): 11% + (C % S): 17% + (C + M % L): 20% +whipper/result/__init__.py + LOC: 0 + LLOC: 0 + SLOC: 0 + Comments: 0 + Single comments: 0 + Multi: 0 + Blank: 0 + - Comment Stats + (C % L): 0% + (C % S): 0% + (C + M % L): 0% +whipper/program/utils.py + LOC: 42 + LLOC: 16 + SLOC: 16 + Comments: 0 + Single comments: 0 + Multi: 14 + Blank: 12 + - Comment Stats + (C % L): 0% + (C % S): 0% + (C + M % L): 33% +whipper/program/soxi.py + LOC: 60 + LLOC: 28 + SLOC: 28 + Comments: 0 + Single comments: 0 + Multi: 16 + Blank: 16 + - Comment Stats + (C % L): 0% + (C % S): 0% + (C + M % L): 27% +whipper/program/sox.py + LOC: 31 + LLOC: 17 + SLOC: 17 + Comments: 3 + Single comments: 3 + Multi: 6 + Blank: 5 + - Comment Stats + (C % L): 10% + (C % S): 18% + (C + M % L): 29% +whipper/program/flac.py + LOC: 25 + LLOC: 9 + SLOC: 10 + Comments: 2 + Single comments: 2 + Multi: 8 + Blank: 5 + - Comment Stats + (C % L): 8% + (C % S): 20% + (C + M % L): 40% +whipper/program/cdrdao.py + LOC: 122 + LLOC: 52 + SLOC: 57 + Comments: 8 + Single comments: 8 + Multi: 34 + Blank: 23 + - Comment Stats + (C % L): 7% + (C % S): 14% + (C + M % L): 34% +whipper/program/cdparanoia.py + LOC: 636 + LLOC: 324 + SLOC: 364 + Comments: 78 + Single comments: 66 + Multi: 89 + Blank: 117 + - Comment Stats + (C % L): 12% + (C % S): 21% + (C + M % L): 26% +whipper/program/arc.py + LOC: 58 + LLOC: 39 + SLOC: 45 + Comments: 0 + Single comments: 0 + Multi: 0 + Blank: 13 + - Comment Stats + (C % L): 0% + (C % S): 0% + (C + M % L): 0% +whipper/program/__init__.py + LOC: 0 + LLOC: 0 + SLOC: 0 + Comments: 0 + Single comments: 0 + Multi: 0 + Blank: 0 + - Comment Stats + (C % L): 0% + (C % S): 0% + (C + M % L): 0% +whipper/image/toc.py + LOC: 467 + LLOC: 202 + SLOC: 253 + Comments: 70 + Single comments: 68 + Multi: 62 + Blank: 84 + - Comment Stats + (C % L): 15% + (C % S): 28% + (C + M % L): 28% +whipper/image/table.py + LOC: 892 + LLOC: 400 + SLOC: 449 + Comments: 96 + Single comments: 93 + Multi: 175 + Blank: 175 + - Comment Stats + (C % L): 11% + (C % S): 21% + (C + M % L): 30% +whipper/image/image.py + LOC: 235 + LLOC: 118 + SLOC: 125 + Comments: 24 + Single comments: 22 + Multi: 41 + Blank: 47 + - Comment Stats + (C % L): 10% + (C % S): 19% + (C + M % L): 28% +whipper/image/cue.py + LOC: 214 + LLOC: 91 + SLOC: 111 + Comments: 29 + Single comments: 27 + Multi: 33 + Blank: 43 + - Comment Stats + (C % L): 14% + (C % S): 26% + (C + M % L): 29% +whipper/image/__init__.py + LOC: 0 + LLOC: 0 + SLOC: 0 + Comments: 0 + Single comments: 0 + Multi: 0 + Blank: 0 + - Comment Stats + (C % L): 0% + (C % S): 0% + (C + M % L): 0% +whipper/extern/asyncsub.py + LOC: 176 + LLOC: 136 + SLOC: 136 + Comments: 4 + Single comments: 3 + Multi: 0 + Blank: 37 + - Comment Stats + (C % L): 2% + (C % S): 3% + (C + M % L): 2% +whipper/extern/__init__.py + LOC: 0 + LLOC: 0 + SLOC: 0 + Comments: 0 + Single comments: 0 + Multi: 0 + Blank: 0 + - Comment Stats + (C % L): 0% + (C % S): 0% + (C + M % L): 0% +whipper/extern/task/task.py + LOC: 608 + LLOC: 282 + SLOC: 296 + Comments: 52 + Single comments: 54 + Multi: 122 + Blank: 136 + - Comment Stats + (C % L): 9% + (C % S): 18% + (C + M % L): 29% +whipper/extern/task/__init__.py + LOC: 0 + LLOC: 0 + SLOC: 0 + Comments: 0 + Single comments: 0 + Multi: 0 + Blank: 0 + - Comment Stats + (C % L): 0% + (C % S): 0% + (C + M % L): 0% +whipper/common/task.py + LOC: 144 + LLOC: 79 + SLOC: 86 + Comments: 8 + Single comments: 12 + Multi: 8 + Blank: 38 + - Comment Stats + (C % L): 6% + (C % S): 9% + (C + M % L): 11% +whipper/common/renamer.py + LOC: 214 + LLOC: 103 + SLOC: 107 + Comments: 21 + Single comments: 25 + Multi: 29 + Blank: 53 + - Comment Stats + (C % L): 10% + (C % S): 20% + (C + M % L): 23% +whipper/common/program.py + LOC: 698 + LLOC: 363 + SLOC: 416 + Comments: 36 + Single comments: 34 + Multi: 139 + Blank: 109 + - Comment Stats + (C % L): 5% + (C % S): 9% + (C + M % L): 25% +whipper/common/path.py + LOC: 69 + LLOC: 24 + SLOC: 26 + Comments: 20 + Single comments: 20 + Multi: 10 + Blank: 13 + - Comment Stats + (C % L): 29% + (C % S): 77% + (C + M % L): 43% +whipper/common/mbngs.py + LOC: 349 + LLOC: 166 + SLOC: 178 + Comments: 47 + Single comments: 47 + Multi: 54 + Blank: 70 + - Comment Stats + (C % L): 13% + (C % S): 26% + (C + M % L): 29% +whipper/common/encode.py + LOC: 91 + LLOC: 44 + SLOC: 44 + Comments: 21 + Single comments: 21 + Multi: 0 + Blank: 26 + - Comment Stats + (C % L): 23% + (C % S): 48% + (C + M % L): 23% +whipper/common/drive.py + LOC: 71 + LLOC: 31 + SLOC: 31 + Comments: 21 + Single comments: 21 + Multi: 0 + Blank: 19 + - Comment Stats + (C % L): 30% + (C % S): 68% + (C + M % L): 30% +whipper/common/directory.py + LOC: 51 + LLOC: 21 + SLOC: 25 + Comments: 17 + Single comments: 17 + Multi: 0 + Blank: 9 + - Comment Stats + (C % L): 33% + (C % S): 68% + (C + M % L): 33% +whipper/common/config.py + LOC: 180 + LLOC: 92 + SLOC: 99 + Comments: 21 + Single comments: 21 + Multi: 19 + Blank: 41 + - Comment Stats + (C % L): 12% + (C % S): 21% + (C + M % L): 22% +whipper/common/common.py + LOC: 308 + LLOC: 136 + SLOC: 147 + Comments: 33 + Single comments: 33 + Multi: 57 + Blank: 71 + - Comment Stats + (C % L): 11% + (C % S): 22% + (C + M % L): 29% +whipper/common/checksum.py + LOC: 64 + LLOC: 28 + SLOC: 28 + Comments: 21 + Single comments: 21 + Multi: 0 + Blank: 15 + - Comment Stats + (C % L): 33% + (C % S): 75% + (C + M % L): 33% +whipper/common/cache.py + LOC: 237 + LLOC: 108 + SLOC: 113 + Comments: 32 + Single comments: 32 + Multi: 38 + Blank: 54 + - Comment Stats + (C % L): 14% + (C % S): 28% + (C + M % L): 30% +whipper/common/accurip.py + LOC: 303 + LLOC: 146 + SLOC: 178 + Comments: 24 + Single comments: 24 + Multi: 50 + Blank: 51 + - Comment Stats + (C % L): 8% + (C % S): 13% + (C + M % L): 24% +whipper/common/__init__.py + LOC: 0 + LLOC: 0 + SLOC: 0 + Comments: 0 + Single comments: 0 + Multi: 0 + Blank: 0 + - Comment Stats + (C % L): 0% + (C % S): 0% + (C + M % L): 0% +whipper/command/offset.py + LOC: 231 + LLOC: 116 + SLOC: 161 + Comments: 28 + Single comments: 28 + Multi: 0 + Blank: 42 + - Comment Stats + (C % L): 12% + (C % S): 17% + (C + M % L): 12% +whipper/command/main.py + LOC: 113 + LLOC: 68 + SLOC: 92 + Comments: 7 + Single comments: 6 + Multi: 0 + Blank: 15 + - Comment Stats + (C % L): 6% + (C % S): 8% + (C + M % L): 6% +whipper/command/image.py + LOC: 154 + LLOC: 79 + SLOC: 109 + Comments: 20 + Single comments: 19 + Multi: 0 + Blank: 26 + - Comment Stats + (C % L): 13% + (C % S): 18% + (C + M % L): 13% +whipper/command/drive.py + LOC: 125 + LLOC: 64 + SLOC: 83 + Comments: 20 + Single comments: 18 + Multi: 0 + Blank: 24 + - Comment Stats + (C % L): 16% + (C % S): 24% + (C + M % L): 16% +whipper/command/debug.py + LOC: 300 + LLOC: 170 + SLOC: 202 + Comments: 23 + Single comments: 22 + Multi: 0 + Blank: 76 + - Comment Stats + (C % L): 8% + (C % S): 11% + (C + M % L): 8% +whipper/command/cd.py + LOC: 508 + LLOC: 229 + SLOC: 390 + Comments: 42 + Single comments: 42 + Multi: 0 + Blank: 76 + - Comment Stats + (C % L): 8% + (C % S): 11% + (C + M % L): 8% +whipper/command/basecommand.py + LOC: 130 + LLOC: 60 + SLOC: 73 + Comments: 18 + Single comments: 16 + Multi: 14 + Blank: 27 + - Comment Stats + (C % L): 14% + (C % S): 25% + (C + M % L): 25% +whipper/command/accurip.py + LOC: 98 + LLOC: 46 + SLOC: 58 + Comments: 19 + Single comments: 19 + Multi: 0 + Blank: 21 + - Comment Stats + (C % L): 19% + (C % S): 33% + (C + M % L): 19% +whipper/command/__init__.py + LOC: 0 + LLOC: 0 + SLOC: 0 + Comments: 0 + Single comments: 0 + Multi: 0 + Blank: 0 + - Comment Stats + (C % L): 0% + (C % S): 0% + (C + M % L): 0% +** Total ** + LOC: 8446 + LLOC: 4112 + SLOC: 4810 + Comments: 917 + Single comments: 897 + Multi: 1076 + Blank: 1663 + - Comment Stats + (C % L): 11% + (C % S): 19% + (C + M % L): 24% diff --git a/whipper/__init__.py b/whipper/__init__.py index f745c484..9bff0269 100644 --- a/whipper/__init__.py +++ b/whipper/__init__.py @@ -2,7 +2,7 @@ import os import sys -__version__ = '0.5.1' +__version__ = '0.6.0' level = logging.WARNING if 'WHIPPER_DEBUG' in os.environ: