ViUR-Core Coverage Report: 17%

Files Functions Classes

coverage.py v7.12.0, created at 2025-11-24 12:24 +0000

      Statements   Branches   Total
File function   coverage statements missing excluded   coverage branches partial   coverage
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / __init__.py setDefaultLanguage   0% 4 4 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / __init__.py setDefaultDomainLanguage   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / __init__.py __build_app   0% 55 55 0   0% 42 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / __init__.py setup   0% 57 57 0   0% 34 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / __init__.py app   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / __init__.py __getattr__   29% 7 5 0   50% 2 1   33%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / __init__.py (no function)   97% 31 1 0   50% 4 2   91%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / __init__.py __generate_deprecation_constructor   100% 2 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / __init__.py __generate_deprecation_constructor.__init__   0% 4 4 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / __init__.py (no function)   100% 40 0 0   100% 6 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py setSystemInitialized   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py getSystemInitialized   100% 1 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py ReadFromClientError.__post_init__   100% 2 0 0   100% 2 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py ReadFromClientError.__str__   100% 1 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py ReadFromClientException.__init__   0% 8 8 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py CloneCustomFunc.__call__   100% 0 0 1   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py CloneBehavior.__post_init__   50% 4 2 0   50% 4 2   50%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone.__init__   59% 73 30 0   50% 56 18   55%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone.__set_name__   100% 2 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone.setSystemInitialized   0% 4 4 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone.isInvalid   100% 1 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone.isEmpty   100% 1 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone.getDefaultValue   0% 19 19 0   0% 20 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone.getEmptyValue   100% 1 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone.__setattr__   67% 3 1 0   50% 2 1   60%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone.collectRawClientData   20% 86 69 0   23% 56 7   21%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone.parseSubfieldsFromClient   100% 1 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone.singleValueFromClient   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone.fromClient   68% 76 24 0   60% 58 11   65%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone._get_single_destinct_hash   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone._get_destinct_hash   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone._validate_multiple_contraints   0% 10 10 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone.singleValueSerialize   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone.serialize   0% 41 41 0   0% 32 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone.serialize_compute   0% 14 14 0   0% 12 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone.singleValueUnserialize   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone.unserialize   0% 72 72 0   0% 64 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone.unserialize_compute   0% 26 26 0   0% 12 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone.delete   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone.buildDBFilter   0% 24 24 0   0% 20 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone.buildDBSort   0% 29 29 0   0% 22 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone._hashValueForUniquePropertyIndex   0% 13 13 0   0% 10 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone._hashValueForUniquePropertyIndex.hashValue   0% 14 14 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone.getUniquePropertyIndexValues   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone.getReferencedBlobs   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone.performMagic   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone.postSavedHandler   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone.postDeletedHandler   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone.clone_value   0% 20 20 0   0% 10 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone.refresh   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone.mergeFrom   0% 6 6 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone.setBoneValue   79% 28 6 0   64% 22 6   72%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone.getSearchTags   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone.iter_bone_value   0% 15 15 0   0% 16 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone._compute   0% 26 26 0   0% 16 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone._compute.unserialize_raw_value   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone.structure   0% 11 11 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone.dump   0% 17 17 0   0% 14 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py BaseBone._atomic_dump   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / base.py (no function)   99% 158 1 2   50% 2 1   99%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / boolean.py BooleanBone.__init__   0% 6 6 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / boolean.py BooleanBone.singleValueFromClient   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / boolean.py BooleanBone.getEmptyValue   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / boolean.py BooleanBone.isEmpty   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / boolean.py BooleanBone.refresh   0% 5 5 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / boolean.py BooleanBone.setBoneValue   0% 8 8 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / boolean.py BooleanBone.singleValueSerialize   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / boolean.py BooleanBone.buildDBFilter   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / boolean.py (no function)   100% 14 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / captcha.py CaptchaBone.__init__   0% 13 13 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / captcha.py CaptchaBone.serialize   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / captcha.py CaptchaBone.unserialize   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / captcha.py CaptchaBone.fromClient   0% 20 20 0   0% 12 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / captcha.py (no function)   92% 13 1 0   50% 2 1   87%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / color.py ColorBone.__init__   0% 3 3 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / color.py ColorBone.singleValueFromClient   0% 24 24 0   0% 24 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / color.py (no function)   100% 7 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / credential.py CredentialBone.__init__   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / credential.py CredentialBone.isInvalid   0% 4 4 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / credential.py CredentialBone.serialize   0% 6 6 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / credential.py CredentialBone.unserialize   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / credential.py CredentialBone.singleValueFromClient   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / credential.py (no function)   100% 9 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / date.py DateBone.__init__   59% 22 9 0   42% 12 5   53%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / date.py DateBone.singleValueFromClient   58% 50 21 0   50% 26 5   55%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / date.py DateBone.isInvalid   75% 4 1 0   50% 4 2   62%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / date.py DateBone.guessTimeZone   31% 29 20 0   17% 18 5   26%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / date.py DateBone.singleValueSerialize   0% 10 10 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / date.py DateBone.singleValueUnserialize   0% 7 7 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / date.py DateBone.buildDBFilter   0% 5 5 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / date.py DateBone.performMagic   0% 4 4 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / date.py DateBone.structure   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / date.py DateBone._atomic_dump   0% 5 5 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / date.py (no function)   100% 21 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / email.py EmailBone.isInvalid   0% 28 28 0   0% 12 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / email.py (no function)   100% 8 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / file.py ensureDerived   0% 34 34 0   0% 22 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / file.py ensureDerived._merge_derives   0% 3 3 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / file.py FileBone.__init__   0% 8 8 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / file.py FileBone.isInvalid   0% 13 13 0   0% 12 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / file.py FileBone.postSavedHandler   0% 16 16 0   0% 12 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / file.py FileBone.postSavedHandler.handleDerives   0% 4 4 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / file.py FileBone.getReferencedBlobs   0% 6 6 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / file.py FileBone.refresh   0% 24 24 0   0% 14 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / file.py FileBone.refresh.recreateFileEntryIfNeeded   0% 13 13 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / file.py FileBone.structure   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / file.py FileBone._atomic_dump   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / file.py (no function)   100% 24 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / image.py ImageBone.__init__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / image.py (no function)   100% 11 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / json.py JsonBone.__init__   0% 6 6 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / json.py JsonBone.singleValueSerialize   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / json.py JsonBone.singleValueUnserialize   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / json.py JsonBone.singleValueFromClient   0% 15 15 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / json.py JsonBone.structure   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / json.py (no function)   100% 14 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / key.py KeyBone.__init__   100% 3 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / key.py KeyBone.singleValueFromClient   0% 19 19 0   0% 12 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / key.py KeyBone.singleValueUnserialize   0% 8 8 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / key.py KeyBone.unserialize   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / key.py KeyBone.serialize   0% 6 6 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / key.py KeyBone.buildDBFilter   0% 25 25 0   0% 14 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / key.py KeyBone.buildDBFilter._decodeKey   0% 8 8 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / key.py KeyBone._atomic_dump   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / key.py (no function)   100% 14 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / numeric.py NumericBone.__init__   55% 11 5 0   50% 4 2   53%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / numeric.py NumericBone.__setattr__   75% 4 1 0   75% 4 1   75%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / numeric.py NumericBone.singleValueUnserialize   0% 6 6 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / numeric.py NumericBone.singleValueSerialize   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / numeric.py NumericBone.isInvalid   50% 2 1 0   50% 2 1   50%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / numeric.py NumericBone.getEmptyValue   100% 3 0 0   100% 2 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / numeric.py NumericBone.isEmpty   100% 7 0 0   100% 2 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / numeric.py NumericBone.singleValueFromClient   82% 17 3 0   88% 8 1   84%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / numeric.py NumericBone.buildDBFilter   0% 14 14 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / numeric.py NumericBone.getSearchTags   0% 6 6 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / numeric.py NumericBone._convert_to_numeric   100% 7 0 0   100% 6 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / numeric.py NumericBone.refresh   0% 11 11 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / numeric.py NumericBone.refresh.refresh_single_value   0% 5 5 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / numeric.py NumericBone.iter_bone_value   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / numeric.py NumericBone.structure   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / numeric.py (no function)   97% 29 1 0   50% 2 1   94%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / password.py encode_password   0% 7 7 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / password.py PasswordBone.__init__   0% 5 5 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / password.py PasswordBone.isInvalid   0% 14 14 0   0% 10 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / password.py PasswordBone.fromClient   0% 7 7 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / password.py PasswordBone.serialize   0% 12 12 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / password.py PasswordBone.unserialize   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / password.py PasswordBone.structure   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / password.py PasswordBone._atomic_dump   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / password.py (no function)   100% 22 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / phone.py PhoneBone.__init__   0% 5 5 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / phone.py PhoneBone._extract_digits   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / phone.py PhoneBone.isInvalid   0% 7 7 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / phone.py PhoneBone.singleValueFromClient   0% 10 10 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / phone.py PhoneBone.structure   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / phone.py (no function)   100% 15 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / randomslice.py RandomSliceBone.__init__   0% 5 5 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / randomslice.py RandomSliceBone.serialize   0% 3 3 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / randomslice.py RandomSliceBone.buildDBSort   0% 23 23 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / randomslice.py RandomSliceBone.buildDBSort.applyFilterHook   0% 7 7 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / randomslice.py RandomSliceBone.calculateInternalMultiQueryLimit   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / randomslice.py RandomSliceBone.customMultiQueryMerge   0% 8 8 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / randomslice.py (no function)   100% 13 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / raw.py RawBone.singleValueFromClient   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / raw.py RawBone.getSearchTags   0% 7 7 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / raw.py (no function)   100% 7 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / record.py RecordBone.__init__   75% 8 2 0   50% 4 2   67%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / record.py RecordBone.singleValueUnserialize   0% 14 14 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / record.py RecordBone.singleValueSerialize   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / record.py RecordBone._get_single_destinct_hash   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / record.py RecordBone.parseSubfieldsFromClient   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / record.py RecordBone.singleValueFromClient   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / record.py RecordBone.postSavedHandler   0% 17 17 0   0% 12 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / record.py RecordBone.postDeletedHandler   0% 5 5 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / record.py RecordBone.getSearchTags   0% 10 10 0   0% 10 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / record.py RecordBone.getSearchDocumentFields   0% 9 9 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / record.py RecordBone.getSearchDocumentFields.getValues   0% 3 3 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / record.py RecordBone.getReferencedBlobs   0% 7 7 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / record.py RecordBone.getUniquePropertyIndexValues   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / record.py RecordBone.structure   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / record.py RecordBone._atomic_dump   0% 2 2 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / record.py RecordBone.refresh   0% 5 5 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / record.py (no function)   96% 24 1 0   50% 2 1   92%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / relational.py RelationalBone.__init__   0% 32 32 0   0% 20 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / relational.py RelationalBone.setSystemInitialized   0% 8 8 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / relational.py RelationalBone._getSkels   0% 3 3 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / relational.py RelationalBone.singleValueUnserialize   0% 26 26 0   0% 14 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / relational.py RelationalBone.singleValueUnserialize.fixFromDictToEntry   0% 15 15 0   0% 12 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / relational.py RelationalBone.serialize   0% 37 37 0   0% 32 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / relational.py RelationalBone.serialize.serialize_dest_rel   0% 9 9 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / relational.py RelationalBone._get_single_destinct_hash   0% 5 5 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / relational.py RelationalBone.postSavedHandler   0% 34 34 0   0% 18 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / relational.py RelationalBone.postSavedHandler.__update_relation   0% 14 14 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / relational.py RelationalBone.postDeletedHandler   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / relational.py RelationalBone.isInvalid   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / relational.py RelationalBone.parseSubfieldsFromClient   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / relational.py RelationalBone.singleValueFromClient   0% 24 24 0   0% 16 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / relational.py RelationalBone._rewriteQuery   0% 29 29 0   0% 20 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / relational.py RelationalBone.buildDBFilter   0% 52 52 0   0% 38 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / relational.py RelationalBone.buildDBSort   0% 24 24 0   0% 14 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / relational.py RelationalBone.filterHook   0% 29 29 0   0% 22 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / relational.py RelationalBone.orderHook   0% 30 30 0   0% 22 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / relational.py RelationalBone.refresh   0% 20 20 0   0% 12 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / relational.py RelationalBone.getSearchTags   0% 11 11 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / relational.py RelationalBone.getSearchTags.get_values   0% 5 5 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / relational.py RelationalBone.createRelSkelFromKey   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / relational.py RelationalBone.relskels_from_keys   0% 11 11 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / relational.py RelationalBone.setBoneValue   0% 43 43 0   0% 36 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / relational.py RelationalBone.setBoneValue.tuple_check   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / relational.py RelationalBone.getReferencedBlobs   0% 10 10 0   0% 10 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / relational.py RelationalBone.getUniquePropertyIndexValues   0% 7 7 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / relational.py RelationalBone.structure   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / relational.py RelationalBone._atomic_dump   0% 2 2 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / relational.py (no function)   98% 58 1 0   50% 2 1   97%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / select.py translation_key_prefix_skeleton_bonename   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / select.py translation_key_prefix_bonename   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / select.py SelectBone.__init__   86% 7 1 0   50% 2 1   78%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / select.py SelectBone.__getattribute__   13% 15 13 0   10% 10 1   12%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / select.py SelectBone.singleValueUnserialize   0% 5 5 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / select.py SelectBone.singleValueSerialize   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / select.py SelectBone.singleValueFromClient   0% 11 11 0   0% 10 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / select.py SelectBone.structure   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / select.py SelectBone._atomic_dump   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / select.py (no function)   96% 24 1 0   50% 2 1   92%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / selectcountry.py SelectCountryBone.__init__   0% 16 16 0   0% 14 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / selectcountry.py SelectCountryBone.singleValueUnserialize   0% 11 11 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / selectcountry.py (no function)   100% 16 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / sortindex.py SortIndexBone.__init__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / sortindex.py (no function)   100% 7 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / spam.py SpamBone.__init__   0% 8 8 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / spam.py SpamBone._dice   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / spam.py SpamBone.descr   0% 9 9 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / spam.py SpamBone.descr   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / spam.py SpamBone.isInvalid   0% 13 13 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / spam.py (no function)   100% 15 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / spatial.py haversine   0% 8 8 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / spatial.py SpatialBone.__init__   0% 16 16 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / spatial.py SpatialBone.getGridSize   0% 3 3 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / spatial.py SpatialBone.isInvalid   0% 9 9 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / spatial.py SpatialBone.singleValueSerialize   0% 11 11 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / spatial.py SpatialBone.singleValueUnserialize   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / spatial.py SpatialBone.parseSubfieldsFromClient   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / spatial.py SpatialBone.isEmpty   0% 10 10 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / spatial.py SpatialBone.getEmptyValue   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / spatial.py SpatialBone.singleValueFromClient   0% 17 17 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / spatial.py SpatialBone.buildDBFilter   0% 37 37 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / spatial.py SpatialBone.calculateInternalMultiQueryLimit   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / spatial.py SpatialBone.customMultiQueryMerge   0% 14 14 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / spatial.py SpatialBone.setBoneValue   0% 5 5 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / spatial.py SpatialBone.structure   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / spatial.py (no function)   100% 24 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / string.py StringBone.__init__   62% 21 8 0   44% 16 7   54%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / string.py StringBone.type_coerce_single_value   64% 11 4 0   60% 10 4   62%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / string.py StringBone.singleValueSerialize   89% 9 1 0   67% 6 2   80%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / string.py StringBone.singleValueUnserialize   100% 5 0 0   100% 4 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / string.py StringBone.getEmptyValue   100% 1 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / string.py StringBone.isEmpty   100% 3 0 0   100% 2 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / string.py StringBone.isInvalid   60% 5 2 0   50% 4 2   56%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / string.py StringBone.singleValueFromClient   57% 7 3 0   50% 6 1   54%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / string.py StringBone.buildDBFilter   0% 35 35 0   0% 30 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / string.py StringBone.buildDBSort   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / string.py StringBone.natural_sorting   0% 6 6 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / string.py StringBone.getUniquePropertyIndexValues   0% 8 8 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / string.py StringBone.refresh   0% 14 14 0   0% 10 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / string.py StringBone.structure   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / string.py StringBone.v_func_valid_chars   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / string.py StringBone.v_func_valid_chars.v_func   0% 2 2 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / string.py (no function)   97% 31 1 0   50% 2 1   94%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / text.py CollectBlobKeys.__init__   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / text.py CollectBlobKeys.handle_starttag   0% 6 6 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / text.py HtmlSerializer.__init__   100% 6 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / text.py HtmlSerializer.handle_data   100% 4 0 0   100% 2 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / text.py HtmlSerializer.handle_charref   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / text.py HtmlSerializer.handle_entityref   100% 3 0 0   50% 2 1   80%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / text.py HtmlSerializer.flushCache   100% 4 0 0   100% 2 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / text.py HtmlSerializer.handle_starttag   42% 76 44 0   33% 60 12   38%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / text.py HtmlSerializer.handle_endtag   62% 13 5 0   44% 16 3   52%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / text.py HtmlSerializer.cleanup   50% 4 2 0   50% 2 1   50%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / text.py HtmlSerializer.sanitize   100% 6 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / text.py TextBone.__init__   78% 9 2 0   50% 4 2   69%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / text.py TextBone.singleValueSerialize   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / text.py TextBone.singleValueFromClient   100% 3 0 0   100% 2 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / text.py TextBone.getEmptyValue   100% 1 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / text.py TextBone.isInvalid   75% 4 1 0   75% 4 1   75%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / text.py TextBone.getReferencedBlobs   0% 13 13 0   0% 10 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / text.py TextBone.refresh   0% 6 6 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / text.py TextBone.getUniquePropertyIndexValues   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / text.py TextBone.structure   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / text.py (no function)   100% 46 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / treeleaf.py TreeLeafBone.__init__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / treeleaf.py (no function)   100% 4 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / treenode.py (no function)   100% 3 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / uid.py generate_number   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / uid.py generate_number.transact   0% 12 12 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / uid.py generate_uid   0% 7 7 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / uid.py UidBone.__init__   0% 14 14 0   0% 10 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / uid.py UidBone.structure   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / uid.py (no function)   100% 10 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / uri.py UriBone.__init__   66% 32 11 0   57% 28 10   62%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / uri.py UriBone._build_accepted_ports   73% 30 8 0   67% 24 8   70%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / uri.py UriBone.isInvalid   70% 27 8 0   71% 28 2   71%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / uri.py UriBone.singleValueFromClient   100% 11 0 0   100% 8 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / uri.py UriBone.structure   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / uri.py (no function)   100% 16 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / user.py UserBone.__init__   0% 11 11 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / user.py UserBone.performMagic   0% 5 5 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / bones / user.py (no function)   100% 6 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / cache.py keyFromArgs   0% 49 49 0   0% 30 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / cache.py wrapCallable   0% 10 10 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / cache.py wrapCallable.wrapF   0% 35 35 0   0% 14 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / cache.py enableCache   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / cache.py flushCache   0% 27 27 0   0% 22 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / cache.py (no function)   0% 16 16 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / config.py ConfigType.__init__   100% 3 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / config.py ConfigType._path   100% 3 0 0   100% 2 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / config.py ConfigType.strict_mode   100% 3 0 0   100% 2 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / config.py ConfigType.strict_mode   100% 3 0 0   100% 2 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / config.py ConfigType._resolve_mapping   100% 4 0 0   100% 2 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / config.py ConfigType.items   90% 10 1 0   90% 10 1   90%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / config.py ConfigType.get   100% 6 0 0   100% 2 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / config.py ConfigType.__getitem__   100% 5 0 0   100% 2 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / config.py ConfigType.__getattr__   100% 7 0 0   100% 4 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / config.py ConfigType.__setitem__   0% 12 12 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / config.py ConfigType.__setattr__   75% 8 2 0   67% 6 2   71%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / config.py ConfigType.__repr__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / config.py I18N.available_dialects   100% 3 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / config.py I18N._dump_can_view   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / config.py User.__setattr__   33% 6 4 0   25% 4 1   30%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / config.py Conf.tasks_custom_environment_handler   100% 1 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / config.py Conf.tasks_custom_environment_handler   0% 10 10 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / config.py Conf.__init__   100% 11 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / config.py Conf._resolve_mapping   100% 3 0 0   100% 2 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / config.py (no function)   100% 275 0 7   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / current.py (no function)   73% 11 3 0   50% 2 1   69%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / __init__.py __getattr__   23% 13 10 0   25% 4 1   24%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / __init__.py (no function)   100% 10 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / cache.py get   0% 22 22 0   0% 10 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / cache.py put   0% 23 23 0   0% 12 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / cache.py delete   0% 12 12 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / cache.py flush   0% 8 8 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / cache.py get_size   0% 5 5 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / cache.py check_for_memcache   0% 5 5 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / cache.py init_testbed   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / cache.py (no function)   100% 21 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / config.py DBConfig.__setitem__   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / config.py DBConfig.__getitem__   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / config.py (no function)   100% 8 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / overrides.py key_from_protobuf   0% 17 17 0   0% 12 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / overrides.py entity_from_protobuf   0% 27 27 0   0% 16 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / overrides.py (no function)   100% 5 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / query.py _entryMatchesQuery   0% 7 7 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / query.py _entryMatchesQuery.doesMatch   0% 13 13 0   0% 12 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / query.py Query.__init__   0% 13 13 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / query.py Query.setFilterHook   0% 3 3 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / query.py Query.setOrderHook   0% 3 3 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / query.py Query.mergeExternalFilter   0% 38 38 0   0% 24 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / query.py Query.filter   0% 54 54 0   0% 40 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / query.py Query.order   0% 22 22 0   0% 16 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / query.py Query.setCursor   0% 13 13 0   0% 12 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / query.py Query.limit   0% 6 6 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / query.py Query.distinctOn   0% 6 6 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / query.py Query.getCursor   0% 9 9 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / query.py Query.get_orders   0% 6 6 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / query.py Query.getKind   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / query.py Query._run_single_filter_query   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / query.py Query._merge_multi_query_results   0% 10 10 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / query.py Query._resort_result   0% 17 17 0   0% 10 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / query.py Query._resort_result.getVal   0% 17 17 0   0% 12 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / query.py Query._fixKind   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / query.py Query.run   0% 29 29 0   0% 22 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / query.py Query.count   0% 7 7 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / query.py Query.fetch   0% 11 11 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / query.py Query.iter   0% 9 9 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / query.py Query.getEntry   0% 5 5 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / query.py Query.getSkel   0% 6 6 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / query.py Query.clone   0% 11 11 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / query.py Query.__repr__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / query.py (no function)   98% 40 1 0   50% 2 1   95%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / transport.py allocate_ids   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / transport.py AllocateIDs   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / transport.py get   0% 6 6 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / transport.py Get   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / transport.py put   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / transport.py Put   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / transport.py delete   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / transport.py Delete   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / transport.py run_in_transaction   0% 13 13 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / transport.py RunInTransaction   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / transport.py count   0% 14 14 0   0% 10 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / transport.py Count   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / transport.py run_single_filter   0% 26 26 0   0% 16 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / transport.py runSingleFilter   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / transport.py _write_to_access_log   0% 16 16 0   0% 16 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / transport.py (no function)   100% 36 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / types.py Key.__init__   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / types.py Key.__str__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / types.py Entity.__init__   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / types.py QueryDefinition.__post_init__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / types.py (no function)   100% 51 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / utils.py fix_unindexable_properties   0% 14 14 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / utils.py fix_unindexable_properties.has_unindexable_property   0% 7 7 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / utils.py normalize_key   0% 8 8 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / utils.py normalizeKey   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / utils.py key_helper   0% 19 19 0   0% 14 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / utils.py keyHelper   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / utils.py is_in_transaction   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / utils.py IsInTransaction   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / utils.py get_or_insert   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / utils.py get_or_insert.txn   0% 7 7 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / utils.py GetOrInsert   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / utils.py encodeKey   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / utils.py acquire_transaction_success_marker   0% 10 10 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / utils.py start_data_access_log   0% 3 3 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / utils.py startDataAccessLog   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / utils.py end_data_access_log   0% 5 5 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / utils.py endDataAccessLog   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / db / utils.py (no function)   100% 26 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / decorators.py exposed   57% 7 3 0   50% 2 1   56%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / decorators.py exposed.expose_with_translations   0% 4 4 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / decorators.py internal_exposed   0% 3 3 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / decorators.py force_ssl   0% 3 3 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / decorators.py force_post   0% 3 3 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / decorators.py access   0% 4 4 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / decorators.py access.validate   0% 27 27 0   0% 24 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / decorators.py access.decorator   0% 4 4 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / decorators.py skey   83% 6 1 0   50% 2 1   75%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / decorators.py skey.validate   0% 23 23 0   0% 20 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / decorators.py skey.decorator   100% 5 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / decorators.py cors   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / decorators.py cors.decorator   0% 3 3 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / decorators.py (no function)   100% 13 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / email.py clean_old_emails_from_log   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / email.py EmailTransport.deliver_email   100% 0 0 1   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / email.py EmailTransport.validate_queue_entity   100% 0 0 1   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / email.py EmailTransport.transport_successful_callback   100% 0 0 1   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / email.py EmailTransport.split_address   0% 7 7 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / email.py EmailTransport.validate_attachment   0% 8 8 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / email.py EmailTransport.fetch_attachment   0% 14 14 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / email.py send_email_deferred   0% 25 25 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / email.py normalize_to_list   0% 7 7 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / email.py send_email   0% 67 67 0   0% 30 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / email.py sendEMail   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / email.py send_email_to_admins   0% 18 18 0   0% 10 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / email.py sendEMailToAdmins   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / email.py EmailTransportBrevo.__init__   0% 3 3 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / email.py EmailTransportBrevo.deliver_email   0% 34 34 0   0% 20 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / email.py EmailTransportBrevo.validate_queue_entity   0% 4 4 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / email.py EmailTransportBrevo.check_sib_quota   0% 34 34 0   0% 16 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / email.py EmailTransportMailjet.__init__   0% 3 3 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / email.py EmailTransportMailjet.deliver_email   0% 18 18 0   0% 12 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / email.py EmailTransportSendgrid.__init__   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / email.py EmailTransportSendgrid.deliver_email   0% 15 15 0   0% 10 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / email.py EmailTransportSmtp.__init__   0% 6 6 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / email.py EmailTransportSmtp.deliver_email   0% 20 20 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / email.py EmailTransportAppengine.deliver_email   0% 11 11 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / email.py (no function)   95% 83 4 6   50% 6 3   92%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / errors.py HTTPException.__init__   0% 5 5 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / errors.py HTTPException.process   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / errors.py BadRequest.__init__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / errors.py Redirect.__init__   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / errors.py Unauthorized.__init__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / errors.py PaymentRequired.__init__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / errors.py Forbidden.__init__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / errors.py NotFound.__init__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / errors.py MethodNotAllowed.__init__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / errors.py NotAcceptable.__init__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / errors.py RequestTimeout.__init__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / errors.py Gone.__init__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / errors.py PreconditionFailed.__init__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / errors.py RequestTooLarge.__init__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / errors.py Locked.__init__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / errors.py TooManyRequests.__init__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / errors.py UnprocessableEntity.__init__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / errors.py Censored.__init__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / errors.py InternalServerError.__init__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / errors.py NotImplemented.__init__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / errors.py BadGateway.__init__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / errors.py ServiceUnavailable.__init__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / errors.py (no function)   100% 43 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / i18n.py LanguageWrapper.__init__   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / i18n.py LanguageWrapper.__str__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / i18n.py LanguageWrapper.__bool__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / i18n.py LanguageWrapper.resolve   0% 11 11 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / i18n.py translate.__init__   50% 28 14 0   19% 16 3   39%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / i18n.py translate.__repr__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / i18n.py translate.__str__   74% 19 5 0   50% 18 9   62%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / i18n.py translate.translate   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / i18n.py translate.__call__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / i18n.py translate.substitute_vars   75% 4 1 0   50% 2 1   67%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / i18n.py translate.merge_alias   40% 5 3 0   17% 6 1   27%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / i18n.py TranslationExtension.parse   0% 37 37 0   0% 16 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / i18n.py TranslationExtension._translate   0% 3 3 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / i18n.py initializeTranslations   0% 24 24 0   0% 20 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / i18n.py add_missing_translation   0% 28 28 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / i18n.py migrate_translation   0% 20 20 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / i18n.py localizedStrfTime   0% 15 15 0   0% 14 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / i18n.py (no function)   100% 55 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / languages / __init__.py (no function)   100% 2 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / languages / de.py (no function)   100% 1 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / languages / en.py (no function)   100% 1 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / logging.py ViURDefaultLogger.emit   80% 10 2 0   100% 0 0   80%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / logging.py ViURLocalFormatter.colorize   0% 4 4 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / logging.py ViURLocalFormatter.format   0% 15 15 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / logging.py (no function)   89% 38 4 0   88% 8 1   89%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / module.py Method.ensure   100% 3 0 0   100% 2 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / module.py Method.__init__   100% 12 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / module.py Method.__get__   0% 5 5 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / module.py Method.__call__   0% 51 51 0   0% 32 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / module.py Method.__call__.parse_value_by_annotation   0% 50 50 0   0% 42 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / module.py Method.describe   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / module.py Method.register   0% 7 7 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / module.py Module.__init__   0% 12 12 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / module.py Module._update_methods   0% 12 12 0   0% 10 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / module.py Module.describe   0% 13 13 0   0% 10 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / module.py Module.register   0% 14 14 0   0% 14 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / module.py (no function)   100% 32 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / __init__.py (no function)   100% 0 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py importBlobFromViur2   0% 43 43 0   0% 12 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py thumbnailer   0% 50 50 0   0% 10 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py cloudfunction_thumbnailer   0% 31 31 0   0% 16 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py cloudfunction_thumbnailer.getsignedurl   0% 12 12 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py cloudfunction_thumbnailer.make_request   0% 25 25 0   0% 10 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py DownloadUrlBone.unserialize   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py FileLeafSkel._inject_serving_url   0% 11 11 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py FileLeafSkel.preProcessBlobLocks   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py FileLeafSkel.refresh   0% 8 8 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py FileLeafSkel.write   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py File.get_bucket   0% 5 5 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py File.is_valid_filename   0% 5 5 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py File.hmac_sign   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py File.hmac_verify   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py File.create_internal_serving_url   0% 7 7 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py File.create_download_url   0% 12 12 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py File.parse_download_url   0% 20 20 0   0% 12 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py File.create_src_set   0% 28 28 0   0% 22 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py File.write   0% 48 48 0   0% 18 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py File.read   0% 12 12 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py File.deleteRecursive   0% 12 12 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py File.getUploadURL   0% 59 59 0   0% 32 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py File.download   0% 54 54 0   0% 30 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py File.serve   0% 24 24 0   0% 12 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py File.add   0% 38 38 0   0% 14 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py File.get_download_url   0% 23 23 0   0% 20 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py File.onEdit   0% 13 13 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py File.onAdded   0% 6 6 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py File.set_image_meta   0% 21 21 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py File.mark_for_deletion   0% 7 7 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py startCheckForUnreferencedBlobs   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py doCheckForUnreferencedBlobs   0% 20 20 0   0% 10 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py doCheckForUnreferencedBlobs.getOldBlobKeysTxn   0% 8 8 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py startCleanupDeletedFiles   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py doCleanupDeletedFiles   0% 29 29 0   0% 18 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py start_delete_pending_files   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py __getattr__   0% 6 6 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / file.py (no function)   0% 141 141 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / formmailer.py Formmailer.index   0% 17 17 0   0% 12 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / formmailer.py Formmailer.add   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / formmailer.py Formmailer.canUse   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / formmailer.py Formmailer.mailSkel   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / formmailer.py Formmailer.getRcpts   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / formmailer.py Formmailer.getOptions   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / formmailer.py Formmailer.onAdded   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / formmailer.py (no function)   0% 20 20 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / history.py BigQueryHistory.__init__   0% 5 5 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / history.py BigQueryHistory.select_or_create_table   0% 16 16 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / history.py BigQueryHistory.write_row   0% 2 2 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / history.py HistoryAdapter.__init__   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / history.py HistoryAdapter.prewrite   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / history.py HistoryAdapter.write   0% 2 2 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / history.py HistoryAdapter.delete   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / history.py HistoryAdapter.trigger   0% 17 17 0   0% 14 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / history.py History.__init__   0% 5 5 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / history.py History.skel   0% 3 3 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / history.py History.canEdit   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / history.py History.canDelete   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / history.py History.canAdd   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / history.py History._create_diff   0% 13 13 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / history.py History._create_diff.expand   0% 10 10 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / history.py History.build_name   0% 8 8 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / history.py History.build_descr   0% 10 10 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / history.py History.create_history_entry   0% 12 12 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / history.py History.write_diff   0% 9 9 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / history.py History.write   0% 8 8 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / history.py History.write_deferred   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / history.py History.write_to_bigquery   0% 6 6 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / history.py History.write_to_bigquery_deferred   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / history.py (no function)   0% 68 68 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / moduleconf.py ModuleConf.adminInfo   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / moduleconf.py ModuleConf.canAdd   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / moduleconf.py ModuleConf.canDelete   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / moduleconf.py ModuleConf.canEdit   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / moduleconf.py ModuleConf.listFilter   0% 7 7 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / moduleconf.py ModuleConf.get_by_module_name   0% 6 6 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / moduleconf.py ModuleConf.read_all_modules   0% 4 4 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / moduleconf.py ModuleConf.read_all_modules.collect_modules   0% 20 20 0   0% 12 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / moduleconf.py (no function)   0% 35 35 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / page.py Page.getAvailableRootNodes   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / page.py (no function)   0% 12 12 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / script.py BaseScriptAbstractSkel.fromClient   0% 10 10 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / script.py Script.adminInfo   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / script.py Script.getAvailableRootNodes   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / script.py Script.view   0% 6 6 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / script.py Script.onEdit   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / script.py Script.onEdited   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / script.py Script.update_path_recursive   0% 10 10 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / script.py Script.update_path   0% 9 9 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / script.py Script.get_importable   0% 17 17 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / script.py Script.get_importable.get_files_recursively   0% 11 11 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / script.py (no function)   0% 38 38 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / site.py Site.index   0% 7 7 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / site.py (no function)   0% 7 7 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / translation.py TranslationSkel.read   0% 5 5 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / translation.py TranslationSkel.write   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / translation.py Translation.adminInfo   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / translation.py Translation.addSkel   0% 4 4 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / translation.py Translation.onAdded   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / translation.py Translation.onEdited   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / translation.py Translation.onDeleted   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / translation.py Translation._reload_translations   0% 6 6 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / translation.py Translation.dump   0% 10 10 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / translation.py Translation.get_public   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / translation.py (no function)   0% 51 51 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py Status.__eq__   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py Status.__lt__   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py UserSkel.__new__   0% 8 8 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py UserSkel.write   0% 24 24 0   0% 22 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py UserAuthentication.METHOD_NAME   100% 0 0 1   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py UserAuthentication.NAME   100% 0 0 1   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py UserAuthentication.VISIBLE   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py UserAuthentication.__init__   0% 3 3 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py UserAuthentication.can_handle   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py UserAuthentication.patch_user_skel   100% 0 0 1   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py UserPrimaryAuthentication.login   100% 0 0 1   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py UserPrimaryAuthentication.next_or_finish   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py UserPassword.patch_user_skel   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py UserPassword.login   0% 23 23 0   0% 10 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py UserPassword.pwrecover   0% 29 29 0   0% 16 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py UserPassword.sendUserPasswordRecoveryCode   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py UserPassword.verify   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py UserPassword.verify.transact   0% 6 6 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py UserPassword.canAdd   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py UserPassword.addSkel   0% 11 11 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py UserPassword.add   0% 14 14 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py GoogleAccount.patch_user_skel   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py GoogleAccount.login   0% 39 39 0   0% 24 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py UserSecondFactorAuthentication.NAME   100% 0 0 1   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py UserSecondFactorAuthentication.ACTION_NAME   100% 0 0 1   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py UserSecondFactorAuthentication.__init__   0% 4 4 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py TimeBasedOTP.patch_user_skel   0% 3 3 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py TimeBasedOTP.get_config   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py TimeBasedOTP.can_handle   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py TimeBasedOTP.start   0% 13 13 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py TimeBasedOTP.otp   0% 21 21 0   0% 10 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py TimeBasedOTP.verify   0% 16 16 0   0% 10 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py TimeBasedOTP.updateTimeDrift   0% 3 3 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py AuthenticatorOTP.can_handle   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py AuthenticatorOTP.patch_user_skel   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py AuthenticatorOTP.set_otp_app_secret   0% 7 7 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py AuthenticatorOTP.set_otp_app_secret.transaction   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py AuthenticatorOTP.generate_otp_app_secret_uri   0% 6 6 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py AuthenticatorOTP.generate_otp_app_secret   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py AuthenticatorOTP.verify_otp   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py AuthenticatorOTP.start   0% 5 5 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py AuthenticatorOTP.authenticator_otp   0% 18 18 0   0% 10 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py User.__init__   0% 9 9 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py User.adminInfo   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py User.get_role_defaults   0% 6 6 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py User.addSkel   0% 18 18 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py User.editSkel   0% 10 10 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py User.secondFactorProviderByClass   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py User.getCurrentUser   0% 7 7 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py User.continueAuthenticationFlow   0% 27 27 0   0% 20 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py User.secondFactorSucceeded   0% 6 6 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py User.is_active   0% 9 9 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py User.is_admin   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py User.authenticateUser   0% 14 14 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py User.SelectAuthenticationProviderSkel   0% 12 12 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py User.select_authentication_provider   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py User.select_secondfactor_provider   0% 5 5 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py User.logout   0% 10 10 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py User.login   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py User.onLogin   0% 6 6 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py User.onLogout   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py User.view   0% 5 5 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py User.canView   0% 6 6 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py User.edit   0% 5 5 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py User.getAuthMethods   0% 3 3 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py User.trigger   0% 14 14 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py User.onEdited   0% 5 5 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py User.onDeleted   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py createNewUserIfNotExists   0% 18 18 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py __getattr__   0% 7 7 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / modules / user.py (no function)   0% 230 230 9   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / pagination.py Pagination.__init__   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / pagination.py Pagination.key_from_query   0% 14 14 0   0% 10 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / pagination.py Pagination.get_or_build_index   0% 20 20 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / pagination.py Pagination.cursor_for_query   0% 5 5 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / pagination.py Pagination.get_pages   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / pagination.py Pagination.refresh_index   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / pagination.py (no function)   0% 11 11 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / __init__.py __getattr__   0% 14 14 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / __init__.py (no function)   0% 4 4 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / instanced_module.py InstancedModule.__init__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / instanced_module.py InstancedModule.__call__   0% 5 5 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / instanced_module.py InstancedModule._viur_clone   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / instanced_module.py (no function)   0% 6 6 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / list.py List.viewSkel   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / list.py List.addSkel   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / list.py List.editSkel   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / list.py List.cloneSkel   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / list.py List.preview   0% 5 5 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / list.py List.structure   0% 20 20 0   0% 16 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / list.py List.view   0% 7 7 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / list.py List.list   0% 5 5 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / list.py List.edit   0% 11 11 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / list.py List.add   0% 9 9 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / list.py List.delete   0% 9 9 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / list.py List.index   0% 14 14 0   0% 10 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / list.py List.getDefaultListParams   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / list.py List.clone   0% 14 14 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / list.py List.listFilter   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / list.py List.canView   0% 8 8 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / list.py List.canAdd   0% 7 7 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / list.py List.canPreview   0% 7 7 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / list.py List.canEdit   0% 7 7 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / list.py List.canDelete   0% 7 7 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / list.py List.onAdd   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / list.py List.onAdded   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / list.py List.onEdit   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / list.py List.onEdited   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / list.py List.onView   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / list.py List.onDelete   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / list.py List.onDeleted   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / list.py List.onClone   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / list.py List.onCloned   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / list.py (no function)   0% 61 61 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / singleton.py Singleton.getKey   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / singleton.py Singleton.viewSkel   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / singleton.py Singleton.editSkel   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / singleton.py Singleton.index   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / singleton.py Singleton.preview   0% 5 5 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / singleton.py Singleton.structure   0% 12 12 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / singleton.py Singleton.view   0% 8 8 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / singleton.py Singleton.edit   0% 12 12 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / singleton.py Singleton.getContents   0% 5 5 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / singleton.py Singleton.canPreview   0% 7 7 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / singleton.py Singleton.canEdit   0% 7 7 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / singleton.py Singleton.canView   0% 7 7 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / singleton.py Singleton.onEdit   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / singleton.py Singleton.onEdited   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / singleton.py Singleton.onView   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / singleton.py (no function)   0% 35 35 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / skelmodule.py __load_indexes_from_file   0% 12 12 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / skelmodule.py SkelModule.__init__   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / skelmodule.py SkelModule._resolveSkelCls   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / skelmodule.py SkelModule.baseSkel   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / skelmodule.py SkelModule.skel   0% 19 19 0   0% 12 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / skelmodule.py SkelModule._apply_default_order   0% 11 11 0   0% 10 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / skelmodule.py SkelModule.add_or_edit   0% 19 19 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / skelmodule.py (no function)   0% 34 34 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py TreeSkel.refresh   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.__init__   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.handler   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree._checkSkelType   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree._resolveSkelCls   0% 5 5 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.baseSkel   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.viewSkel   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.addSkel   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.editSkel   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.cloneSkel   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.rootnodeSkel   0% 6 6 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.ensureOwnModuleRootNode   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.getAvailableRootNodes   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.getRootNode   0% 6 6 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.updateParentRepo   0% 14 14 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.updateParentRepo.fixTxn   0% 3 3 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.pathToKey   0% 13 13 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.index   0% 10 10 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.listRootNodes   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.list   0% 6 6 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.structure   0% 20 20 0   0% 16 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.view   0% 9 9 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.add   0% 16 16 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.add_or_edit   0% 32 32 0   0% 14 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.edit   0% 13 13 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.delete   0% 13 13 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.deleteRecursive   0% 13 13 0   0% 10 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.move   0% 29 29 0   0% 20 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.clone   0% 24 24 0   0% 12 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.listFilter   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.canView   0% 7 7 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.canAdd   0% 7 7 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.canEdit   0% 7 7 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.canDelete   0% 7 7 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.canMove   0% 7 7 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.onAdd   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.onAdded   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.onEdit   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.onEdited   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.onView   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.onDelete   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.onDeleted   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.onClone   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree._clone_recursive   0% 19 19 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py Tree.onCloned   0% 8 8 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / prototypes / tree.py (no function)   0% 102 102 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / ratelimit.py RateLimit.__init__   0% 8 8 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / ratelimit.py RateLimit._getEndpointKey   0% 14 14 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / ratelimit.py RateLimit._getCurrentTimeKey   0% 5 5 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / ratelimit.py RateLimit.decrementQuota   0% 3 3 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / ratelimit.py RateLimit.decrementQuota.updateTxn   0% 8 8 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / ratelimit.py RateLimit.isQuotaAvailable   0% 10 10 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / ratelimit.py RateLimit.assertQuotaIsAvailable   0% 5 5 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / ratelimit.py cleanOldRateLocks   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / ratelimit.py (no function)   0% 15 15 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / __init__.py (no function)   0% 5 5 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / abstract.py AbstractRenderer.__init__   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / abstract.py AbstractRenderer.kind   100% 0 0 1   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / abstract.py AbstractRenderer.list   100% 0 0 1   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / abstract.py AbstractRenderer.view   100% 0 0 1   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / abstract.py AbstractRenderer.add   100% 0 0 1   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / abstract.py AbstractRenderer.edit   100% 0 0 1   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / abstract.py (no function)   0% 16 16 4   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / __init__.py (no function)   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / default.py Render.__init__   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / default.py Render.getTemplateFileName   0% 30 30 0   0% 24 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / default.py Render.getLoaders   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / default.py Render.renderBoneValue   0% 52 52 0   0% 40 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / default.py Render.get_template   0% 6 6 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / default.py Render.render_action_template   0% 9 9 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / default.py Render.render_view_template   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / default.py Render.list   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / default.py Render.view   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / default.py Render.add   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / default.py Render.edit   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / default.py Render.addSuccess   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / default.py Render.editSuccess   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / default.py Render.deleteSuccess   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / default.py Render.listRootNodes   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / default.py Render.render   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / default.py Render.renderEmail   0% 18 18 0   0% 12 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / default.py Render.getEnv   0% 16 16 0   0% 12 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / default.py (no function)   0% 45 45 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / __init__.py (no function)   0% 7 7 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / date.py dateTime   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / date.py date   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / date.py time   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / date.py timedelta   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / date.py (no function)   0% 12 12 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / debug.py logging   0% 10 10 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / debug.py pprint   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / debug.py (no function)   0% 9 9 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / regex.py regexMatch   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / regex.py regexReplace   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / regex.py regexSearch   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / regex.py (no function)   0% 10 10 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / session.py getSession   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / session.py setSession   0% 5 5 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / session.py (no function)   0% 8 8 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / strings.py parseJSON   0% 5 5 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / strings.py (no function)   0% 6 6 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / tests.py test_dict   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / tests.py test_list   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / tests.py (no function)   0% 7 7 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / viur.py translate   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / viur.py execRequest   0% 65 65 0   0% 20 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / viur.py getCurrentUser   0% 5 5 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / viur.py getSkel   0% 39 39 0   0% 32 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / viur.py getHostUrl   0% 5 5 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / viur.py getVersionHash   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / viur.py getAppVersion   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / viur.py redirect   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / viur.py getLanguage   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / viur.py moduleName   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / viur.py modulePath   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / viur.py getList   0% 21 21 0   0% 18 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / viur.py getSecurityKey   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / viur.py getStructure   0% 14 14 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / viur.py requestParams   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / viur.py updateURL   0% 11 11 0   0% 10 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / viur.py fileSize   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / viur.py shortKey   0% 5 5 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / viur.py renderEditBone   0% 19 19 0   0% 10 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / viur.py renderEditForm   0% 36 36 0   0% 24 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / viur.py embedSvg   0% 8 8 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / viur.py downloadUrlFor   0% 17 17 0   0% 14 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / viur.py srcSetFor   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / viur.py serving_url_for   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / viur.py seoUrlForEntry   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / viur.py seoUrlToFunction   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / viur.py qrcode   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / env / viur.py (no function)   0% 78 78 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / utils.py getGlobalFunctions   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / utils.py getGlobalFilters   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / utils.py getGlobalTests   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / utils.py getGlobalExtensions   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / utils.py jinjaGlobalFunction   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / utils.py jinjaGlobalFilter   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / utils.py jinjaGlobalTest   0% 9 9 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / utils.py jinjaGlobalExtension   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / html / utils.py (no function)   0% 13 13 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / json / __init__.py skey   0% 8 8 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / json / __init__.py _postProcessAppObj   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / json / __init__.py (no function)   0% 8 8 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / json / default.py CustomJsonEncoder.default   0% 13 13 0   0% 12 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / json / default.py DefaultRender.render_structure   0% 11 11 0   0% 14 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / json / default.py DefaultRender.renderSkelValues   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / json / default.py DefaultRender.renderEntry   0% 13 13 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / json / default.py DefaultRender.view   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / json / default.py DefaultRender.list   0% 5 5 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / json / default.py DefaultRender.add   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / json / default.py DefaultRender.edit   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / json / default.py DefaultRender.editSuccess   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / json / default.py DefaultRender.addSuccess   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / json / default.py DefaultRender.deleteSuccess   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / json / default.py DefaultRender.listRootNodes   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / json / default.py DefaultRender.render   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / json / default.py (no function)   0% 29 29 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / vi / __init__.py timestamp   0% 3 3 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / vi / __init__.py getStructure   0% 28 28 0   0% 20 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / vi / __init__.py setLanguage   0% 2 2 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / vi / __init__.py dumpConfig   0% 7 7 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / vi / __init__.py dumpConfig.collect_modules   0% 15 15 0   0% 12 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / vi / __init__.py getVersion   0% 7 7 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / vi / __init__.py canAccess   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / vi / __init__.py index   0% 8 8 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / vi / __init__.py get_settings   0% 5 5 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / vi / __init__.py _postProcessAppObj   0% 10 10 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / render / vi / __init__.py (no function)   0% 29 29 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / request.py RequestValidator.validate   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / request.py FetchMetaDataValidator.validate   0% 11 11 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / request.py Router.__init__   0% 33 33 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / request.py Router.isDevServer   0% 5 5 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / request.py Router._select_language   0% 44 44 0   0% 36 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / request.py Router._select_language.get_language_from_header   0% 23 23 0   0% 14 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / request.py Router._process   0% 159 159 0   0% 108 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / request.py Router._route   0% 85 85 0   0% 60 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / request.py Router._cors   0% 30 30 0   0% 20 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / request.py Router._cors.test_candidates   0% 9 9 0   0% 10 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / request.py Router.saveSession   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / request.py (no function)   100% 41 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / secret.py get   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / secret.py (no function)   0% 6 6 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / securityheaders.py addCspRule   0% 14 14 0   0% 10 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / securityheaders.py _rebuildCspHeaderCache   0% 16 16 0   0% 12 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / securityheaders.py extendCsp   0% 24 24 0   0% 20 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / securityheaders.py enableStrictTransportSecurity   0% 5 5 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / securityheaders.py setXFrameOptions   0% 8 8 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / securityheaders.py setXXssProtection   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / securityheaders.py setXContentTypeNoSniff   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / securityheaders.py setXPermittedCrossDomainPolicies   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / securityheaders.py setReferrerPolicy   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / securityheaders.py _rebuildPermissionHeaderCache   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / securityheaders.py setPermissionPolicyDirective   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / securityheaders.py setCrossOriginIsolation   0% 5 5 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / securityheaders.py (no function)   100% 17 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / securitykey.py create   0% 18 18 0   0% 10 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / securitykey.py validate   0% 17 17 0   0% 14 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / securitykey.py periodic_clear_skeys   0% 4 4 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / securitykey.py clear_session_skeys   0% 4 4 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / securitykey.py (no function)   0% 16 16 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / session.py Session.__init__   0% 5 5 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / session.py Session.load   0% 14 14 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / session.py Session.save   0% 21 21 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / session.py Session.__setitem__   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / session.py Session.markChanged   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / session.py Session.reset   0% 5 5 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / session.py Session.__delitem__   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / session.py Session.__ior__   0% 3 3 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / session.py Session.update   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / session.py Session.pop   0% 5 5 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / session.py Session.clear   0% 8 8 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / session.py Session.popitem   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / session.py Session.setdefault   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / session.py Session.on_delete   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / session.py Session.dispatch_on_delete   0% 2 2 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / session.py DeleteSessionsIter.handleEntry   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / session.py killSessionByUser   0% 3 3 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / session.py start_clear_sessions   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / session.py (no function)   100% 42 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / __init__.py __getattr__   29% 7 5 0   50% 2 1   33%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / __init__.py (no function)   100% 12 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / adapter.py DatabaseAdapter.prewrite   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / adapter.py DatabaseAdapter.write   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / adapter.py DatabaseAdapter.delete   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / adapter.py DatabaseAdapter.fulltextSearch   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / adapter.py ViurTagsSearchAdapter.__init__   100% 4 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / adapter.py ViurTagsSearchAdapter._tags_from_str   0% 9 9 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / adapter.py ViurTagsSearchAdapter.prewrite   0% 5 5 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / adapter.py ViurTagsSearchAdapter.fulltextSearch   0% 14 14 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / adapter.py (no function)   100% 22 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / instance.py SkeletonInstance.__init__   0% 35 35 0   0% 22 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / instance.py SkeletonInstance.items   0% 4 4 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / instance.py SkeletonInstance.keys   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / instance.py SkeletonInstance.values   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / instance.py SkeletonInstance.__iter__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / instance.py SkeletonInstance.__contains__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / instance.py SkeletonInstance.__bool__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / instance.py SkeletonInstance.get   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / instance.py SkeletonInstance.update   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / instance.py SkeletonInstance.__setitem__   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / instance.py SkeletonInstance.__getitem__   0% 14 14 0   0% 12 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / instance.py SkeletonInstance.__getattr__   0% 25 25 0   0% 12 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / instance.py SkeletonInstance.__delattr__   0% 5 5 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / instance.py SkeletonInstance.__setattr__   0% 9 9 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / instance.py SkeletonInstance.__repr__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / instance.py SkeletonInstance.__str__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / instance.py SkeletonInstance.__len__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / instance.py SkeletonInstance.__ior__   0% 15 15 0   0% 14 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / instance.py SkeletonInstance.clone   0% 10 10 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / instance.py SkeletonInstance.ensure_is_cloned   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / instance.py SkeletonInstance.setEntity   0% 3 3 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / instance.py SkeletonInstance.structure   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / instance.py SkeletonInstance.dump   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / instance.py SkeletonInstance.__deepcopy__   0% 3 3 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / instance.py (no function)   100% 35 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / meta.py MetaBaseSkel.__init__   100% 4 0 0   50% 2 1   83%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / meta.py MetaBaseSkel.generate_bonemap   80% 15 3 0   79% 14 3   79%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / meta.py MetaBaseSkel.__setattr__   67% 3 1 0   50% 2 1   60%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / meta.py MetaSkel.__init__   37% 27 17 0   30% 20 6   34%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / meta.py BaseSkeleton.subSkel   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / meta.py BaseSkeleton.subskel   0% 14 14 0   0% 10 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / meta.py BaseSkeleton.setSystemInitialized   0% 4 4 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / meta.py BaseSkeleton.setBoneValue   0% 17 17 0   0% 14 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / meta.py BaseSkeleton.fromClient   0% 18 18 0   0% 14 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / meta.py BaseSkeleton.refresh   0% 6 6 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / meta.py BaseSkeleton.readonly   0% 4 4 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / meta.py BaseSkeleton.__new__   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / meta.py (no function)   100% 45 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / relskel.py RelSkel.serialize   0% 5 5 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / relskel.py RelSkel.unserialize   0% 7 7 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / relskel.py RefSkel.fromSkel   0% 8 8 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / relskel.py RefSkel.read   0% 7 7 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / relskel.py (no function)   100% 13 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / skeleton.py SeoKeyBone.unserialize   0% 4 4 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / skeleton.py SeoKeyBone.serialize   0% 14 14 0   0% 10 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / skeleton.py Skeleton.__repr__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / skeleton.py Skeleton.__str__   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / skeleton.py Skeleton.__init__   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / skeleton.py Skeleton.all   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / skeleton.py Skeleton.fromClient   0% 23 23 0   0% 20 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / skeleton.py Skeleton.fromDB   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / skeleton.py Skeleton.read   0% 22 22 0   0% 14 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / skeleton.py Skeleton.toDB   0% 7 7 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / skeleton.py Skeleton.write   0% 26 26 0   0% 18 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / skeleton.py Skeleton.write.__txn_write   0% 125 125 0   0% 66 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / skeleton.py Skeleton.write.__txn_write.fixDotNames   0% 13 13 0   0% 14 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / skeleton.py Skeleton.delete   0% 13 13 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / skeleton.py Skeleton.delete.__txn_delete   0% 35 35 0   0% 24 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / skeleton.py Skeleton.patch   0% 12 12 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / skeleton.py Skeleton.patch.__update_txn   0% 38 38 0   0% 42 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / skeleton.py Skeleton.preProcessBlobLocks   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / skeleton.py Skeleton.preProcessSerializedData   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / skeleton.py Skeleton.postSavedHandler   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / skeleton.py Skeleton.postDeletedHandler   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / skeleton.py Skeleton.getCurrentSEOKeys   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / skeleton.py (no function)   97% 65 2 0   50% 2 1   96%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / tasks.py update_relations   0% 30 30 0   0% 16 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / tasks.py SkelIterTask.handleEntry   0% 12 12 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / tasks.py SkelIterTask.handleError   0% 8 8 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / tasks.py SkelIterTask.handleFinish   0% 8 8 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / tasks.py SkeletonMaintenanceTask.canCall   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / tasks.py SkeletonMaintenanceTask.execute   0% 11 11 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / tasks.py (no function)   100% 37 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / utils.py skeletonByKind   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / utils.py listKnownSkeletons   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / utils.py iterAllSkelClasses   0% 2 2 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / utils.py SkelList.__init__   0% 7 7 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / utils.py remove_render_preparation_deep   0% 12 12 0   0% 12 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / skeleton / utils.py (no function)   100% 9 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / tasks.py CustomEnvironmentHandler.serialize   100% 0 0 1   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / tasks.py CustomEnvironmentHandler.restore   100% 0 0 1   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / tasks.py removePeriodicTask   0% 4 4 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / tasks.py CallableTaskBase.canCall   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / tasks.py CallableTaskBase.dataSkel   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / tasks.py CallableTaskBase.execute   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / tasks.py TaskHandler.findBoundTask   0% 16 16 0   0% 12 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / tasks.py TaskHandler.queryIter   0% 6 6 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / tasks.py TaskHandler.deferred   0% 51 51 0   0% 28 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / tasks.py TaskHandler.cron   0% 27 27 0   0% 14 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / tasks.py TaskHandler._validate_request   0% 10 10 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / tasks.py TaskHandler.list   0% 8 8 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / tasks.py TaskHandler.execute   0% 10 10 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / tasks.py retry_n_times   100% 4 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / tasks.py retry_n_times.outer_wrapper   100% 2 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / tasks.py retry_n_times.outer_wrapper.inner_wrapper   0% 21 21 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / tasks.py noRetry   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / tasks.py CallDeferred   88% 8 1 1   50% 2 1   80%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / tasks.py CallDeferred.make_deferred   0% 63 63 0   0% 30 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / tasks.py CallDeferred.make_deferred.task   0% 3 3 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / tasks.py CallDeferred.wrapper   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / tasks.py callDeferred   0% 5 5 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / tasks.py PeriodicTask   100% 2 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / tasks.py PeriodicTask.make_decorator   70% 10 3 0   67% 6 2   69%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / tasks.py CallableTask   100% 2 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / tasks.py StartupTask   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / tasks.py runStartupTasks   0% 2 2 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / tasks.py MetaQueryIter.__init__   100% 3 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / tasks.py QueryIter.startIterOnQuery   0% 4 4 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / tasks.py QueryIter._requeueStep   0% 7 7 0   0% 4 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / tasks.py QueryIter._qryStep   0% 34 34 0   0% 8 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / tasks.py QueryIter.handleEntry   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / tasks.py QueryIter.handleFinish   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / tasks.py QueryIter.handleError   0% 3 3 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / tasks.py DeleteEntitiesIter.handleEntry   0% 4 4 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / tasks.py start_clear_transaction_marker   0% 2 2 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / tasks.py (no function)   96% 106 4 3   50% 6 3   94%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / utils / __init__.py utcNow   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / utils / __init__.py seoUrlToEntry   0% 28 28 0   0% 16 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / utils / __init__.py seoUrlToFunction   0% 20 20 0   0% 12 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / utils / __init__.py normalizeKey   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / utils / __init__.py ensure_iterable   44% 9 5 0   38% 8 3   41%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / utils / __init__.py build_content_disposition_header   0% 6 6 0   0% 2 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / utils / __init__.py __getattr__   21% 14 11 0   33% 6 2   25%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / utils / __init__.py (no function)   95% 22 1 0   50% 2 1   92%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / utils / json.py ViURJsonEncoder.default   69% 13 4 0   67% 12 2   68%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / utils / json.py ViURJsonEncoder.preprocess   78% 9 2 0   75% 8 2   76%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / utils / json.py dumps   100% 1 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / utils / json.py _decode_object_hook   69% 16 5 0   71% 14 4   70%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / utils / json.py loads   100% 1 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / utils / json.py (no function)   100% 13 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / utils / parse.py bool   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / utils / parse.py sortorder   0% 9 9 0   0% 6 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / utils / parse.py timedelta   100% 5 0 0   100% 4 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / utils / parse.py (no function)   100% 6 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / utils / string.py random   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / utils / string.py escape   57% 7 3 0   50% 4 2   55%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / utils / string.py unescape   100% 2 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / utils / string.py unescape.__escape_replace   100% 4 0 0   100% 2 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / utils / string.py normalize_ascii   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / utils / string.py is_prefix   0% 1 1 0   100% 0 0   0%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / utils / string.py (no function)   100% 13 0 0   100% 0 0   100%
 / home / runner / work / viur-core / viur-core / viur / src / viur / core / version.py (no function)   100% 2 0 0   100% 0 0   100%
Total     22% 12421 9749 49   8% 5354 199   17%

No items found using the specified filter.