$ 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)
