Files
disknext/.xml
于小丘 54784eea3b Update codebase and add coverage report
Removed an old run configuration, added a new coverage XML report, and updated multiple source files including main.py, middleware, models, routers, services, tests, and utility modules. Also updated pyproject.toml and the lock file. These changes likely include code improvements, test coverage updates, and dependency adjustments.
2025-12-26 14:56:08 +08:00

4408 lines
194 KiB
XML

<?xml version="1.0" ?>
<coverage version="6.5.0" timestamp="1766727762349" lines-valid="4001" lines-covered="2385" line-rate="0.5961" branches-valid="1382" branches-covered="541" branch-rate="0.3915" complexity="0">
<!-- Generated by coverage.py: https://coverage.readthedocs.io -->
<!-- Based on https://raw.githubusercontent.com/cobertura/web/master/htdocs/xml/coverage-04.dtd -->
<sources>
<source>C:\Users\Administrator\Documents\Code\Server\middleware</source>
<source>C:\Users\Administrator\Documents\Code\Server\models</source>
<source>C:\Users\Administrator\Documents\Code\Server\routers</source>
<source>C:\Users\Administrator\Documents\Code\Server\service</source>
<source>C:\Users\Administrator\Documents\Code\Server\utils</source>
</sources>
<packages>
<package name="." line-rate="0.9495" branch-rate="0.6071" complexity="0">
<classes>
<class name="__init__.py" filename="__init__.py" complexity="0" line-rate="1" branch-rate="1">
<methods/>
<lines>
<line number="2" hits="1"/>
</lines>
</class>
<class name="auth.py" filename="auth.py" complexity="0" line-rate="0.3846" branch-rate="0">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="2" hits="1"/>
<line number="4" hits="1"/>
<line number="5" hits="1"/>
<line number="7" hits="1"/>
<line number="8" hits="1"/>
<line number="9" hits="1"/>
<line number="10" hits="1"/>
<line number="12" hits="1"/>
<line number="19" hits="0"/>
<line number="20" hits="0"/>
<line number="21" hits="0"/>
<line number="23" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="24,26"/>
<line number="24" hits="0"/>
<line number="26" hits="0"/>
<line number="29" hits="0"/>
<line number="30" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="31,33"/>
<line number="31" hits="0"/>
<line number="33" hits="0"/>
<line number="35" hits="0"/>
<line number="36" hits="0"/>
<line number="38" hits="1"/>
<line number="47" hits="0"/>
<line number="48" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="49,50"/>
<line number="49" hits="0"/>
<line number="50" hits="0"/>
</lines>
</class>
<class name="color.py" filename="color.py" complexity="0" line-rate="1" branch-rate="1">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="3" hits="1"/>
</lines>
</class>
<class name="database.py" filename="database.py" complexity="0" line-rate="1" branch-rate="1">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="2" hits="1"/>
<line number="3" hits="1"/>
<line number="4" hits="1"/>
<line number="5" hits="1"/>
<line number="6" hits="1"/>
<line number="8" hits="1"/>
<line number="10" hits="1"/>
<line number="21" hits="1"/>
<line number="23" hits="1"/>
<line number="24" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="25" hits="1"/>
<line number="27" hits="1"/>
<line number="31" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="32" hits="1"/>
</lines>
</class>
<class name="dependencies.py" filename="dependencies.py" complexity="0" line-rate="1" branch-rate="1">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="3" hits="1"/>
<line number="4" hits="1"/>
<line number="6" hits="1"/>
<line number="8" hits="1"/>
<line number="9" hits="1"/>
</lines>
</class>
<class name="download.py" filename="download.py" complexity="0" line-rate="1" branch-rate="1">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="2" hits="1"/>
<line number="3" hits="1"/>
<line number="5" hits="1"/>
<line number="7" hits="1"/>
<line number="8" hits="1"/>
<line number="15" hits="1"/>
<line number="17" hits="1"/>
<line number="18" hits="1"/>
<line number="19" hits="1"/>
<line number="20" hits="1"/>
<line number="21" hits="1"/>
<line number="22" hits="1"/>
<line number="25" hits="1"/>
<line number="33" hits="1"/>
<line number="36" hits="1"/>
<line number="37" hits="1"/>
<line number="39" hits="1"/>
<line number="40" hits="1"/>
<line number="42" hits="1"/>
<line number="43" hits="1"/>
<line number="45" hits="1"/>
<line number="46" hits="1"/>
<line number="48" hits="1"/>
<line number="49" hits="1"/>
<line number="51" hits="1"/>
<line number="52" hits="1"/>
<line number="54" hits="1"/>
<line number="55" hits="1"/>
<line number="57" hits="1"/>
<line number="58" hits="1"/>
<line number="60" hits="1"/>
<line number="61" hits="1"/>
<line number="64" hits="1"/>
<line number="67" hits="1"/>
<line number="72" hits="1"/>
<line number="75" hits="1"/>
<line number="76" hits="1"/>
<line number="79" hits="1"/>
<line number="82" hits="1"/>
<line number="87" hits="1"/>
<line number="89" hits="1"/>
<line number="90" hits="1"/>
<line number="92" hits="1"/>
<line number="93" hits="1"/>
<line number="95" hits="1"/>
<line number="96" hits="1"/>
<line number="98" hits="1"/>
<line number="99" hits="1"/>
<line number="101" hits="1"/>
<line number="102" hits="1"/>
<line number="105" hits="1"/>
<line number="106" hits="1"/>
<line number="111" hits="1"/>
<line number="114" hits="1"/>
<line number="117" hits="1"/>
<line number="122" hits="1"/>
<line number="123" hits="1"/>
<line number="125" hits="1"/>
<line number="126" hits="1"/>
<line number="128" hits="1"/>
<line number="129" hits="1"/>
<line number="131" hits="1"/>
<line number="132" hits="1"/>
<line number="134" hits="1"/>
<line number="135" hits="1"/>
<line number="137" hits="1"/>
<line number="138" hits="1"/>
<line number="140" hits="1"/>
<line number="141" hits="1"/>
<line number="143" hits="1"/>
<line number="144" hits="1"/>
<line number="146" hits="1"/>
<line number="147" hits="1"/>
<line number="149" hits="1"/>
<line number="150" hits="1"/>
<line number="153" hits="1"/>
<line number="158" hits="1"/>
<line number="160" hits="1"/>
<line number="166" hits="1"/>
<line number="168" hits="1"/>
<line number="173" hits="1"/>
<line number="176" hits="1"/>
<line number="180" hits="1"/>
<line number="182" hits="1"/>
<line number="186" hits="1"/>
<line number="188" hits="1"/>
<line number="189" hits="1"/>
<line number="191" hits="1"/>
<line number="192" hits="1"/>
<line number="194" hits="1"/>
<line number="195" hits="1"/>
</lines>
</class>
<class name="group.py" filename="group.py" complexity="0" line-rate="1" branch-rate="1">
<methods/>
<lines>
<line number="2" hits="1"/>
<line number="3" hits="1"/>
<line number="5" hits="1"/>
<line number="7" hits="1"/>
<line number="8" hits="1"/>
<line number="17" hits="1"/>
<line number="20" hits="1"/>
<line number="21" hits="1"/>
<line number="24" hits="1"/>
<line number="27" hits="1"/>
<line number="28" hits="1"/>
<line number="30" hits="1"/>
<line number="31" hits="1"/>
<line number="33" hits="1"/>
<line number="34" hits="1"/>
<line number="36" hits="1"/>
<line number="37" hits="1"/>
<line number="39" hits="1"/>
<line number="40" hits="1"/>
<line number="42" hits="1"/>
<line number="43" hits="1"/>
<line number="48" hits="1"/>
<line number="51" hits="1"/>
<line number="52" hits="1"/>
<line number="54" hits="1"/>
<line number="55" hits="1"/>
<line number="57" hits="1"/>
<line number="58" hits="1"/>
<line number="60" hits="1"/>
<line number="61" hits="1"/>
<line number="63" hits="1"/>
<line number="64" hits="1"/>
<line number="67" hits="1"/>
<line number="68" hits="1"/>
<line number="70" hits="1"/>
<line number="71" hits="1"/>
<line number="73" hits="1"/>
<line number="74" hits="1"/>
<line number="76" hits="1"/>
<line number="77" hits="1"/>
<line number="79" hits="1"/>
<line number="80" hits="1"/>
<line number="82" hits="1"/>
<line number="83" hits="1"/>
<line number="85" hits="1"/>
<line number="86" hits="1"/>
<line number="88" hits="1"/>
<line number="89" hits="1"/>
<line number="91" hits="1"/>
<line number="92" hits="1"/>
<line number="94" hits="1"/>
<line number="95" hits="1"/>
<line number="97" hits="1"/>
<line number="98" hits="1"/>
<line number="100" hits="1"/>
<line number="101" hits="1"/>
<line number="104" hits="1"/>
<line number="107" hits="1"/>
<line number="108" hits="1"/>
<line number="110" hits="1"/>
<line number="111" hits="1"/>
<line number="113" hits="1"/>
<line number="114" hits="1"/>
<line number="116" hits="1"/>
<line number="117" hits="1"/>
<line number="119" hits="1"/>
<line number="120" hits="1"/>
<line number="123" hits="1"/>
<line number="124" hits="1"/>
<line number="125" hits="1"/>
<line number="126" hits="1"/>
<line number="127" hits="1"/>
<line number="128" hits="1"/>
<line number="129" hits="1"/>
<line number="130" hits="1"/>
<line number="131" hits="1"/>
<line number="132" hits="1"/>
<line number="133" hits="1"/>
<line number="135" hits="1"/>
<line number="136" hits="1"/>
<line number="139" hits="1"/>
<line number="142" hits="1"/>
<line number="143" hits="1"/>
<line number="145" hits="1"/>
<line number="146" hits="1"/>
<line number="148" hits="1"/>
<line number="149" hits="1"/>
<line number="151" hits="1"/>
<line number="152" hits="1"/>
<line number="154" hits="1"/>
<line number="155" hits="1"/>
<line number="157" hits="1"/>
<line number="158" hits="1"/>
<line number="160" hits="1"/>
<line number="161" hits="1"/>
<line number="163" hits="1"/>
<line number="164" hits="1"/>
<line number="166" hits="1"/>
<line number="167" hits="1"/>
<line number="170" hits="1"/>
<line number="171" hits="1"/>
<line number="172" hits="1"/>
<line number="173" hits="1"/>
<line number="174" hits="1"/>
<line number="175" hits="1"/>
<line number="176" hits="1"/>
<line number="177" hits="1"/>
<line number="178" hits="1"/>
<line number="179" hits="1"/>
<line number="180" hits="1"/>
<line number="183" hits="1"/>
<line number="186" hits="1"/>
<line number="187" hits="1"/>
<line number="189" hits="1"/>
<line number="190" hits="1"/>
<line number="193" hits="1"/>
<line number="196" hits="1"/>
<line number="197" hits="1"/>
<line number="199" hits="1"/>
<line number="200" hits="1"/>
<line number="202" hits="1"/>
<line number="203" hits="1"/>
<line number="205" hits="1"/>
<line number="206" hits="1"/>
<line number="208" hits="1"/>
<line number="209" hits="1"/>
<line number="211" hits="1"/>
<line number="212" hits="1"/>
<line number="214" hits="1"/>
<line number="215" hits="1"/>
<line number="221" hits="1"/>
<line number="224" hits="1"/>
<line number="227" hits="1"/>
<line number="232" hits="1"/>
<line number="234" hits="1"/>
<line number="235" hits="1"/>
<line number="237" hits="1"/>
<line number="238" hits="1"/>
<line number="240" hits="1"/>
<line number="241" hits="1"/>
<line number="243" hits="1"/>
<line number="244" hits="1"/>
<line number="246" hits="1"/>
<line number="247" hits="1"/>
<line number="250" hits="1"/>
<line number="253" hits="1"/>
<line number="256" hits="1"/>
<line number="257" hits="1"/>
<line number="259" hits="1"/>
<line number="260" hits="1"/>
<line number="262" hits="1"/>
<line number="263" hits="1"/>
<line number="265" hits="1"/>
<line number="266" hits="1"/>
<line number="268" hits="1"/>
<line number="269" hits="1"/>
<line number="271" hits="1"/>
<line number="272" hits="1"/>
<line number="275" hits="1"/>
<line number="281" hits="1"/>
<line number="287" hits="1"/>
<line number="291" hits="1"/>
<line number="293" hits="1"/>
<line number="297" hits="1"/>
<line number="299" hits="1"/>
<line number="301" hits="1"/>
<line number="302" hits="1"/>
</lines>
</class>
<class name="migration.py" filename="migration.py" complexity="0" line-rate="0.5543" branch-rate="0.4333">
<methods/>
<lines>
<line number="2" hits="1"/>
<line number="3" hits="1"/>
<line number="4" hits="1"/>
<line number="6" hits="1"/>
<line number="8" hits="1"/>
<line number="15" hits="1"/>
<line number="17" hits="1"/>
<line number="18" hits="1"/>
<line number="19" hits="1"/>
<line number="20" hits="1"/>
<line number="22" hits="1"/>
<line number="24" hits="1"/>
<line number="120" hits="1"/>
<line number="121" hits="1"/>
<line number="122" hits="1"/>
<line number="123" hits="1"/>
<line number="125" hits="1"/>
<line number="127" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="exit"/>
<line number="129" hits="1"/>
<line number="133" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="137"/>
<line number="134" hits="1"/>
<line number="137" hits="0"/>
<line number="139" hits="1"/>
<line number="140" hits="1"/>
<line number="141" hits="1"/>
<line number="142" hits="1"/>
<line number="143" hits="1"/>
<line number="145" hits="1"/>
<line number="147" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="149" hits="1"/>
<line number="150" hits="1"/>
<line number="153" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="154"/>
<line number="154" hits="0"/>
<line number="161" hits="0"/>
<line number="162" hits="0"/>
<line number="164" hits="0"/>
<line number="176" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="177,184"/>
<line number="177" hits="0"/>
<line number="181" hits="0"/>
<line number="184" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="185"/>
<line number="185" hits="0"/>
<line number="191" hits="0"/>
<line number="192" hits="0"/>
<line number="194" hits="0"/>
<line number="200" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="201,208"/>
<line number="201" hits="0"/>
<line number="205" hits="0"/>
<line number="208" hits="0"/>
<line number="209" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="210,214"/>
<line number="210" hits="0"/>
<line number="211" hits="0"/>
<line number="214" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="215"/>
<line number="215" hits="0"/>
<line number="220" hits="0"/>
<line number="221" hits="0"/>
<line number="223" hits="0"/>
<line number="230" hits="1"/>
<line number="231" hits="1"/>
<line number="232" hits="1"/>
<line number="233" hits="1"/>
<line number="234" hits="1"/>
<line number="235" hits="1"/>
<line number="237" hits="1"/>
<line number="239" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="241" hits="1"/>
<line number="243" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="245"/>
<line number="245" hits="0"/>
<line number="246" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="247,250"/>
<line number="247" hits="0"/>
<line number="250" hits="0"/>
<line number="251" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="252,253"/>
<line number="252" hits="0"/>
<line number="253" hits="0"/>
<line number="265" hits="0"/>
<line number="266" hits="0"/>
<line number="267" hits="0"/>
<line number="270" hits="0"/>
<line number="278" hits="0"/>
<line number="279" hits="0"/>
<line number="283" hits="1"/>
<line number="284" hits="1"/>
<line number="285" hits="1"/>
<line number="286" hits="1"/>
<line number="288" hits="1"/>
<line number="290" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="292" hits="1"/>
<line number="294" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="295"/>
<line number="295" hits="0"/>
<line number="306" hits="0"/>
<line number="309" hits="0"/>
<line number="310" hits="0"/>
<line number="312" hits="0"/>
</lines>
</class>
<class name="model_base.py" filename="model_base.py" complexity="0" line-rate="1" branch-rate="1">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="2" hits="1"/>
<line number="4" hits="1"/>
<line number="6" hits="1"/>
<line number="8" hits="1"/>
<line number="11" hits="1"/>
<line number="12" hits="1"/>
<line number="14" hits="1"/>
<line number="17" hits="1"/>
<line number="18" hits="1"/>
<line number="20" hits="1"/>
<line number="23" hits="1"/>
<line number="24" hits="1"/>
<line number="26" hits="1"/>
<line number="27" hits="1"/>
<line number="29" hits="1"/>
<line number="32" hits="1"/>
<line number="33" hits="1"/>
<line number="35" hits="1"/>
<line number="38" hits="1"/>
<line number="39" hits="1"/>
</lines>
</class>
<class name="node.py" filename="node.py" complexity="0" line-rate="1" branch-rate="1">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="2" hits="1"/>
<line number="4" hits="1"/>
<line number="6" hits="1"/>
<line number="7" hits="1"/>
<line number="13" hits="1"/>
<line number="15" hits="1"/>
<line number="16" hits="1"/>
<line number="17" hits="1"/>
<line number="18" hits="1"/>
<line number="21" hits="1"/>
<line number="23" hits="1"/>
<line number="24" hits="1"/>
<line number="25" hits="1"/>
<line number="26" hits="1"/>
<line number="29" hits="1"/>
<line number="32" hits="1"/>
<line number="33" hits="1"/>
<line number="35" hits="1"/>
<line number="36" hits="1"/>
<line number="38" hits="1"/>
<line number="39" hits="1"/>
<line number="41" hits="1"/>
<line number="42" hits="1"/>
<line number="44" hits="1"/>
<line number="45" hits="1"/>
<line number="48" hits="1"/>
<line number="51" hits="1"/>
<line number="57" hits="1"/>
<line number="60" hits="1"/>
<line number="61" hits="1"/>
<line number="64" hits="1"/>
<line number="67" hits="1"/>
<line number="71" hits="1"/>
<line number="72" hits="1"/>
<line number="74" hits="1"/>
<line number="75" hits="1"/>
<line number="77" hits="1"/>
<line number="78" hits="1"/>
<line number="80" hits="1"/>
<line number="81" hits="1"/>
<line number="83" hits="1"/>
<line number="84" hits="1"/>
<line number="86" hits="1"/>
<line number="87" hits="1"/>
<line number="89" hits="1"/>
<line number="90" hits="1"/>
<line number="92" hits="1"/>
<line number="93" hits="1"/>
<line number="96" hits="1"/>
<line number="100" hits="1"/>
<line number="102" hits="1"/>
<line number="103" hits="1"/>
</lines>
</class>
<class name="object.py" filename="object.py" complexity="0" line-rate="0.9783" branch-rate="0.7778">
<methods/>
<lines>
<line number="2" hits="1"/>
<line number="3" hits="1"/>
<line number="4" hits="1"/>
<line number="6" hits="1"/>
<line number="7" hits="1"/>
<line number="9" hits="1"/>
<line number="10" hits="1"/>
<line number="20" hits="1"/>
<line number="22" hits="1"/>
<line number="23" hits="1"/>
<line number="25" hits="1"/>
<line number="27" hits="1"/>
<line number="28" hits="1"/>
<line number="29" hits="1"/>
<line number="30" hits="1"/>
<line number="31" hits="1"/>
<line number="32" hits="1"/>
<line number="33" hits="1"/>
<line number="34" hits="1"/>
<line number="35" hits="1"/>
<line number="38" hits="1"/>
<line number="41" hits="1"/>
<line number="42" hits="1"/>
<line number="44" hits="1"/>
<line number="45" hits="1"/>
<line number="47" hits="1"/>
<line number="48" hits="1"/>
<line number="50" hits="1"/>
<line number="51" hits="1"/>
<line number="53" hits="1"/>
<line number="54" hits="1"/>
<line number="56" hits="1"/>
<line number="57" hits="1"/>
<line number="59" hits="1"/>
<line number="60" hits="1"/>
<line number="65" hits="1"/>
<line number="68" hits="1"/>
<line number="69" hits="1"/>
<line number="71" hits="1"/>
<line number="72" hits="1"/>
<line number="74" hits="1"/>
<line number="75" hits="1"/>
<line number="80" hits="1"/>
<line number="83" hits="1"/>
<line number="84" hits="1"/>
<line number="86" hits="1"/>
<line number="87" hits="1"/>
<line number="89" hits="1"/>
<line number="90" hits="1"/>
<line number="93" hits="1"/>
<line number="96" hits="1"/>
<line number="97" hits="1"/>
<line number="99" hits="1"/>
<line number="100" hits="1"/>
<line number="103" hits="1"/>
<line number="106" hits="1"/>
<line number="107" hits="1"/>
<line number="110" hits="1"/>
<line number="113" hits="1"/>
<line number="114" hits="1"/>
<line number="116" hits="1"/>
<line number="117" hits="1"/>
<line number="119" hits="1"/>
<line number="120" hits="1"/>
<line number="122" hits="1"/>
<line number="123" hits="1"/>
<line number="125" hits="1"/>
<line number="126" hits="1"/>
<line number="129" hits="1"/>
<line number="132" hits="1"/>
<line number="133" hits="1"/>
<line number="135" hits="1"/>
<line number="136" hits="1"/>
<line number="138" hits="1"/>
<line number="139" hits="1"/>
<line number="141" hits="1"/>
<line number="142" hits="1"/>
<line number="144" hits="1"/>
<line number="145" hits="1"/>
<line number="148" hits="1"/>
<line number="151" hits="1"/>
<line number="152" hits="1"/>
<line number="154" hits="1"/>
<line number="155" hits="1"/>
<line number="157" hits="1"/>
<line number="158" hits="1"/>
<line number="160" hits="1"/>
<line number="161" hits="1"/>
<line number="166" hits="1"/>
<line number="169" hits="1"/>
<line number="175" hits="1"/>
<line number="178" hits="1"/>
<line number="179" hits="1"/>
<line number="182" hits="1"/>
<line number="195" hits="1"/>
<line number="212" hits="1"/>
<line number="213" hits="1"/>
<line number="215" hits="1"/>
<line number="216" hits="1"/>
<line number="219" hits="1"/>
<line number="223" hits="1"/>
<line number="224" hits="1"/>
<line number="226" hits="1"/>
<line number="227" hits="1"/>
<line number="229" hits="1"/>
<line number="235" hits="1"/>
<line number="239" hits="1"/>
<line number="245" hits="1"/>
<line number="247" hits="1"/>
<line number="252" hits="1"/>
<line number="254" hits="1"/>
<line number="259" hits="1"/>
<line number="263" hits="1"/>
<line number="264" hits="1"/>
<line number="266" hits="1"/>
<line number="267" hits="1"/>
<line number="269" hits="1"/>
<line number="276" hits="1"/>
<line number="278" hits="1"/>
<line number="279" hits="1"/>
<line number="283" hits="1"/>
<line number="287" hits="1"/>
<line number="289" hits="1"/>
<line number="292" hits="1"/>
<line number="294" hits="1"/>
<line number="295" hits="1"/>
<line number="298" hits="1"/>
<line number="302" hits="1"/>
<line number="304" hits="1"/>
<line number="308" hits="1"/>
<line number="311" hits="1"/>
<line number="315" hits="1"/>
<line number="317" hits="1"/>
<line number="321" hits="1"/>
<line number="323" hits="1"/>
<line number="327" hits="1"/>
<line number="329" hits="1"/>
<line number="330" hits="1"/>
<line number="334" hits="1"/>
<line number="335" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="341" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="342"/>
<line number="342" hits="0"/>
<line number="343" hits="1"/>
<line number="345" hits="1"/>
<line number="346" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="348" hits="1"/>
<line number="350" hits="1"/>
<line number="351" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="353" hits="1"/>
<line number="357" hits="1"/>
<line number="358" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="366" hits="1"/>
<line number="371" hits="1"/>
<line number="372" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="388" hits="1"/>
<line number="389" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="390"/>
<line number="390" hits="0"/>
<line number="393" hits="1"/>
<line number="394" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="395"/>
<line number="395" hits="0"/>
<line number="398" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="400"/>
<line number="399" hits="1"/>
<line number="400" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="exit"/>
<line number="403" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="404"/>
<line number="404" hits="0"/>
<line number="407" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="416"/>
<line number="409" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="411" hits="1"/>
<line number="413" hits="1"/>
<line number="416" hits="1"/>
<line number="417" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="418" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="419"/>
<line number="419" hits="0"/>
<line number="421" hits="1"/>
<line number="428" hits="1"/>
<line number="430" hits="1"/>
<line number="431" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="440" hits="1"/>
<line number="449" hits="1"/>
<line number="452" hits="1"/>
<line number="453" hits="1"/>
<line number="455" hits="1"/>
<line number="456" hits="1"/>
<line number="458" hits="1"/>
<line number="459" hits="1"/>
<line number="461" hits="1"/>
<line number="462" hits="1"/>
<line number="465" hits="1"/>
<line number="474" hits="1"/>
<line number="475" hits="1"/>
<line number="477" hits="1"/>
<line number="478" hits="1"/>
<line number="480" hits="1"/>
<line number="481" hits="1"/>
<line number="483" hits="1"/>
<line number="484" hits="1"/>
<line number="487" hits="1"/>
<line number="488" hits="1"/>
<line number="490" hits="1"/>
<line number="491" hits="1"/>
<line number="493" hits="1"/>
<line number="494" hits="1"/>
<line number="497" hits="1"/>
<line number="498" hits="1"/>
<line number="500" hits="1"/>
<line number="503" hits="1"/>
<line number="505" hits="1"/>
<line number="506" hits="1"/>
<line number="508" hits="1"/>
<line number="509" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="511" hits="0"/>
<line number="513" hits="1"/>
<line number="514" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="516" hits="0"/>
<line number="521" hits="1"/>
<line number="524" hits="1"/>
<line number="525" hits="1"/>
<line number="527" hits="1"/>
<line number="528" hits="1"/>
<line number="530" hits="1"/>
<line number="531" hits="1"/>
<line number="533" hits="1"/>
<line number="534" hits="1"/>
<line number="537" hits="1"/>
<line number="540" hits="1"/>
<line number="541" hits="1"/>
<line number="543" hits="1"/>
<line number="544" hits="1"/>
<line number="546" hits="1"/>
<line number="547" hits="1"/>
<line number="549" hits="1"/>
<line number="550" hits="1"/>
<line number="552" hits="1"/>
<line number="553" hits="1"/>
<line number="555" hits="1"/>
<line number="556" hits="1"/>
<line number="558" hits="1"/>
<line number="559" hits="1"/>
<line number="562" hits="1"/>
<line number="565" hits="1"/>
<line number="566" hits="1"/>
<line number="568" hits="1"/>
<line number="569" hits="1"/>
<line number="571" hits="1"/>
<line number="572" hits="1"/>
<line number="574" hits="1"/>
<line number="575" hits="1"/>
<line number="578" hits="1"/>
<line number="581" hits="1"/>
<line number="582" hits="1"/>
<line number="584" hits="1"/>
<line number="585" hits="1"/>
<line number="587" hits="1"/>
<line number="588" hits="1"/>
<line number="593" hits="1"/>
<line number="596" hits="1"/>
<line number="597" hits="1"/>
<line number="599" hits="1"/>
<line number="600" hits="1"/>
<line number="603" hits="1"/>
<line number="606" hits="1"/>
<line number="607" hits="1"/>
<line number="609" hits="1"/>
<line number="610" hits="1"/>
<line number="613" hits="1"/>
<line number="616" hits="1"/>
<line number="617" hits="1"/>
<line number="619" hits="1"/>
<line number="620" hits="1"/>
<line number="622" hits="1"/>
<line number="623" hits="1"/>
<line number="625" hits="1"/>
<line number="626" hits="1"/>
<line number="628" hits="1"/>
<line number="629" hits="1"/>
<line number="631" hits="1"/>
<line number="632" hits="1"/>
<line number="634" hits="1"/>
<line number="635" hits="1"/>
<line number="638" hits="1"/>
<line number="642" hits="1"/>
<line number="643" hits="1"/>
<line number="645" hits="1"/>
<line number="646" hits="1"/>
<line number="648" hits="1"/>
<line number="649" hits="1"/>
<line number="651" hits="1"/>
<line number="652" hits="1"/>
<line number="654" hits="1"/>
<line number="655" hits="1"/>
<line number="658" hits="1"/>
<line number="659" hits="1"/>
<line number="661" hits="1"/>
<line number="662" hits="1"/>
<line number="664" hits="1"/>
<line number="665" hits="1"/>
<line number="668" hits="1"/>
<line number="669" hits="1"/>
<line number="671" hits="1"/>
<line number="672" hits="1"/>
<line number="677" hits="1"/>
<line number="680" hits="1"/>
<line number="681" hits="1"/>
<line number="683" hits="1"/>
<line number="684" hits="1"/>
<line number="686" hits="1"/>
<line number="687" hits="1"/>
<line number="689" hits="1"/>
<line number="690" hits="1"/>
<line number="692" hits="1"/>
<line number="693" hits="1"/>
<line number="695" hits="1"/>
<line number="696" hits="1"/>
<line number="699" hits="1"/>
<line number="702" hits="1"/>
<line number="703" hits="1"/>
<line number="705" hits="1"/>
<line number="706" hits="1"/>
<line number="709" hits="1"/>
<line number="712" hits="1"/>
<line number="713" hits="1"/>
<line number="715" hits="1"/>
<line number="716" hits="1"/>
</lines>
</class>
<class name="order.py" filename="order.py" complexity="0" line-rate="1" branch-rate="1">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="2" hits="1"/>
<line number="3" hits="1"/>
<line number="5" hits="1"/>
<line number="7" hits="1"/>
<line number="8" hits="1"/>
<line number="14" hits="1"/>
<line number="16" hits="1"/>
<line number="17" hits="1"/>
<line number="18" hits="1"/>
<line number="19" hits="1"/>
<line number="20" hits="1"/>
<line number="21" hits="1"/>
<line number="24" hits="1"/>
<line number="30" hits="1"/>
<line number="33" hits="1"/>
<line number="34" hits="1"/>
<line number="36" hits="1"/>
<line number="37" hits="1"/>
<line number="39" hits="1"/>
<line number="40" hits="1"/>
<line number="42" hits="1"/>
<line number="43" hits="1"/>
<line number="45" hits="1"/>
<line number="46" hits="1"/>
<line number="48" hits="1"/>
<line number="49" hits="1"/>
<line number="51" hits="1"/>
<line number="52" hits="1"/>
<line number="54" hits="1"/>
<line number="55" hits="1"/>
<line number="58" hits="1"/>
<line number="63" hits="1"/>
<line number="66" hits="1"/>
</lines>
</class>
<class name="physical_file.py" filename="physical_file.py" complexity="0" line-rate="0.8125" branch-rate="0.5">
<methods/>
<lines>
<line number="12" hits="1"/>
<line number="13" hits="1"/>
<line number="15" hits="1"/>
<line number="17" hits="1"/>
<line number="18" hits="1"/>
<line number="25" hits="1"/>
<line number="28" hits="1"/>
<line number="29" hits="1"/>
<line number="31" hits="1"/>
<line number="32" hits="1"/>
<line number="34" hits="1"/>
<line number="35" hits="1"/>
<line number="38" hits="1"/>
<line number="46" hits="1"/>
<line number="51" hits="1"/>
<line number="56" hits="1"/>
<line number="58" hits="1"/>
<line number="59" hits="1"/>
<line number="62" hits="1"/>
<line number="63" hits="1"/>
<line number="65" hits="1"/>
<line number="66" hits="1"/>
<line number="68" hits="1"/>
<line number="74" hits="0"/>
<line number="75" hits="0"/>
<line number="77" hits="1"/>
<line number="83" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="84,85"/>
<line number="84" hits="0"/>
<line number="85" hits="0"/>
<line number="87" hits="1"/>
<line number="88" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="90" hits="0"/>
</lines>
</class>
<class name="policy.py" filename="policy.py" complexity="0" line-rate="1" branch-rate="1">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="2" hits="1"/>
<line number="4" hits="1"/>
<line number="5" hits="1"/>
<line number="7" hits="1"/>
<line number="8" hits="1"/>
<line number="15" hits="1"/>
<line number="18" hits="1"/>
<line number="23" hits="1"/>
<line number="25" hits="1"/>
<line number="30" hits="1"/>
<line number="33" hits="1"/>
<line number="34" hits="1"/>
<line number="35" hits="1"/>
<line number="38" hits="1"/>
<line number="41" hits="1"/>
<line number="42" hits="1"/>
<line number="44" hits="1"/>
<line number="45" hits="1"/>
<line number="47" hits="1"/>
<line number="48" hits="1"/>
<line number="50" hits="1"/>
<line number="51" hits="1"/>
<line number="53" hits="1"/>
<line number="54" hits="1"/>
<line number="56" hits="1"/>
<line number="57" hits="1"/>
<line number="60" hits="1"/>
<line number="63" hits="1"/>
<line number="68" hits="1"/>
<line number="71" hits="1"/>
<line number="72" hits="1"/>
<line number="75" hits="1"/>
<line number="78" hits="1"/>
<line number="79" hits="1"/>
<line number="81" hits="1"/>
<line number="82" hits="1"/>
<line number="84" hits="1"/>
<line number="85" hits="1"/>
<line number="87" hits="1"/>
<line number="88" hits="1"/>
<line number="90" hits="1"/>
<line number="91" hits="1"/>
<line number="93" hits="1"/>
<line number="94" hits="1"/>
<line number="96" hits="1"/>
<line number="97" hits="1"/>
<line number="99" hits="1"/>
<line number="100" hits="1"/>
<line number="102" hits="1"/>
<line number="103" hits="1"/>
<line number="105" hits="1"/>
<line number="106" hits="1"/>
<line number="108" hits="1"/>
<line number="109" hits="1"/>
<line number="111" hits="1"/>
<line number="112" hits="1"/>
<line number="114" hits="1"/>
<line number="115" hits="1"/>
<line number="118" hits="1"/>
<line number="122" hits="1"/>
<line number="125" hits="1"/>
<line number="126" hits="1"/>
<line number="129" hits="1"/>
<line number="134" hits="1"/>
<line number="135" hits="1" branch="true" condition-coverage="100% (2/2)"/>
</lines>
</class>
<class name="redeem.py" filename="redeem.py" complexity="0" line-rate="1" branch-rate="1">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="3" hits="1"/>
<line number="5" hits="1"/>
<line number="6" hits="1"/>
<line number="9" hits="1"/>
<line number="15" hits="1"/>
<line number="18" hits="1"/>
<line number="19" hits="1"/>
<line number="20" hits="1"/>
<line number="21" hits="1"/>
<line number="22" hits="1"/>
<line number="23" hits="1"/>
</lines>
</class>
<class name="report.py" filename="report.py" complexity="0" line-rate="1" branch-rate="1">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="2" hits="1"/>
<line number="4" hits="1"/>
<line number="6" hits="1"/>
<line number="7" hits="1"/>
<line number="13" hits="1"/>
<line number="19" hits="1"/>
<line number="22" hits="1"/>
<line number="23" hits="1"/>
<line number="24" hits="1"/>
<line number="27" hits="1"/>
<line number="32" hits="1"/>
<line number="35" hits="1"/>
</lines>
</class>
<class name="setting.py" filename="setting.py" complexity="0" line-rate="1" branch-rate="1">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="3" hits="1"/>
<line number="5" hits="1"/>
<line number="6" hits="1"/>
<line number="7" hits="1"/>
<line number="9" hits="1"/>
<line number="11" hits="1"/>
<line number="12" hits="1"/>
<line number="13" hits="1"/>
<line number="17" hits="1"/>
<line number="20" hits="1"/>
<line number="21" hits="1"/>
<line number="29" hits="1"/>
<line number="30" hits="1"/>
<line number="32" hits="1"/>
<line number="33" hits="1"/>
<line number="35" hits="1"/>
<line number="36" hits="1"/>
<line number="38" hits="1"/>
<line number="39" hits="1"/>
<line number="41" hits="1"/>
<line number="42" hits="1"/>
<line number="44" hits="1"/>
<line number="45" hits="1"/>
<line number="50" hits="1"/>
<line number="53" hits="1"/>
<line number="54" hits="1"/>
<line number="56" hits="1"/>
<line number="57" hits="1"/>
<line number="60" hits="1"/>
<line number="63" hits="1"/>
<line number="64" hits="1"/>
<line number="67" hits="1"/>
<line number="70" hits="1"/>
<line number="71" hits="1"/>
<line number="76" hits="1"/>
<line number="79" hits="1"/>
<line number="80" hits="1"/>
<line number="81" hits="1"/>
<line number="82" hits="1"/>
<line number="83" hits="1"/>
<line number="84" hits="1"/>
<line number="85" hits="1"/>
<line number="86" hits="1"/>
<line number="87" hits="1"/>
<line number="88" hits="1"/>
<line number="89" hits="1"/>
<line number="90" hits="1"/>
<line number="91" hits="1"/>
<line number="92" hits="1"/>
<line number="93" hits="1"/>
<line number="94" hits="1"/>
<line number="95" hits="1"/>
<line number="96" hits="1"/>
<line number="97" hits="1"/>
<line number="98" hits="1"/>
<line number="99" hits="1"/>
<line number="100" hits="1"/>
<line number="101" hits="1"/>
<line number="102" hits="1"/>
<line number="103" hits="1"/>
<line number="104" hits="1"/>
<line number="107" hits="1"/>
<line number="110" hits="1"/>
<line number="112" hits="1"/>
<line number="113" hits="1"/>
<line number="115" hits="1"/>
<line number="116" hits="1"/>
<line number="118" hits="1"/>
<line number="119" hits="1"/>
</lines>
</class>
<class name="share.py" filename="share.py" complexity="0" line-rate="0.9487" branch-rate="1">
<methods/>
<lines>
<line number="2" hits="1"/>
<line number="3" hits="1"/>
<line number="4" hits="1"/>
<line number="6" hits="1"/>
<line number="8" hits="1"/>
<line number="9" hits="1"/>
<line number="17" hits="1"/>
<line number="20" hits="1"/>
<line number="27" hits="1"/>
<line number="28" hits="1"/>
<line number="31" hits="1"/>
<line number="33" hits="1"/>
<line number="38" hits="1"/>
<line number="40" hits="1"/>
<line number="41" hits="1"/>
<line number="43" hits="1"/>
<line number="44" hits="1"/>
<line number="46" hits="1"/>
<line number="47" hits="1"/>
<line number="49" hits="1"/>
<line number="50" hits="1"/>
<line number="52" hits="1"/>
<line number="53" hits="1"/>
<line number="55" hits="1"/>
<line number="56" hits="1"/>
<line number="58" hits="1"/>
<line number="59" hits="1"/>
<line number="62" hits="1"/>
<line number="67" hits="1"/>
<line number="70" hits="1"/>
<line number="71" hits="1"/>
<line number="73" hits="1"/>
<line number="74" hits="1"/>
<line number="76" hits="1"/>
<line number="80" hits="1"/>
<line number="82" hits="1"/>
<line number="83" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="85" hits="0"/>
<line number="86" hits="0"/>
</lines>
</class>
<class name="source_link.py" filename="source_link.py" complexity="0" line-rate="1" branch-rate="1">
<methods/>
<lines>
<line number="2" hits="1"/>
<line number="3" hits="1"/>
<line number="5" hits="1"/>
<line number="7" hits="1"/>
<line number="8" hits="1"/>
<line number="14" hits="1"/>
<line number="17" hits="1"/>
<line number="21" hits="1"/>
<line number="22" hits="1"/>
<line number="24" hits="1"/>
<line number="25" hits="1"/>
<line number="28" hits="1"/>
<line number="33" hits="1"/>
<line number="36" hits="1"/>
<line number="37" hits="1"/>
</lines>
</class>
<class name="storage_pack.py" filename="storage_pack.py" complexity="0" line-rate="1" branch-rate="1">
<methods/>
<lines>
<line number="2" hits="1"/>
<line number="3" hits="1"/>
<line number="4" hits="1"/>
<line number="6" hits="1"/>
<line number="8" hits="1"/>
<line number="9" hits="1"/>
<line number="14" hits="1"/>
<line number="17" hits="1"/>
<line number="18" hits="1"/>
<line number="19" hits="1"/>
<line number="20" hits="1"/>
<line number="23" hits="1"/>
<line number="28" hits="1"/>
<line number="31" hits="1"/>
</lines>
</class>
<class name="tag.py" filename="tag.py" complexity="0" line-rate="1" branch-rate="1">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="2" hits="1"/>
<line number="3" hits="1"/>
<line number="4" hits="1"/>
<line number="6" hits="1"/>
<line number="8" hits="1"/>
<line number="9" hits="1"/>
<line number="15" hits="1"/>
<line number="17" hits="1"/>
<line number="18" hits="1"/>
<line number="19" hits="1"/>
<line number="20" hits="1"/>
<line number="23" hits="1"/>
<line number="26" hits="1"/>
<line number="28" hits="1"/>
<line number="29" hits="1"/>
<line number="31" hits="1"/>
<line number="32" hits="1"/>
<line number="34" hits="1"/>
<line number="35" hits="1"/>
<line number="37" hits="1"/>
<line number="38" hits="1"/>
<line number="39" hits="1"/>
<line number="42" hits="1"/>
<line number="47" hits="1"/>
<line number="50" hits="1"/>
</lines>
</class>
<class name="task.py" filename="task.py" complexity="0" line-rate="1" branch-rate="1">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="2" hits="1"/>
<line number="3" hits="1"/>
<line number="4" hits="1"/>
<line number="6" hits="1"/>
<line number="8" hits="1"/>
<line number="9" hits="1"/>
<line number="16" hits="1"/>
<line number="18" hits="1"/>
<line number="19" hits="1"/>
<line number="20" hits="1"/>
<line number="21" hits="1"/>
<line number="22" hits="1"/>
<line number="23" hits="1"/>
<line number="24" hits="1"/>
<line number="25" hits="1"/>
<line number="28" hits="1"/>
<line number="34" hits="1"/>
<line number="37" hits="1"/>
<line number="38" hits="1"/>
<line number="40" hits="1"/>
<line number="41" hits="1"/>
<line number="43" hits="1"/>
<line number="44" hits="1"/>
<line number="49" hits="1"/>
<line number="52" hits="1"/>
<line number="57" hits="1"/>
<line number="60" hits="1"/>
<line number="61" hits="1"/>
<line number="64" hits="1"/>
<line number="67" hits="1"/>
<line number="73" hits="1"/>
<line number="74" hits="1"/>
<line number="76" hits="1"/>
<line number="77" hits="1"/>
<line number="79" hits="1"/>
<line number="80" hits="1"/>
<line number="82" hits="1"/>
<line number="83" hits="1"/>
<line number="86" hits="1"/>
<line number="91" hits="1"/>
<line number="94" hits="1"/>
<line number="98" hits="1"/>
<line number="100" hits="1"/>
<line number="101" hits="1"/>
<line number="103" hits="1"/>
<line number="104" hits="1"/>
</lines>
</class>
<class name="user.py" filename="user.py" complexity="0" line-rate="1" branch-rate="1">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="2" hits="1"/>
<line number="3" hits="1"/>
<line number="4" hits="1"/>
<line number="6" hits="1"/>
<line number="7" hits="1"/>
<line number="9" hits="1"/>
<line number="10" hits="1"/>
<line number="11" hits="1"/>
<line number="25" hits="1"/>
<line number="28" hits="1"/>
<line number="29" hits="1"/>
<line number="30" hits="1"/>
<line number="32" hits="1"/>
<line number="35" hits="1"/>
<line number="36" hits="1"/>
<line number="37" hits="1"/>
<line number="39" hits="1"/>
<line number="42" hits="1"/>
<line number="43" hits="1"/>
<line number="44" hits="1"/>
<line number="49" hits="1"/>
<line number="52" hits="1"/>
<line number="53" hits="1"/>
<line number="55" hits="1"/>
<line number="56" hits="1"/>
<line number="58" hits="1"/>
<line number="59" hits="1"/>
<line number="64" hits="1"/>
<line number="67" hits="1"/>
<line number="68" hits="1"/>
<line number="71" hits="1"/>
<line number="73" hits="1"/>
<line number="74" hits="1"/>
<line number="76" hits="1"/>
<line number="77" hits="1"/>
<line number="80" hits="1"/>
<line number="83" hits="1"/>
<line number="84" hits="1"/>
<line number="87" hits="1"/>
<line number="89" hits="1"/>
<line number="90" hits="1"/>
<line number="93" hits="1"/>
<line number="96" hits="1"/>
<line number="97" hits="1"/>
<line number="99" hits="1"/>
<line number="100" hits="1"/>
<line number="102" hits="1"/>
<line number="103" hits="1"/>
<line number="105" hits="1"/>
<line number="106" hits="1"/>
<line number="108" hits="1"/>
<line number="109" hits="1"/>
<line number="111" hits="1"/>
<line number="112" hits="1"/>
<line number="114" hits="1"/>
<line number="117" hits="1"/>
<line number="118" hits="1"/>
<line number="120" hits="1"/>
<line number="121" hits="1"/>
<line number="123" hits="1"/>
<line number="126" hits="1"/>
<line number="127" hits="1"/>
<line number="129" hits="1"/>
<line number="130" hits="1"/>
<line number="133" hits="1"/>
<line number="137" hits="1"/>
<line number="140" hits="1"/>
<line number="141" hits="1"/>
<line number="143" hits="1"/>
<line number="144" hits="1"/>
<line number="146" hits="1"/>
<line number="147" hits="1"/>
<line number="149" hits="1"/>
<line number="150" hits="1"/>
<line number="152" hits="1"/>
<line number="153" hits="1"/>
<line number="155" hits="1"/>
<line number="156" hits="1"/>
<line number="158" hits="1"/>
<line number="159" hits="1"/>
<line number="162" hits="1"/>
<line number="165" hits="1"/>
<line number="166" hits="1"/>
<line number="168" hits="1"/>
<line number="169" hits="1"/>
<line number="171" hits="1"/>
<line number="172" hits="1"/>
<line number="174" hits="1"/>
<line number="175" hits="1"/>
<line number="177" hits="1"/>
<line number="178" hits="1"/>
<line number="180" hits="1"/>
<line number="181" hits="1"/>
<line number="183" hits="1"/>
<line number="184" hits="1"/>
<line number="186" hits="1"/>
<line number="187" hits="1"/>
<line number="190" hits="1"/>
<line number="193" hits="1"/>
<line number="194" hits="1"/>
<line number="196" hits="1"/>
<line number="197" hits="1"/>
<line number="199" hits="1"/>
<line number="200" hits="1"/>
<line number="202" hits="1"/>
<line number="203" hits="1"/>
<line number="205" hits="1"/>
<line number="206" hits="1"/>
<line number="208" hits="1"/>
<line number="209" hits="1"/>
<line number="214" hits="1"/>
<line number="217" hits="1"/>
<line number="218" hits="1"/>
<line number="221" hits="1"/>
<line number="223" hits="1"/>
<line number="224" hits="1"/>
<line number="226" hits="1"/>
<line number="227" hits="1"/>
<line number="229" hits="1"/>
<line number="230" hits="1"/>
<line number="232" hits="1"/>
<line number="233" hits="1"/>
<line number="235" hits="1"/>
<line number="236" hits="1"/>
<line number="239" hits="1"/>
<line number="242" hits="1"/>
<line number="243" hits="1"/>
<line number="245" hits="1"/>
<line number="246" hits="1"/>
<line number="248" hits="1"/>
<line number="249" hits="1"/>
<line number="251" hits="1"/>
<line number="252" hits="1"/>
<line number="254" hits="1"/>
<line number="255" hits="1"/>
<line number="258" hits="1"/>
<line number="261" hits="1"/>
<line number="262" hits="1"/>
<line number="264" hits="1"/>
<line number="265" hits="1"/>
<line number="267" hits="1"/>
<line number="268" hits="1"/>
<line number="270" hits="1"/>
<line number="271" hits="1"/>
<line number="275" hits="1"/>
<line number="276" hits="1"/>
<line number="279" hits="1"/>
<line number="280" hits="1"/>
<line number="285" hits="1"/>
<line number="288" hits="1"/>
<line number="289" hits="1"/>
<line number="291" hits="1"/>
<line number="292" hits="1"/>
<line number="295" hits="1"/>
<line number="297" hits="1"/>
<line number="298" hits="1"/>
<line number="300" hits="1"/>
<line number="301" hits="1"/>
<line number="303" hits="1"/>
<line number="304" hits="1"/>
<line number="306" hits="1"/>
<line number="307" hits="1"/>
<line number="309" hits="1"/>
<line number="310" hits="1"/>
<line number="312" hits="1"/>
<line number="313" hits="1"/>
<line number="316" hits="1"/>
<line number="317" hits="1"/>
<line number="319" hits="1"/>
<line number="320" hits="1"/>
<line number="322" hits="1"/>
<line number="323" hits="1"/>
<line number="326" hits="1"/>
<line number="331" hits="1"/>
<line number="333" hits="1"/>
<line number="338" hits="1"/>
<line number="342" hits="1"/>
<line number="348" hits="1"/>
<line number="355" hits="1"/>
<line number="359" hits="1"/>
<line number="366" hits="1"/>
<line number="367" hits="1"/>
<line number="371" hits="1"/>
<line number="375" hits="1"/>
<line number="379" hits="1"/>
<line number="383" hits="1"/>
<line number="387" hits="1"/>
<line number="391" hits="1"/>
<line number="396" hits="1"/>
<line number="398" hits="1"/>
</lines>
</class>
<class name="user_authn.py" filename="user_authn.py" complexity="0" line-rate="1" branch-rate="1">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="2" hits="1"/>
<line number="4" hits="1"/>
<line number="5" hits="1"/>
<line number="7" hits="1"/>
<line number="8" hits="1"/>
<line number="16" hits="1"/>
<line number="19" hits="1"/>
<line number="20" hits="1"/>
<line number="22" hits="1"/>
<line number="23" hits="1"/>
<line number="28" hits="1"/>
<line number="31" hits="1"/>
<line number="32" hits="1"/>
<line number="34" hits="1"/>
<line number="35" hits="1"/>
<line number="37" hits="1"/>
<line number="38" hits="1"/>
<line number="40" hits="1"/>
<line number="41" hits="1"/>
<line number="43" hits="1"/>
<line number="44" hits="1"/>
<line number="46" hits="1"/>
<line number="47" hits="1"/>
<line number="49" hits="1"/>
<line number="50" hits="1"/>
<line number="53" hits="1"/>
<line number="58" hits="1"/>
<line number="61" hits="1"/>
</lines>
</class>
<class name="webdav.py" filename="webdav.py" complexity="0" line-rate="1" branch-rate="1">
<methods/>
<lines>
<line number="2" hits="1"/>
<line number="3" hits="1"/>
<line number="5" hits="1"/>
<line number="7" hits="1"/>
<line number="8" hits="1"/>
<line number="13" hits="1"/>
<line number="16" hits="1"/>
<line number="18" hits="1"/>
<line number="20" hits="1"/>
<line number="21" hits="1"/>
<line number="22" hits="1"/>
<line number="25" hits="1"/>
<line number="30" hits="1"/>
<line number="33" hits="1"/>
</lines>
</class>
</classes>
</package>
<package name="JWT" line-rate="0.8125" branch-rate="0.6" complexity="0">
<classes>
<class name="JWT.py" filename="JWT/JWT.py" complexity="0" line-rate="0.8" branch-rate="0.6">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="3" hits="1"/>
<line number="4" hits="1"/>
<line number="6" hits="1"/>
<line number="8" hits="1"/>
<line number="15" hits="1"/>
<line number="18" hits="1"/>
<line number="23" hits="0"/>
<line number="24" hits="0"/>
<line number="27" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,28"/>
<line number="28" hits="0"/>
<line number="32" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="27,33"/>
<line number="33" hits="0"/>
<line number="35" hits="1"/>
<line number="43" hits="1"/>
<line number="45" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="46" hits="1"/>
<line number="48" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="49" hits="1"/>
<line number="50" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="51" hits="1"/>
<line number="53" hits="1"/>
<line number="54" hits="1"/>
<line number="58" hits="1"/>
<line number="61" hits="1"/>
<line number="72" hits="1"/>
<line number="73" hits="1"/>
<line number="79" hits="1"/>
<line number="90" hits="1"/>
<line number="91" hits="1"/>
</lines>
</class>
<class name="__init__.py" filename="JWT/__init__.py" complexity="0" line-rate="1" branch-rate="1">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="2" hits="1"/>
</lines>
</class>
</classes>
</package>
<package name="api" line-rate="1" branch-rate="1" complexity="0">
<classes>
<class name="__init__.py" filename="api/__init__.py" complexity="0" line-rate="1" branch-rate="1">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="3" hits="1"/>
<line number="5" hits="1"/>
<line number="7" hits="1"/>
</lines>
</class>
</classes>
</package>
<package name="api.v1" line-rate="0.9211" branch-rate="0.25" complexity="0">
<classes>
<class name="__init__.py" filename="api/v1/__init__.py" complexity="0" line-rate="0.9211" branch-rate="0.25">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="3" hits="1"/>
<line number="5" hits="1"/>
<line number="6" hits="1"/>
<line number="7" hits="1"/>
<line number="8" hits="1"/>
<line number="9" hits="1"/>
<line number="10" hits="1"/>
<line number="11" hits="1"/>
<line number="12" hits="1"/>
<line number="13" hits="1"/>
<line number="15" hits="1"/>
<line number="16" hits="1"/>
<line number="17" hits="1"/>
<line number="18" hits="1"/>
<line number="19" hits="1"/>
<line number="20" hits="1"/>
<line number="21" hits="1"/>
<line number="22" hits="1"/>
<line number="23" hits="1"/>
<line number="24" hits="1"/>
<line number="25" hits="1"/>
<line number="27" hits="1"/>
<line number="31" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="43"/>
<line number="32" hits="1"/>
<line number="33" hits="1"/>
<line number="34" hits="1"/>
<line number="35" hits="1"/>
<line number="36" hits="1"/>
<line number="37" hits="1"/>
<line number="38" hits="1"/>
<line number="39" hits="1"/>
<line number="40" hits="1"/>
<line number="41" hits="1"/>
<line number="42" hits="1"/>
<line number="43" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="44,46"/>
<line number="44" hits="0"/>
<line number="46" hits="0"/>
</lines>
</class>
</classes>
</package>
<package name="api.v1.admin" line-rate="0.298" branch-rate="0.3305" complexity="0">
<classes>
<class name="__init__.py" filename="api/v1/admin/__init__.py" complexity="0" line-rate="0.298" branch-rate="0.3305">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="2" hits="1"/>
<line number="3" hits="1"/>
<line number="5" hits="1"/>
<line number="6" hits="1"/>
<line number="7" hits="1"/>
<line number="8" hits="1"/>
<line number="9" hits="1"/>
<line number="11" hits="1"/>
<line number="12" hits="1"/>
<line number="13" hits="1"/>
<line number="17" hits="1"/>
<line number="18" hits="1"/>
<line number="21" hits="1"/>
<line number="24" hits="1"/>
<line number="25" hits="1"/>
<line number="26" hits="1"/>
<line number="27" hits="1"/>
<line number="28" hits="1"/>
<line number="31" hits="1"/>
<line number="34" hits="1"/>
<line number="35" hits="1"/>
<line number="38" hits="1"/>
<line number="41" hits="1"/>
<line number="42" hits="1"/>
<line number="44" hits="1"/>
<line number="45" hits="1"/>
<line number="48" hits="1"/>
<line number="51" hits="1"/>
<line number="52" hits="1"/>
<line number="54" hits="1"/>
<line number="55" hits="1"/>
<line number="58" hits="1"/>
<line number="61" hits="1"/>
<line number="62" hits="1"/>
<line number="64" hits="1"/>
<line number="65" hits="1"/>
<line number="67" hits="1"/>
<line number="68" hits="1"/>
<line number="70" hits="1"/>
<line number="71" hits="1"/>
<line number="73" hits="1"/>
<line number="74" hits="1"/>
<line number="76" hits="1"/>
<line number="77" hits="1"/>
<line number="79" hits="1"/>
<line number="80" hits="1"/>
<line number="82" hits="1"/>
<line number="83" hits="1"/>
<line number="85" hits="1"/>
<line number="86" hits="1"/>
<line number="88" hits="1"/>
<line number="89" hits="1"/>
<line number="91" hits="1"/>
<line number="92" hits="1"/>
<line number="94" hits="1"/>
<line number="95" hits="1"/>
<line number="97" hits="1"/>
<line number="98" hits="1"/>
<line number="101" hits="1"/>
<line number="107" hits="1"/>
<line number="113" hits="1"/>
<line number="119" hits="1"/>
<line number="125" hits="1"/>
<line number="131" hits="1"/>
<line number="137" hits="1"/>
<line number="143" hits="1"/>
<line number="149" hits="1"/>
<line number="155" hits="1"/>
<line number="161" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="168" hits="0"/>
<line number="170" hits="1"/>
<line number="176" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="183" hits="0"/>
<line number="185" hits="1"/>
<line number="191" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="202" hits="0"/>
<line number="204" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="205,220"/>
<line number="205" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="204,206"/>
<line number="206" hits="0"/>
<line number="211" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="212,215"/>
<line number="212" hits="0"/>
<line number="213" hits="0"/>
<line number="215" hits="0"/>
<line number="216" hits="0"/>
<line number="218" hits="0"/>
<line number="220" hits="0"/>
<line number="221" hits="0"/>
<line number="224" hits="1"/>
<line number="230" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="237" hits="0"/>
<line number="240" hits="0"/>
<line number="241" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="242,246"/>
<line number="242" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="243,244"/>
<line number="243" hits="0"/>
<line number="244" hits="0"/>
<line number="246" hits="0"/>
<line number="248" hits="1"/>
<line number="254" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="267" hits="0"/>
<line number="269" hits="0"/>
<line number="278" hits="0"/>
<line number="281" hits="0"/>
<line number="282" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="283,310"/>
<line number="283" hits="0"/>
<line number="284" hits="0"/>
<line number="285" hits="0"/>
<line number="287" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,282"/>
<line number="310" hits="0"/>
<line number="313" hits="1"/>
<line number="319" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="330" hits="0"/>
<line number="332" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="333,335"/>
<line number="333" hits="0"/>
<line number="335" hits="0"/>
<line number="336" hits="0"/>
<line number="337" hits="0"/>
<line number="339" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,362"/>
<line number="362" hits="0"/>
<line number="365" hits="1"/>
<line number="371" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="387" hits="0"/>
<line number="388" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="389,391"/>
<line number="389" hits="0"/>
<line number="391" hits="0"/>
<line number="393" hits="0"/>
<line number="401" hits="0"/>
<line number="403" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,exit"/>
<line number="409" hits="1"/>
<line number="415" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="427" hits="0"/>
<line number="428" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="429,432"/>
<line number="429" hits="0"/>
<line number="432" hits="0"/>
<line number="439" hits="0"/>
<line number="442" hits="0"/>
<line number="456" hits="0"/>
<line number="459" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="460,462"/>
<line number="460" hits="0"/>
<line number="461" hits="0"/>
<line number="462" hits="0"/>
<line number="464" hits="0"/>
<line number="465" hits="0"/>
<line number="468" hits="1"/>
<line number="474" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="487" hits="0"/>
<line number="488" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="489,492"/>
<line number="489" hits="0"/>
<line number="492" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="493,498"/>
<line number="493" hits="0"/>
<line number="494" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="495,498"/>
<line number="495" hits="0"/>
<line number="498" hits="0"/>
<line number="504" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="505,510"/>
<line number="505" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="506,507"/>
<line number="506" hits="0"/>
<line number="507" hits="0"/>
<line number="510" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="511,522"/>
<line number="511" hits="0"/>
<line number="514" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,516"/>
<line number="516" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="517,522"/>
<line number="517" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="518,519"/>
<line number="518" hits="0"/>
<line number="519" hits="0"/>
<line number="522" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="524,534"/>
<line number="524" hits="0"/>
<line number="525" hits="0"/>
<line number="529" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="530,532"/>
<line number="530" hits="0"/>
<line number="531" hits="0"/>
<line number="532" hits="0"/>
<line number="534" hits="0"/>
<line number="535" hits="0"/>
<line number="538" hits="1"/>
<line number="544" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="557" hits="0"/>
<line number="558" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="559,562"/>
<line number="559" hits="0"/>
<line number="562" hits="0"/>
<line number="563" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="564,569"/>
<line number="564" hits="0"/>
<line number="569" hits="0"/>
<line number="570" hits="0"/>
<line number="572" hits="0"/>
<line number="573" hits="0"/>
<line number="575" hits="1"/>
<line number="581" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="592" hits="0"/>
<line number="593" hits="0"/>
<line number="595" hits="1"/>
<line number="601" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="617" hits="0"/>
<line number="618" hits="0"/>
<line number="625" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,exit"/>
<line number="629" hits="1"/>
<line number="635" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="645" hits="0"/>
<line number="646" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="647,651"/>
<line number="647" hits="0"/>
<line number="651" hits="0"/>
<line number="652" hits="0"/>
<line number="654" hits="1"/>
<line number="660" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="673" hits="0"/>
<line number="674" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="675,678"/>
<line number="675" hits="0"/>
<line number="678" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="679,684"/>
<line number="679" hits="0"/>
<line number="680" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="681,684"/>
<line number="681" hits="0"/>
<line number="684" hits="0"/>
<line number="691" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="692,693"/>
<line number="692" hits="0"/>
<line number="693" hits="0"/>
<line number="695" hits="0"/>
<line number="696" hits="0"/>
<line number="699" hits="1"/>
<line number="705" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="718" hits="0"/>
<line number="719" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="720,722"/>
<line number="720" hits="0"/>
<line number="722" hits="0"/>
<line number="723" hits="0"/>
<line number="725" hits="0"/>
<line number="726" hits="0"/>
<line number="729" hits="1"/>
<line number="735" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="751" hits="0"/>
<line number="752" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="753,755"/>
<line number="753" hits="0"/>
<line number="755" hits="0"/>
<line number="758" hits="0"/>
<line number="759" hits="0"/>
<line number="764" hits="0"/>
<line number="765" hits="0"/>
<line number="766" hits="0"/>
<line number="769" hits="0"/>
<line number="770" hits="0"/>
<line number="772" hits="0"/>
<line number="780" hits="0"/>
<line number="781" hits="0"/>
<line number="783" hits="1"/>
<line number="789" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="808" hits="0"/>
<line number="811" hits="0"/>
<line number="812" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="813,814"/>
<line number="813" hits="0"/>
<line number="814" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="815,816"/>
<line number="815" hits="0"/>
<line number="816" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="817,819"/>
<line number="817" hits="0"/>
<line number="819" hits="0"/>
<line number="821" hits="0"/>
<line number="830" hits="0"/>
<line number="833" hits="0"/>
<line number="834" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="835,854"/>
<line number="835" hits="0"/>
<line number="836" hits="0"/>
<line number="837" hits="0"/>
<line number="854" hits="0"/>
<line number="857" hits="1"/>
<line number="863" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="874" hits="0"/>
<line number="875" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="876,878"/>
<line number="876" hits="0"/>
<line number="878" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="879,882"/>
<line number="879" hits="0"/>
<line number="882" hits="0"/>
<line number="883" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="884,886"/>
<line number="884" hits="0"/>
<line number="886" hits="0"/>
<line number="887" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="888,890"/>
<line number="888" hits="0"/>
<line number="890" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="891,900"/>
<line number="891" hits="0"/>
<line number="892" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="893,895"/>
<line number="893" hits="0"/>
<line number="895" hits="0"/>
<line number="900" hits="0"/>
<line number="903" hits="1"/>
<line number="909" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="924" hits="0"/>
<line number="925" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="926,928"/>
<line number="926" hits="0"/>
<line number="928" hits="0"/>
<line number="929" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="930,934"/>
<line number="930" hits="0"/>
<line number="931" hits="0"/>
<line number="932" hits="0"/>
<line number="934" hits="0"/>
<line number="935" hits="0"/>
<line number="936" hits="0"/>
<line number="938" hits="0"/>
<line number="940" hits="0"/>
<line number="941" hits="0"/>
<line number="942" hits="0"/>
<line number="948" hits="1"/>
<line number="954" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="967" hits="0"/>
<line number="968" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="969,971"/>
<line number="969" hits="0"/>
<line number="971" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="972,974"/>
<line number="972" hits="0"/>
<line number="974" hits="0"/>
<line number="975" hits="0"/>
<line number="976" hits="0"/>
<line number="979" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="980,991"/>
<line number="980" hits="0"/>
<line number="981" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="982,991"/>
<line number="982" hits="0"/>
<line number="983" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="984,991"/>
<line number="984" hits="0"/>
<line number="985" hits="0"/>
<line number="986" hits="0"/>
<line number="987" hits="0"/>
<line number="988" hits="0"/>
<line number="991" hits="0"/>
<line number="992" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="993,996"/>
<line number="993" hits="0"/>
<line number="994" hits="0"/>
<line number="996" hits="0"/>
<line number="998" hits="0"/>
<line number="999" hits="0"/>
<line number="1001" hits="1"/>
<line number="1007" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="1016" hits="0"/>
<line number="1018" hits="0"/>
<line number="1019" hits="0"/>
<line number="1026" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,1027"/>
<line number="1027" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="1026,1028"/>
<line number="1028" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="1029,1034"/>
<line number="1029" hits="0"/>
<line number="1034" hits="0"/>
<line number="1035" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="1036,1041"/>
<line number="1036" hits="0"/>
<line number="1041" hits="0"/>
<line number="1042" hits="0"/>
<line number="1046" hits="0"/>
<line number="1047" hits="0"/>
<line number="1049" hits="1"/>
<line number="1055" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="1068" hits="0"/>
<line number="1070" hits="0"/>
<line number="1078" hits="0"/>
<line number="1080" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,exit"/>
<line number="1096" hits="1"/>
<line number="1102" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="1111" hits="0"/>
<line number="1112" hits="0"/>
<line number="1114" hits="0"/>
<line number="1117" hits="0"/>
<line number="1120" hits="0"/>
<line number="1121" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="1122,1131"/>
<line number="1122" hits="0"/>
<line number="1123" hits="0"/>
<line number="1124" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="1125,1126"/>
<line number="1125" hits="0"/>
<line number="1126" hits="0"/>
<line number="1127" hits="0"/>
<line number="1128" hits="0"/>
<line number="1131" hits="0"/>
<line number="1138" hits="1"/>
<line number="1144" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="1153" hits="0"/>
<line number="1155" hits="0"/>
<line number="1156" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,1157"/>
<line number="1157" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="1156,1162"/>
<line number="1162" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="1163,1165"/>
<line number="1163" hits="0"/>
<line number="1165" hits="0"/>
<line number="1169" hits="0"/>
<line number="1170" hits="0"/>
<line number="1172" hits="1"/>
<line number="1178" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="1197" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="1198,1202"/>
<line number="1198" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="1199,1202"/>
<line number="1199" hits="0"/>
<line number="1202" hits="0"/>
<line number="1203" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="1204,1207"/>
<line number="1204" hits="0"/>
<line number="1207" hits="0"/>
<line number="1224" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="1225,1233"/>
<line number="1225" hits="0"/>
<line number="1226" hits="0"/>
<line number="1227" hits="0"/>
<line number="1228" hits="0"/>
<line number="1229" hits="0"/>
<line number="1230" hits="0"/>
<line number="1233" hits="0"/>
<line number="1235" hits="0"/>
<line number="1242" hits="1"/>
<line number="1248" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="1255" hits="0"/>
<line number="1258" hits="1"/>
<line number="1264" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="1271" hits="0"/>
<line number="1274" hits="1"/>
<line number="1280" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="1291" hits="0"/>
<line number="1292" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="1293,1296"/>
<line number="1293" hits="0"/>
<line number="1296" hits="0"/>
<line number="1299" hits="1"/>
<line number="1305" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="1316" hits="0"/>
<line number="1317" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="1318,1321"/>
<line number="1318" hits="0"/>
<line number="1321" hits="0"/>
<line number="1324" hits="0"/>
<line number="1326" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,exit"/>
<line number="1345" hits="1"/>
<line number="1351" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="1364" hits="0"/>
<line number="1365" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="1366,1369"/>
<line number="1366" hits="0"/>
<line number="1369" hits="0"/>
<line number="1370" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="1371,1376"/>
<line number="1371" hits="0"/>
<line number="1376" hits="0"/>
<line number="1377" hits="0"/>
<line number="1379" hits="0"/>
<line number="1380" hits="0"/>
<line number="1385" hits="1"/>
<line number="1391" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="1406" hits="0"/>
<line number="1407" hits="0"/>
<line number="1409" hits="0"/>
<line number="1418" hits="0"/>
<line number="1420" hits="0"/>
<line number="1421" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="1422,1439"/>
<line number="1422" hits="0"/>
<line number="1423" hits="0"/>
<line number="1424" hits="0"/>
<line number="1439" hits="0"/>
<line number="1442" hits="1"/>
<line number="1448" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="1459" hits="0"/>
<line number="1460" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="1461,1463"/>
<line number="1461" hits="0"/>
<line number="1463" hits="0"/>
<line number="1464" hits="0"/>
<line number="1488" hits="1"/>
<line number="1494" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="1505" hits="0"/>
<line number="1506" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="1507,1509"/>
<line number="1507" hits="0"/>
<line number="1509" hits="0"/>
<line number="1511" hits="0"/>
<line number="1512" hits="0"/>
<line number="1517" hits="1"/>
<line number="1523" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="1540" hits="0"/>
<line number="1542" hits="0"/>
<line number="1543" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="1544,1545"/>
<line number="1544" hits="0"/>
<line number="1545" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="1546,1548"/>
<line number="1546" hits="0"/>
<line number="1548" hits="0"/>
<line number="1550" hits="0"/>
<line number="1559" hits="0"/>
<line number="1561" hits="0"/>
<line number="1562" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="1563,1576"/>
<line number="1563" hits="0"/>
<line number="1564" hits="0"/>
<line number="1576" hits="0"/>
<line number="1579" hits="1"/>
<line number="1585" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="1596" hits="0"/>
<line number="1597" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="1598,1600"/>
<line number="1598" hits="0"/>
<line number="1600" hits="0"/>
<line number="1601" hits="0"/>
<line number="1603" hits="0"/>
<line number="1617" hits="1"/>
<line number="1623" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="1634" hits="0"/>
<line number="1635" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="1636,1638"/>
<line number="1636" hits="0"/>
<line number="1638" hits="0"/>
<line number="1640" hits="0"/>
<line number="1641" hits="0"/>
<line number="1646" hits="1"/>
<line number="1652" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="1669" hits="0"/>
<line number="1672" hits="1"/>
<line number="1678" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="1690" hits="0"/>
<line number="1693" hits="1"/>
<line number="1699" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="1711" hits="0"/>
</lines>
</class>
</classes>
</package>
<package name="api.v1.callback" line-rate="0.6567" branch-rate="0.9412" complexity="0">
<classes>
<class name="__init__.py" filename="api/v1/callback/__init__.py" complexity="0" line-rate="0.6567" branch-rate="0.9412">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="2" hits="1"/>
<line number="4" hits="1"/>
<line number="5" hits="1"/>
<line number="6" hits="1"/>
<line number="8" hits="1"/>
<line number="13" hits="1"/>
<line number="18" hits="1"/>
<line number="23" hits="1"/>
<line number="28" hits="1"/>
<line number="29" hits="1"/>
<line number="30" hits="1"/>
<line number="32" hits="1"/>
<line number="37" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="44" hits="0"/>
<line number="46" hits="1"/>
<line number="51" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="65" hits="0"/>
<line number="66" hits="0"/>
<line number="68" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="69,71"/>
<line number="69" hits="0"/>
<line number="71" hits="0"/>
<line number="74" hits="0"/>
<line number="75" hits="0"/>
<line number="76" hits="0"/>
<line number="78" hits="1"/>
<line number="83" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="90" hits="0"/>
<line number="92" hits="1"/>
<line number="97" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="104" hits="0"/>
<line number="106" hits="1"/>
<line number="111" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="118" hits="0"/>
<line number="120" hits="1"/>
<line number="125" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="132" hits="0"/>
<line number="135" hits="1"/>
<line number="140" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="151" hits="0"/>
<line number="153" hits="1"/>
<line number="158" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="169" hits="0"/>
<line number="171" hits="1"/>
<line number="176" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="186" hits="0"/>
<line number="188" hits="1"/>
<line number="193" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="203" hits="0"/>
<line number="205" hits="1"/>
<line number="210" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="220" hits="0"/>
<line number="222" hits="1"/>
<line number="227" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="237" hits="0"/>
<line number="239" hits="1"/>
<line number="244" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="254" hits="0"/>
<line number="256" hits="1"/>
<line number="261" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="271" hits="0"/>
<line number="273" hits="1"/>
<line number="278" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="285" hits="0"/>
<line number="287" hits="1"/>
<line number="292" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="299" hits="0"/>
</lines>
</class>
</classes>
</package>
<package name="api.v1.directory" line-rate="0.2174" branch-rate="0.1667" complexity="0">
<classes>
<class name="__init__.py" filename="api/v1/directory/__init__.py" complexity="0" line-rate="0.2174" branch-rate="0.1667">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="3" hits="1"/>
<line number="5" hits="1"/>
<line number="6" hits="1"/>
<line number="7" hits="1"/>
<line number="18" hits="1"/>
<line number="23" hits="1"/>
<line number="27" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="43" hits="0"/>
<line number="44" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="45,47"/>
<line number="45" hits="0"/>
<line number="47" hits="0"/>
<line number="48" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="49,51"/>
<line number="49" hits="0"/>
<line number="51" hits="0"/>
<line number="53" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="54,56"/>
<line number="54" hits="0"/>
<line number="56" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="57,59"/>
<line number="57" hits="0"/>
<line number="59" hits="0"/>
<line number="60" hits="0"/>
<line number="62" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,76"/>
<line number="76" hits="0"/>
<line number="83" hits="0"/>
<line number="91" hits="1"/>
<line number="95" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="109" hits="0"/>
<line number="110" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="111,114"/>
<line number="111" hits="0"/>
<line number="114" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="115,118"/>
<line number="115" hits="0"/>
<line number="118" hits="0"/>
<line number="119" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="120,122"/>
<line number="120" hits="0"/>
<line number="122" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="123,126"/>
<line number="123" hits="0"/>
<line number="126" hits="0"/>
<line number="132" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="133,135"/>
<line number="133" hits="0"/>
<line number="135" hits="0"/>
<line number="136" hits="0"/>
<line number="138" hits="0"/>
<line number="145" hits="0"/>
<line number="146" hits="0"/>
<line number="147" hits="0"/>
<line number="149" hits="0"/>
</lines>
</class>
</classes>
</package>
<package name="api.v1.download" line-rate="0.76" branch-rate="1" complexity="0">
<classes>
<class name="__init__.py" filename="api/v1/download/__init__.py" complexity="0" line-rate="0.76" branch-rate="1">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="3" hits="1"/>
<line number="4" hits="1"/>
<line number="5" hits="1"/>
<line number="7" hits="1"/>
<line number="12" hits="1"/>
<line number="17" hits="1"/>
<line number="19" hits="1"/>
<line number="25" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="32" hits="0"/>
<line number="34" hits="1"/>
<line number="40" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="50" hits="0"/>
<line number="52" hits="1"/>
<line number="58" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="68" hits="0"/>
<line number="70" hits="1"/>
<line number="76" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="86" hits="0"/>
<line number="88" hits="1"/>
<line number="94" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="101" hits="0"/>
<line number="103" hits="1"/>
<line number="109" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="116" hits="0"/>
</lines>
</class>
</classes>
</package>
<package name="api.v1.file" line-rate="0.2895" branch-rate="0.4035" complexity="0">
<classes>
<class name="__init__.py" filename="api/v1/file/__init__.py" complexity="0" line-rate="0.2895" branch-rate="0.4035">
<methods/>
<lines>
<line number="11" hits="1"/>
<line number="12" hits="1"/>
<line number="13" hits="1"/>
<line number="15" hits="1"/>
<line number="16" hits="1"/>
<line number="17" hits="1"/>
<line number="18" hits="1"/>
<line number="20" hits="1"/>
<line number="21" hits="1"/>
<line number="22" hits="1"/>
<line number="36" hits="1"/>
<line number="37" hits="1"/>
<line number="38" hits="1"/>
<line number="43" hits="1"/>
<line number="46" hits="1"/>
<line number="48" hits="1"/>
<line number="49" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="51" hits="0"/>
<line number="57" hits="0"/>
<line number="59" hits="1"/>
<line number="60" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="66" hits="0"/>
<line number="67" hits="0"/>
<line number="68" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="69,70"/>
<line number="69" hits="0"/>
<line number="70" hits="0"/>
<line number="71" hits="0"/>
<line number="72" hits="0"/>
<line number="77" hits="1"/>
<line number="82" hits="1"/>
<line number="85" hits="1"/>
<line number="90" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="106" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="107,110"/>
<line number="107" hits="0"/>
<line number="110" hits="0"/>
<line number="111" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="112,114"/>
<line number="112" hits="0"/>
<line number="114" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="115,118"/>
<line number="115" hits="0"/>
<line number="118" hits="0"/>
<line number="119" hits="0"/>
<line number="120" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="121,124"/>
<line number="121" hits="0"/>
<line number="124" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="125,131"/>
<line number="125" hits="0"/>
<line number="131" hits="0"/>
<line number="137" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="138,141"/>
<line number="138" hits="0"/>
<line number="141" hits="0"/>
<line number="142" hits="0"/>
<line number="143" hits="0"/>
<line number="146" hits="0"/>
<line number="147" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="148,155"/>
<line number="148" hits="0"/>
<line number="149" hits="0"/>
<line number="153" hits="0"/>
<line number="155" hits="0"/>
<line number="158" hits="0"/>
<line number="169" hits="0"/>
<line number="171" hits="0"/>
<line number="173" hits="0"/>
<line number="184" hits="1"/>
<line number="189" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="206" hits="0"/>
<line number="207" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="208,210"/>
<line number="208" hits="0"/>
<line number="210" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="211,214"/>
<line number="211" hits="0"/>
<line number="214" hits="0"/>
<line number="216" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="217,220"/>
<line number="217" hits="0"/>
<line number="220" hits="0"/>
<line number="221" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="222,225"/>
<line number="222" hits="0"/>
<line number="225" hits="0"/>
<line number="228" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="229,240"/>
<line number="229" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="230,232"/>
<line number="230" hits="0"/>
<line number="232" hits="0"/>
<line number="233" hits="0"/>
<line number="234" hits="0"/>
<line number="240" hits="0"/>
<line number="243" hits="0"/>
<line number="244" hits="0"/>
<line number="245" hits="0"/>
<line number="248" hits="0"/>
<line number="249" hits="0"/>
<line number="251" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="253,280"/>
<line number="253" hits="0"/>
<line number="259" hits="0"/>
<line number="262" hits="0"/>
<line number="272" hits="0"/>
<line number="273" hits="0"/>
<line number="276" hits="0"/>
<line number="278" hits="0"/>
<line number="280" hits="0"/>
<line number="288" hits="1"/>
<line number="293" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="299" hits="0"/>
<line number="300" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="301,304"/>
<line number="301" hits="0"/>
<line number="304" hits="0"/>
<line number="305" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="306,310"/>
<line number="306" hits="0"/>
<line number="307" hits="0"/>
<line number="310" hits="0"/>
<line number="312" hits="0"/>
<line number="314" hits="0"/>
<line number="317" hits="1"/>
<line number="322" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="328" hits="0"/>
<line number="334" hits="0"/>
<line number="335" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="337,345"/>
<line number="337" hits="0"/>
<line number="338" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="339,342"/>
<line number="339" hits="0"/>
<line number="340" hits="0"/>
<line number="342" hits="0"/>
<line number="343" hits="0"/>
<line number="345" hits="0"/>
<line number="347" hits="0"/>
<line number="350" hits="1"/>
<line number="355" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="357" hits="0"/>
<line number="362" hits="1"/>
<line number="365" hits="1"/>
<line number="370" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="380" hits="0"/>
<line number="381" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="382,384"/>
<line number="382" hits="0"/>
<line number="384" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="385,387"/>
<line number="385" hits="0"/>
<line number="387" hits="0"/>
<line number="389" hits="0"/>
<line number="391" hits="0"/>
<line number="394" hits="1"/>
<line number="399" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="409" hits="0"/>
<line number="410" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="411,413"/>
<line number="411" hits="0"/>
<line number="413" hits="0"/>
<line number="416" hits="0"/>
<line number="417" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="418,420"/>
<line number="418" hits="0"/>
<line number="420" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="421,423"/>
<line number="421" hits="0"/>
<line number="423" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="424,427"/>
<line number="424" hits="0"/>
<line number="427" hits="0"/>
<line number="428" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="429,431"/>
<line number="429" hits="0"/>
<line number="431" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="432,442"/>
<line number="432" hits="0"/>
<line number="433" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="434,436"/>
<line number="434" hits="0"/>
<line number="436" hits="0"/>
<line number="442" hits="0"/>
<line number="447" hits="1"/>
<line number="448" hits="1"/>
<line number="453" hits="1"/>
<line number="458" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="465" hits="0"/>
<line number="468" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="469,472"/>
<line number="469" hits="0"/>
<line number="472" hits="0"/>
<line number="473" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="474,476"/>
<line number="474" hits="0"/>
<line number="476" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="477,480"/>
<line number="477" hits="0"/>
<line number="480" hits="0"/>
<line number="486" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="487,490"/>
<line number="487" hits="0"/>
<line number="490" hits="0"/>
<line number="491" hits="0"/>
<line number="492" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="493,496"/>
<line number="493" hits="0"/>
<line number="496" hits="0"/>
<line number="497" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="498,506"/>
<line number="498" hits="0"/>
<line number="499" hits="0"/>
<line number="503" hits="0"/>
<line number="504" hits="0"/>
<line number="506" hits="0"/>
<line number="509" hits="0"/>
<line number="515" hits="0"/>
<line number="518" hits="0"/>
<line number="527" hits="0"/>
<line number="529" hits="0"/>
<line number="531" hits="0"/>
<line number="540" hits="1"/>
<line number="545" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="551" hits="0"/>
<line number="554" hits="1"/>
<line number="559" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="561" hits="0"/>
<line number="564" hits="1"/>
<line number="570" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="572" hits="0"/>
<line number="575" hits="1"/>
<line number="581" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="583" hits="0"/>
<line number="586" hits="1"/>
<line number="592" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="594" hits="0"/>
<line number="597" hits="1"/>
<line number="603" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="605" hits="0"/>
<line number="608" hits="1"/>
<line number="614" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="616" hits="0"/>
<line number="619" hits="1"/>
<line number="625" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="627" hits="0"/>
<line number="630" hits="1"/>
<line number="636" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="638" hits="0"/>
<line number="641" hits="1"/>
<line number="647" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="649" hits="0"/>
<line number="652" hits="1"/>
<line number="658" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="660" hits="0"/>
<line number="663" hits="1"/>
<line number="669" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="671" hits="0"/>
<line number="674" hits="1"/>
<line number="680" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="682" hits="0"/>
</lines>
</class>
</classes>
</package>
<package name="api.v1.mcp" line-rate="0" branch-rate="0" complexity="0">
<classes>
<class name="__init__.py" filename="api/v1/mcp/__init__.py" complexity="0" line-rate="0" branch-rate="0">
<methods/>
<lines>
<line number="1" hits="0"/>
<line number="3" hits="0"/>
<line number="6" hits="0"/>
<line number="11" hits="0"/>
<line number="14" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,11"/>
<line number="17" hits="0"/>
<line number="18" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,19"/>
<line number="19" hits="0"/>
</lines>
</class>
</classes>
</package>
<package name="api.v1.object" line-rate="0.1256" branch-rate="0.1053" complexity="0">
<classes>
<class name="__init__.py" filename="api/v1/object/__init__.py" complexity="0" line-rate="0.1256" branch-rate="0.1053">
<methods/>
<lines>
<line number="8" hits="1"/>
<line number="9" hits="1"/>
<line number="11" hits="1"/>
<line number="12" hits="1"/>
<line number="13" hits="1"/>
<line number="15" hits="1"/>
<line number="16" hits="1"/>
<line number="17" hits="1"/>
<line number="31" hits="1"/>
<line number="32" hits="1"/>
<line number="34" hits="1"/>
<line number="40" hits="1"/>
<line number="60" hits="0"/>
<line number="62" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="64,69"/>
<line number="64" hits="0"/>
<line number="65" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="66,69"/>
<line number="66" hits="0"/>
<line number="69" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="70,99"/>
<line number="70" hits="0"/>
<line number="71" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="73,99"/>
<line number="73" hits="0"/>
<line number="75" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="77,95"/>
<line number="77" hits="0"/>
<line number="78" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="79,91"/>
<line number="79" hits="0"/>
<line number="80" hits="0"/>
<line number="81" hits="0"/>
<line number="86" hits="0"/>
<line number="87" hits="0"/>
<line number="88" hits="0"/>
<line number="91" hits="0"/>
<line number="92" hits="0"/>
<line number="95" hits="0"/>
<line number="96" hits="0"/>
<line number="99" hits="0"/>
<line number="100" hits="0"/>
<line number="102" hits="0"/>
<line number="105" hits="1"/>
<line number="128" hits="0"/>
<line number="129" hits="0"/>
<line number="144" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="145,150"/>
<line number="145" hits="0"/>
<line number="146" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="147,150"/>
<line number="147" hits="0"/>
<line number="148" hits="0"/>
<line number="150" hits="0"/>
<line number="151" hits="0"/>
<line number="152" hits="0"/>
<line number="155" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="156,164"/>
<line number="156" hits="0"/>
<line number="157" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="158,164"/>
<line number="158" hits="0"/>
<line number="161" hits="0"/>
<line number="162" hits="0"/>
<line number="164" hits="0"/>
<line number="167" hits="1"/>
<line number="172" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="193" hits="0"/>
<line number="194" hits="0"/>
<line number="196" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="197,210"/>
<line number="197" hits="0"/>
<line number="198" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="199,202"/>
<line number="199" hits="0"/>
<line number="202" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="203,207"/>
<line number="203" hits="0"/>
<line number="204" hits="0"/>
<line number="207" hits="0"/>
<line number="208" hits="0"/>
<line number="210" hits="0"/>
<line number="212" hits="0"/>
<line number="220" hits="1"/>
<line number="225" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="239" hits="0"/>
<line number="242" hits="0"/>
<line number="243" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="244,246"/>
<line number="244" hits="0"/>
<line number="246" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="247,249"/>
<line number="247" hits="0"/>
<line number="249" hits="0"/>
<line number="251" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="252,290"/>
<line number="252" hits="0"/>
<line number="253" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="254,257"/>
<line number="254" hits="0"/>
<line number="257" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="258,261"/>
<line number="258" hits="0"/>
<line number="261" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="262,265"/>
<line number="262" hits="0"/>
<line number="265" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="266,277"/>
<line number="266" hits="0"/>
<line number="267" hits="0"/>
<line number="268" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="269,273"/>
<line number="269" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="270,272"/>
<line number="270" hits="0"/>
<line number="271" hits="0"/>
<line number="272" hits="0"/>
<line number="273" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="274,277"/>
<line number="274" hits="0"/>
<line number="277" hits="0"/>
<line number="283" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="284,286"/>
<line number="284" hits="0"/>
<line number="286" hits="0"/>
<line number="287" hits="0"/>
<line number="288" hits="0"/>
<line number="290" hits="0"/>
<line number="298" hits="1"/>
<line number="303" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="326" hits="0"/>
<line number="329" hits="0"/>
<line number="330" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="331,333"/>
<line number="331" hits="0"/>
<line number="333" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="334,336"/>
<line number="334" hits="0"/>
<line number="336" hits="0"/>
<line number="337" hits="0"/>
<line number="339" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="340,379"/>
<line number="340" hits="0"/>
<line number="341" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="342,345"/>
<line number="342" hits="0"/>
<line number="345" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="346,349"/>
<line number="346" hits="0"/>
<line number="349" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="350,353"/>
<line number="350" hits="0"/>
<line number="353" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="354,365"/>
<line number="354" hits="0"/>
<line number="355" hits="0"/>
<line number="356" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="357,361"/>
<line number="357" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="358,360"/>
<line number="358" hits="0"/>
<line number="359" hits="0"/>
<line number="360" hits="0"/>
<line number="361" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="362,365"/>
<line number="362" hits="0"/>
<line number="365" hits="0"/>
<line number="371" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="372,375"/>
<line number="372" hits="0"/>
<line number="375" hits="0"/>
<line number="376" hits="0"/>
<line number="377" hits="0"/>
<line number="379" hits="0"/>
<line number="381" hits="0"/>
<line number="390" hits="1"/>
<line number="395" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="416" hits="0"/>
<line number="419" hits="0"/>
<line number="420" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="421,423"/>
<line number="421" hits="0"/>
<line number="423" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="424,427"/>
<line number="424" hits="0"/>
<line number="427" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="428,431"/>
<line number="428" hits="0"/>
<line number="431" hits="0"/>
<line number="432" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="433,435"/>
<line number="433" hits="0"/>
<line number="435" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="436,439"/>
<line number="436" hits="0"/>
<line number="439" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="440,443"/>
<line number="440" hits="0"/>
<line number="443" hits="0"/>
<line number="449" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="450,453"/>
<line number="450" hits="0"/>
<line number="453" hits="0"/>
<line number="454" hits="0"/>
<line number="456" hits="0"/>
<line number="458" hits="0"/>
<line number="461" hits="1"/>
<line number="466" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="479" hits="0"/>
<line number="480" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="481,483"/>
<line number="481" hits="0"/>
<line number="483" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="484,486"/>
<line number="484" hits="0"/>
<line number="486" hits="0"/>
<line number="497" hits="1"/>
<line number="502" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="515" hits="0"/>
<line number="520" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="521,523"/>
<line number="521" hits="0"/>
<line number="523" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="524,527"/>
<line number="524" hits="0"/>
<line number="527" hits="0"/>
<line number="528" hits="0"/>
<line number="531" hits="0"/>
<line number="532" hits="0"/>
<line number="537" hits="0"/>
<line number="538" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,539"/>
<line number="539" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,542"/>
<line number="542" hits="0"/>
<line number="543" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="544,549"/>
<line number="544" hits="0"/>
<line number="545" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="546,549"/>
<line number="546" hits="0"/>
<line number="549" hits="0"/>
<line number="565" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="566,572"/>
<line number="566" hits="0"/>
<line number="567" hits="0"/>
<line number="568" hits="0"/>
<line number="569" hits="0"/>
<line number="570" hits="0"/>
<line number="572" hits="0"/>
</lines>
</class>
</classes>
</package>
<package name="api.v1.share" line-rate="0.6964" branch-rate="1" complexity="0">
<classes>
<class name="__init__.py" filename="api/v1/share/__init__.py" complexity="0" line-rate="0.6964" branch-rate="1">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="3" hits="1"/>
<line number="4" hits="1"/>
<line number="5" hits="1"/>
<line number="7" hits="1"/>
<line number="12" hits="1"/>
<line number="17" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="28" hits="0"/>
<line number="30" hits="1"/>
<line number="35" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="45" hits="0"/>
<line number="47" hits="1"/>
<line number="52" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="62" hits="0"/>
<line number="64" hits="1"/>
<line number="69" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="79" hits="0"/>
<line number="81" hits="1"/>
<line number="86" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="96" hits="0"/>
<line number="98" hits="1"/>
<line number="103" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="114" hits="0"/>
<line number="116" hits="1"/>
<line number="121" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="133" hits="0"/>
<line number="135" hits="1"/>
<line number="140" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="150" hits="0"/>
<line number="152" hits="1"/>
<line number="157" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="167" hits="0"/>
<line number="169" hits="1"/>
<line number="174" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="185" hits="0"/>
<line number="187" hits="1"/>
<line number="192" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="202" hits="0"/>
<line number="204" hits="1"/>
<line number="209" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="220" hits="0"/>
<line number="226" hits="1"/>
<line number="232" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="239" hits="0"/>
<line number="241" hits="1"/>
<line number="247" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="254" hits="0"/>
<line number="256" hits="1"/>
<line number="262" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="272" hits="0"/>
<line number="274" hits="1"/>
<line number="280" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="290" hits="0"/>
<line number="292" hits="1"/>
<line number="298" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="308" hits="0"/>
</lines>
</class>
</classes>
</package>
<package name="api.v1.site" line-rate="0.8" branch-rate="1" complexity="0">
<classes>
<class name="__init__.py" filename="api/v1/site/__init__.py" complexity="0" line-rate="0.8" branch-rate="1">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="2" hits="1"/>
<line number="4" hits="1"/>
<line number="5" hits="1"/>
<line number="6" hits="1"/>
<line number="8" hits="1"/>
<line number="13" hits="1"/>
<line number="19" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="26" hits="0"/>
<line number="29" hits="1"/>
<line number="35" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="42" hits="0"/>
<line number="44" hits="1"/>
<line number="50" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="57" hits="0"/>
</lines>
</class>
</classes>
</package>
<package name="api.v1.slave" line-rate="0.7045" branch-rate="1" complexity="0">
<classes>
<class name="__init__.py" filename="api/v1/slave/__init__.py" complexity="0" line-rate="0.7045" branch-rate="1">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="2" hits="1"/>
<line number="4" hits="1"/>
<line number="5" hits="1"/>
<line number="6" hits="1"/>
<line number="8" hits="1"/>
<line number="13" hits="1"/>
<line number="18" hits="1"/>
<line number="23" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="30" hits="0"/>
<line number="31" hits="0"/>
<line number="33" hits="1"/>
<line number="39" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="49" hits="0"/>
<line number="51" hits="1"/>
<line number="55" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="67" hits="0"/>
<line number="69" hits="1"/>
<line number="75" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="85" hits="0"/>
<line number="87" hits="1"/>
<line number="93" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="105" hits="0"/>
<line number="107" hits="1"/>
<line number="113" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="123" hits="0"/>
<line number="125" hits="1"/>
<line number="131" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="141" hits="0"/>
<line number="143" hits="1"/>
<line number="149" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="159" hits="0"/>
<line number="161" hits="1"/>
<line number="167" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="171" hits="0"/>
<line number="173" hits="1"/>
<line number="179" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="189" hits="0"/>
<line number="191" hits="1"/>
<line number="197" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="209" hits="0"/>
<line number="211" hits="1"/>
<line number="217" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="227" hits="0"/>
</lines>
</class>
</classes>
</package>
<package name="api.v1.tag" line-rate="0" branch-rate="0" complexity="0">
<classes>
<class name="__init__.py" filename="api/v1/tag/__init__.py" complexity="0" line-rate="0" branch-rate="0">
<methods/>
<lines>
<line number="1" hits="0"/>
<line number="2" hits="0"/>
<line number="4" hits="0"/>
<line number="5" hits="0"/>
<line number="7" hits="0"/>
<line number="12" hits="0"/>
<line number="18" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="12,27"/>
<line number="25" hits="0"/>
<line number="27" hits="0"/>
<line number="33" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="27,42"/>
<line number="40" hits="0"/>
<line number="42" hits="0"/>
<line number="48" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,42"/>
<line number="58" hits="0"/>
</lines>
</class>
</classes>
</package>
<package name="api.v1.user" line-rate="0.4388" branch-rate="0.6875" complexity="0">
<classes>
<class name="__init__.py" filename="api/v1/user/__init__.py" complexity="0" line-rate="0.4388" branch-rate="0.6875">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="2" hits="1"/>
<line number="4" hits="1"/>
<line number="5" hits="1"/>
<line number="6" hits="1"/>
<line number="7" hits="1"/>
<line number="8" hits="1"/>
<line number="9" hits="1"/>
<line number="10" hits="1"/>
<line number="12" hits="1"/>
<line number="13" hits="1"/>
<line number="14" hits="1"/>
<line number="15" hits="1"/>
<line number="16" hits="1"/>
<line number="17" hits="1"/>
<line number="19" hits="1"/>
<line number="24" hits="1"/>
<line number="30" hits="1"/>
<line number="35" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="47" hits="0"/>
<line number="52" hits="0"/>
<line number="53" hits="0"/>
<line number="54" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="55,57"/>
<line number="55" hits="0"/>
<line number="56" hits="0"/>
<line number="57" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="53,58"/>
<line number="58" hits="0"/>
<line number="59" hits="0"/>
<line number="70" hits="0"/>
<line number="72" hits="1"/>
<line number="77" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="81" hits="0"/>
<line number="83" hits="1"/>
<line number="88" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="108" hits="0"/>
<line number="112" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="113,116"/>
<line number="113" hits="0"/>
<line number="116" hits="0"/>
<line number="120" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="121,124"/>
<line number="121" hits="0"/>
<line number="122" hits="0"/>
<line number="124" hits="0"/>
<line number="125" hits="0"/>
<line number="126" hits="0"/>
<line number="127" hits="0"/>
<line number="128" hits="0"/>
<line number="137" hits="0"/>
<line number="138" hits="0"/>
<line number="139" hits="0"/>
<line number="142" hits="0"/>
<line number="143" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="144,147"/>
<line number="144" hits="0"/>
<line number="145" hits="0"/>
<line number="147" hits="0"/>
<line number="155" hits="0"/>
<line number="163" hits="1"/>
<line number="168" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="177" hits="0"/>
<line number="179" hits="1"/>
<line number="184" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="191" hits="0"/>
<line number="193" hits="1"/>
<line number="198" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="200" hits="0"/>
<line number="202" hits="1"/>
<line number="207" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="217" hits="0"/>
<line number="219" hits="1"/>
<line number="224" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="234" hits="0"/>
<line number="236" hits="1"/>
<line number="241" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="252" hits="0"/>
<line number="258" hits="1"/>
<line number="265" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="276" hits="0"/>
<line number="283" hits="0"/>
<line number="286" hits="0"/>
<line number="288" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,300"/>
<line number="300" hits="0"/>
<line number="302" hits="1"/>
<line number="308" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="321" hits="0"/>
<line number="322" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="323,324"/>
<line number="323" hits="0"/>
<line number="324" hits="0"/>
<line number="325" hits="0"/>
<line number="326" hits="0"/>
<line number="328" hits="0"/>
<line number="336" hits="1"/>
<line number="342" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="353" hits="0"/>
<line number="357" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="358,360"/>
<line number="358" hits="0"/>
<line number="360" hits="0"/>
<line number="364" hits="0"/>
<line number="369" hits="0"/>
<line number="376" hits="0"/>
<line number="378" hits="1"/>
<line number="384" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="391" hits="0"/>
<line number="393" hits="1"/>
<line number="398" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="405" hits="0"/>
<line number="407" hits="1"/>
<line number="413" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="420" hits="0"/>
<line number="422" hits="1"/>
<line number="428" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="435" hits="0"/>
<line number="437" hits="1"/>
<line number="443" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="450" hits="0"/>
<line number="452" hits="1"/>
<line number="458" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="465" hits="0"/>
<line number="467" hits="1"/>
<line number="473" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="480" hits="0"/>
<line number="482" hits="1"/>
<line number="488" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="498" hits="0"/>
<line number="500" hits="1"/>
<line number="506" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="516" hits="0"/>
<line number="520" hits="1"/>
<line number="526" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="539" hits="0"/>
<line number="541" hits="0"/>
<line number="543" hits="0"/>
<line number="544" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="545,546"/>
<line number="545" hits="0"/>
<line number="546" hits="0"/>
<line number="547" hits="0"/>
<line number="550" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="551,554"/>
<line number="551" hits="0"/>
<line number="554" hits="0"/>
<line number="555" hits="0"/>
<line number="557" hits="0"/>
</lines>
</class>
</classes>
</package>
<package name="api.v1.vas" line-rate="0.7391" branch-rate="1" complexity="0">
<classes>
<class name="__init__.py" filename="api/v1/vas/__init__.py" complexity="0" line-rate="0.7391" branch-rate="1">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="3" hits="1"/>
<line number="4" hits="1"/>
<line number="5" hits="1"/>
<line number="7" hits="1"/>
<line number="12" hits="1"/>
<line number="18" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="25" hits="0"/>
<line number="27" hits="1"/>
<line number="33" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="40" hits="0"/>
<line number="42" hits="1"/>
<line number="48" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="55" hits="0"/>
<line number="57" hits="1"/>
<line number="63" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="73" hits="0"/>
<line number="75" hits="1"/>
<line number="81" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="91" hits="0"/>
<line number="93" hits="1"/>
<line number="99" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="106" hits="0"/>
</lines>
</class>
</classes>
</package>
<package name="api.v1.webdav" line-rate="0.7391" branch-rate="1" complexity="0">
<classes>
<class name="__init__.py" filename="api/v1/webdav/__init__.py" complexity="0" line-rate="0.7391" branch-rate="1">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="3" hits="1"/>
<line number="4" hits="1"/>
<line number="5" hits="1"/>
<line number="8" hits="1"/>
<line number="13" hits="1"/>
<line number="19" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="26" hits="0"/>
<line number="28" hits="1"/>
<line number="34" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="41" hits="0"/>
<line number="43" hits="1"/>
<line number="49" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="59" hits="0"/>
<line number="61" hits="1"/>
<line number="67" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="74" hits="0"/>
<line number="76" hits="1"/>
<line number="82" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="92" hits="0"/>
<line number="94" hits="1"/>
<line number="100" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="110" hits="0"/>
</lines>
</class>
</classes>
</package>
<package name="base" line-rate="0.3375" branch-rate="0.2607" complexity="0">
<classes>
<class name="__init__.py" filename="base/__init__.py" complexity="0" line-rate="1" branch-rate="1">
<methods/>
<lines>
<line number="12" hits="1"/>
</lines>
</class>
<class name="sqlmodel_base.py" filename="base/sqlmodel_base.py" complexity="0" line-rate="0.3359" branch-rate="0.2607">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="2" hits="1"/>
<line number="3" hits="1"/>
<line number="5" hits="1"/>
<line number="6" hits="1"/>
<line number="7" hits="1"/>
<line number="8" hits="1"/>
<line number="9" hits="1"/>
<line number="10" hits="1"/>
<line number="13" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="14"/>
<line number="14" hits="0"/>
<line number="17" hits="0"/>
<line number="18" hits="0"/>
<line number="20" hits="0"/>
<line number="42" hits="0"/>
<line number="43" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="45,61"/>
<line number="45" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="47,61"/>
<line number="47" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="45,48"/>
<line number="48" hits="0"/>
<line number="50" hits="0"/>
<line number="52" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="45,53"/>
<line number="53" hits="0"/>
<line number="54" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="45,55"/>
<line number="55" hits="0"/>
<line number="56" hits="0"/>
<line number="61" hits="0"/>
<line number="62" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="65,154"/>
<line number="65" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="66,70"/>
<line number="66" hits="0"/>
<line number="70" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="71,83"/>
<line number="71" hits="0"/>
<line number="73" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,75"/>
<line number="75" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="76,83"/>
<line number="76" hits="0"/>
<line number="77" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="78,83"/>
<line number="78" hits="0"/>
<line number="79" hits="0"/>
<line number="83" hits="0"/>
<line number="86" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="87,90"/>
<line number="87" hits="0"/>
<line number="90" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="91,115"/>
<line number="91" hits="0"/>
<line number="92" hits="0"/>
<line number="95" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="96,115"/>
<line number="96" hits="0"/>
<line number="98" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="100,115"/>
<line number="100" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="98,101"/>
<line number="101" hits="0"/>
<line number="103" hits="0"/>
<line number="105" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="98,106"/>
<line number="106" hits="0"/>
<line number="107" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="98,108"/>
<line number="108" hits="0"/>
<line number="109" hits="0"/>
<line number="115" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="116,136"/>
<line number="116" hits="0"/>
<line number="117" hits="0"/>
<line number="118" hits="0"/>
<line number="121" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="122,126"/>
<line number="122" hits="0"/>
<line number="126" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="129,136"/>
<line number="129" hits="0"/>
<line number="130" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="131,136"/>
<line number="131" hits="0"/>
<line number="136" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="137,140"/>
<line number="137" hits="0"/>
<line number="140" hits="0"/>
<line number="141" hits="0"/>
<line number="143" hits="0"/>
<line number="144" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="145,147"/>
<line number="145" hits="0"/>
<line number="147" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="148,154"/>
<line number="148" hits="0"/>
<line number="149" hits="0"/>
<line number="154" hits="0"/>
<line number="156" hits="0"/>
<line number="163" hits="0"/>
<line number="164" hits="0"/>
<line number="166" hits="0"/>
<line number="168" hits="0"/>
<line number="182" hits="0"/>
<line number="185" hits="0"/>
<line number="187" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="189,205"/>
<line number="189" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="190,195"/>
<line number="190" hits="0"/>
<line number="191" hits="0"/>
<line number="195" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="196,199"/>
<line number="196" hits="0"/>
<line number="199" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="200,201"/>
<line number="200" hits="0"/>
<line number="201" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="187,202"/>
<line number="202" hits="0"/>
<line number="205" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="206,210"/>
<line number="206" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="205,207"/>
<line number="207" hits="0"/>
<line number="210" hits="0"/>
<line number="211" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="212,220"/>
<line number="212" hits="0"/>
<line number="213" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="214,218"/>
<line number="214" hits="0"/>
<line number="215" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="216,218"/>
<line number="216" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="215,217"/>
<line number="217" hits="0"/>
<line number="218" hits="0"/>
<line number="220" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="221,222"/>
<line number="221" hits="0"/>
<line number="222" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="223,226"/>
<line number="223" hits="0"/>
<line number="226" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="227,231"/>
<line number="227" hits="0"/>
<line number="228" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="226,229"/>
<line number="229" hits="0"/>
<line number="231" hits="0"/>
<line number="233" hits="0"/>
<line number="235" hits="1"/>
<line number="238" hits="1"/>
<line number="255" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="256"/>
<line number="256" hits="0"/>
<line number="259" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="261" hits="1"/>
<line number="262" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="295"/>
<line number="263" hits="1"/>
<line number="266" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="268" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="269"/>
<line number="269" hits="0"/>
<line number="272" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="273"/>
<line number="273" hits="0"/>
<line number="275" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,280"/>
<line number="280" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="266,281"/>
<line number="281" hits="0"/>
<line number="282" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="266,283"/>
<line number="283" hits="0"/>
<line number="284" hits="0"/>
<line number="295" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="296" hits="1"/>
<line number="297" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="exit"/>
<line number="301" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="310"/>
<line number="302" hits="1"/>
<line number="303" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="304"/>
<line number="304" hits="0"/>
<line number="305" hits="0"/>
<line number="310" hits="1"/>
<line number="313" hits="1"/>
<line number="327" hits="1"/>
<line number="328" hits="1"/>
<line number="329" hits="1"/>
<line number="330" hits="0"/>
<line number="331" hits="0"/>
<line number="333" hits="1"/>
<line number="335" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="338"/>
<line number="336" hits="1"/>
<line number="338" hits="0"/>
<line number="340" hits="1"/>
<line number="341" hits="1"/>
<line number="343" hits="1"/>
<line number="344" hits="1"/>
<line number="345" hits="1"/>
<line number="346" hits="1"/>
<line number="347" hits="1"/>
<line number="353" hits="1"/>
<line number="360" hits="1"/>
<line number="362" hits="1"/>
<line number="365" hits="1"/>
<line number="378" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="381"/>
<line number="379" hits="1"/>
<line number="381" hits="0"/>
<line number="382" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="383,385"/>
<line number="383" hits="0"/>
<line number="385" hits="0"/>
<line number="386" hits="0"/>
<line number="387" hits="0"/>
<line number="394" hits="0"/>
<line number="397" hits="1"/>
<line number="407" hits="1"/>
<line number="415" hits="1"/>
<line number="417" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="418" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="419" hits="1"/>
<line number="422" hits="1"/>
<line number="425" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="426"/>
<line number="426" hits="0"/>
<line number="429" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="430" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="432"/>
<line number="432" hits="0"/>
<line number="435" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="436"/>
<line number="436" hits="0"/>
<line number="437" hits="0"/>
<line number="438" hits="0"/>
<line number="441" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="442"/>
<line number="442" hits="0"/>
<line number="443" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="444"/>
<line number="444" hits="0"/>
<line number="445" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="446"/>
<line number="446" hits="0"/>
<line number="460" hits="1"/>
<line number="462" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="463" hits="1"/>
<line number="464" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="466"/>
<line number="466" hits="0"/>
<line number="468" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="469" hits="1"/>
<line number="478" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="479" hits="1"/>
<line number="482" hits="1"/>
<line number="485" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="486"/>
<line number="486" hits="0"/>
<line number="489" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="490"/>
<line number="490" hits="0"/>
<line number="493" hits="1"/>
<line number="495" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="497"/>
<line number="497" hits="0"/>
<line number="499" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="501,502"/>
<line number="501" hits="0"/>
<line number="502" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="468,506"/>
<line number="506" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="468,507"/>
<line number="507" hits="0"/>
<line number="512" hits="1"/>
<line number="518" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="519" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="520" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="521" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="523"/>
<line number="523" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="521,524"/>
<line number="524" hits="0"/>
<line number="526" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="521,527"/>
<line number="527" hits="0"/>
<line number="528" hits="0"/>
<line number="533" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="534" hits="1"/>
<line number="535" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="537"/>
<line number="537" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="535,538"/>
<line number="538" hits="0"/>
<line number="553" hits="1"/>
<line number="554" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="555" hits="1"/>
<line number="556" hits="1"/>
<line number="558" hits="1"/>
<line number="559" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="560" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="561"/>
<line number="561" hits="0"/>
<line number="562" hits="0"/>
<line number="563" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="564"/>
<line number="564" hits="0"/>
<line number="565" hits="0"/>
<line number="569" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="570"/>
<line number="570" hits="0"/>
<line number="572" hits="1"/>
<line number="574" hits="1"/>
<line number="592" hits="1"/>
<line number="595" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="596" hits="1"/>
<line number="597" hits="1"/>
<line number="600" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="602" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="613"/>
<line number="605" hits="1"/>
<line number="606" hits="1"/>
<line number="607" hits="1"/>
<line number="613" hits="0"/>
<line number="616" hits="0"/>
<line number="617" hits="0"/>
<line number="618" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="619,624"/>
<line number="619" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="618,620"/>
<line number="620" hits="0"/>
<line number="621" hits="0"/>
<line number="624" hits="0"/>
<line number="633" hits="0"/>
<line number="635" hits="0"/>
<line number="637" hits="0"/>
<line number="639" hits="0"/>
<line number="641" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="642,644"/>
<line number="642" hits="0"/>
<line number="644" hits="0"/>
<line number="645" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="646,649"/>
<line number="646" hits="0"/>
<line number="648" hits="0"/>
<line number="649" hits="0"/>
<line number="651" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="653,671"/>
<line number="653" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="654,660"/>
<line number="654" hits="0"/>
<line number="655" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="653,656"/>
<line number="656" hits="0"/>
<line number="657" hits="0"/>
<line number="660" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="661,671"/>
<line number="661" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="662,671"/>
<line number="662" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="663,668"/>
<line number="663" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="664,668"/>
<line number="664" hits="0"/>
<line number="665" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="663,666"/>
<line number="666" hits="0"/>
<line number="667" hits="0"/>
<line number="668" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="661,669"/>
<line number="669" hits="0"/>
<line number="671" hits="0"/>
<line number="673" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="678,783"/>
<line number="678" hits="0"/>
<line number="679" hits="0"/>
<line number="680" hits="0"/>
<line number="681" hits="0"/>
<line number="688" hits="0"/>
<line number="689" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="690,706"/>
<line number="690" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="691,692"/>
<line number="691" hits="0"/>
<line number="692" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="689,693"/>
<line number="693" hits="0"/>
<line number="696" hits="0"/>
<line number="697" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="689,699"/>
<line number="699" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="700,701"/>
<line number="700" hits="0"/>
<line number="701" hits="0"/>
<line number="702" hits="0"/>
<line number="703" hits="0"/>
<line number="706" hits="0"/>
<line number="707" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="710,720"/>
<line number="710" hits="0"/>
<line number="711" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="712,715"/>
<line number="712" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="711,713"/>
<line number="713" hits="0"/>
<line number="714" hits="0"/>
<line number="715" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="707,716"/>
<line number="716" hits="0"/>
<line number="720" hits="0"/>
<line number="721" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="722,745"/>
<line number="722" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="721,723"/>
<line number="723" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="724,739"/>
<line number="724" hits="0"/>
<line number="725" hits="0"/>
<line number="726" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="723,727"/>
<line number="727" hits="0"/>
<line number="730" hits="0"/>
<line number="736" hits="0"/>
<line number="737" hits="0"/>
<line number="739" hits="0"/>
<line number="740" hits="0"/>
<line number="745" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="746,765"/>
<line number="746" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="747,748"/>
<line number="747" hits="0"/>
<line number="748" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="749,750"/>
<line number="749" hits="0"/>
<line number="750" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="751,754"/>
<line number="751" hits="0"/>
<line number="754" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="745,755"/>
<line number="755" hits="0"/>
<line number="757" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="745,758"/>
<line number="758" hits="0"/>
<line number="759" hits="0"/>
<line number="760" hits="0"/>
<line number="765" hits="0"/>
<line number="766" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="767,776"/>
<line number="767" hits="0"/>
<line number="768" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="769,772"/>
<line number="769" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="768,770"/>
<line number="770" hits="0"/>
<line number="771" hits="0"/>
<line number="772" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="766,773"/>
<line number="773" hits="0"/>
<line number="776" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="777,780"/>
<line number="777" hits="0"/>
<line number="780" hits="0"/>
<line number="783" hits="0"/>
<line number="785" hits="1"/>
<line number="793" hits="1"/>
<line number="794" hits="1"/>
<line number="795" hits="1"/>
<line number="796" hits="1"/>
<line number="798" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="800" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="801"/>
<line number="801" hits="0"/>
<line number="802" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="803"/>
<line number="803" hits="0"/>
<line number="804" hits="0"/>
<line number="806" hits="1"/>
<line number="807" hits="1"/>
<line number="808" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="809"/>
<line number="809" hits="0"/>
<line number="811" hits="1"/>
<line number="812" hits="1"/>
<line number="814" hits="1"/>
<line number="817" hits="1"/>
<line number="818" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="819" hits="1"/>
<line number="820" hits="1"/>
<line number="821" hits="0"/>
<line number="824" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="825" hits="1"/>
<line number="826" hits="1"/>
<line number="827" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="828"/>
<line number="828" hits="0"/>
<line number="831" hits="1"/>
<line number="833" hits="1"/>
<line number="834" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="835"/>
<line number="835" hits="0"/>
<line number="836" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="837" hits="1"/>
<line number="839" hits="1"/>
<line number="840" hits="1"/>
<line number="843" hits="1"/>
<line number="846" hits="1"/>
</lines>
</class>
</classes>
</package>
<package name="captcha" line-rate="0" branch-rate="0" complexity="0">
<classes>
<class name="__init__.py" filename="captcha/__init__.py" complexity="0" line-rate="0" branch-rate="1">
<methods/>
<lines>
<line number="1" hits="0"/>
<line number="3" hits="0"/>
<line number="4" hits="0"/>
<line number="5" hits="0"/>
</lines>
</class>
<class name="gcaptcha.py" filename="captcha/gcaptcha.py" complexity="0" line-rate="0" branch-rate="0">
<methods/>
<lines>
<line number="1" hits="0"/>
<line number="3" hits="0"/>
<line number="5" hits="0"/>
<line number="12" hits="0"/>
<line number="13" hits="0"/>
<line number="15" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,16"/>
<line number="16" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="15,17"/>
<line number="17" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="18,20"/>
<line number="18" hits="0"/>
<line number="20" hits="0"/>
<line number="21" hits="0"/>
</lines>
</class>
<class name="turnstile.py" filename="captcha/turnstile.py" complexity="0" line-rate="0" branch-rate="0">
<methods/>
<lines>
<line number="1" hits="0"/>
<line number="3" hits="0"/>
<line number="5" hits="0"/>
<line number="12" hits="0"/>
<line number="13" hits="0"/>
<line number="15" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,16"/>
<line number="16" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="15,17"/>
<line number="17" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="18,20"/>
<line number="18" hits="0"/>
<line number="20" hits="0"/>
<line number="21" hits="0"/>
</lines>
</class>
</classes>
</package>
<package name="conf" line-rate="0.9375" branch-rate="0.5" complexity="0">
<classes>
<class name="appmeta.py" filename="conf/appmeta.py" complexity="0" line-rate="0.9375" branch-rate="0.5">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="2" hits="1"/>
<line number="4" hits="1"/>
<line number="5" hits="1"/>
<line number="7" hits="1"/>
<line number="9" hits="1"/>
<line number="10" hits="1"/>
<line number="11" hits="1"/>
<line number="12" hits="1"/>
<line number="14" hits="1"/>
<line number="16" hits="1"/>
<line number="18" hits="1"/>
<line number="20" hits="1"/>
<line number="22" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="23"/>
<line number="23" hits="0"/>
<line number="25" hits="1"/>
</lines>
</class>
</classes>
</package>
<package name="http" line-rate="0.5172" branch-rate="0" complexity="0">
<classes>
<class name="http_exceptions.py" filename="http/http_exceptions.py" complexity="0" line-rate="0.5172" branch-rate="0">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="3" hits="1"/>
<line number="7" hits="1"/>
<line number="12" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,13"/>
<line number="13" hits="0"/>
<line number="15" hits="1"/>
<line number="17" hits="0"/>
<line number="19" hits="1"/>
<line number="21" hits="0"/>
<line number="23" hits="1"/>
<line number="25" hits="0"/>
<line number="27" hits="1"/>
<line number="29" hits="0"/>
<line number="31" hits="1"/>
<line number="33" hits="0"/>
<line number="35" hits="1"/>
<line number="37" hits="0"/>
<line number="39" hits="1"/>
<line number="41" hits="0"/>
<line number="43" hits="1"/>
<line number="45" hits="0"/>
<line number="49" hits="1"/>
<line number="51" hits="0"/>
<line number="53" hits="1"/>
<line number="55" hits="0"/>
<line number="57" hits="1"/>
<line number="59" hits="0"/>
<line number="61" hits="1"/>
<line number="63" hits="0"/>
</lines>
</class>
</classes>
</package>
<package name="lifespan" line-rate="0.625" branch-rate="0.3333" complexity="0">
<classes>
<class name="lifespan.py" filename="lifespan/lifespan.py" complexity="0" line-rate="0.625" branch-rate="0.3333">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="2" hits="1"/>
<line number="4" hits="1"/>
<line number="6" hits="1"/>
<line number="7" hits="1"/>
<line number="9" hits="1"/>
<line number="15" hits="1"/>
<line number="17" hits="1"/>
<line number="23" hits="0"/>
<line number="25" hits="1"/>
<line number="26" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="34" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="35,37"/>
<line number="35" hits="0"/>
<line number="37" hits="0"/>
<line number="40" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,41"/>
<line number="41" hits="0"/>
</lines>
</class>
</classes>
</package>
<package name="mixin" line-rate="0.5014" branch-rate="0.3303" complexity="0">
<classes>
<class name="__init__.py" filename="mixin/__init__.py" complexity="0" line-rate="1" branch-rate="1">
<methods/>
<lines>
<line number="21" hits="1"/>
<line number="27" hits="1"/>
<line number="40" hits="1"/>
</lines>
</class>
<class name="info_response.py" filename="mixin/info_response.py" complexity="0" line-rate="1" branch-rate="1">
<methods/>
<lines>
<line number="12" hits="1"/>
<line number="13" hits="1"/>
<line number="15" hits="1"/>
<line number="18" hits="1"/>
<line number="20" hits="1"/>
<line number="21" hits="1"/>
<line number="24" hits="1"/>
<line number="26" hits="1"/>
<line number="27" hits="1"/>
<line number="30" hits="1"/>
<line number="32" hits="1"/>
<line number="33" hits="1"/>
<line number="35" hits="1"/>
<line number="36" hits="1"/>
<line number="39" hits="1"/>
<line number="44" hits="1"/>
</lines>
</class>
<class name="polymorphic.py" filename="mixin/polymorphic.py" complexity="0" line-rate="0.213" branch-rate="0.08824">
<methods/>
<lines>
<line number="60" hits="1"/>
<line number="61" hits="1"/>
<line number="62" hits="1"/>
<line number="64" hits="1"/>
<line number="65" hits="1"/>
<line number="66" hits="1"/>
<line number="67" hits="1"/>
<line number="68" hits="1"/>
<line number="69" hits="1"/>
<line number="71" hits="1"/>
<line number="74" hits="1"/>
<line number="97" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="98,101"/>
<line number="98" hits="0"/>
<line number="101" hits="0"/>
<line number="102" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,105"/>
<line number="105" hits="0"/>
<line number="108" hits="0"/>
<line number="110" hits="0"/>
<line number="116" hits="0"/>
<line number="117" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,116"/>
<line number="133" hits="0"/>
<line number="135" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="136,138"/>
<line number="136" hits="0"/>
<line number="138" hits="0"/>
<line number="140" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="141,146"/>
<line number="141" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="140,142"/>
<line number="142" hits="0"/>
<line number="144" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="140,145"/>
<line number="145" hits="0"/>
<line number="146" hits="0"/>
<line number="163" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,165"/>
<line number="165" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="166,169"/>
<line number="166" hits="0"/>
<line number="169" hits="0"/>
<line number="170" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="171,174"/>
<line number="171" hits="0"/>
<line number="174" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="176,181"/>
<line number="176" hits="0"/>
<line number="181" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="184,190"/>
<line number="184" hits="0"/>
<line number="190" hits="0"/>
<line number="193" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="194,195"/>
<line number="194" hits="0"/>
<line number="195" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="196,198"/>
<line number="196" hits="0"/>
<line number="198" hits="0"/>
<line number="201" hits="0"/>
<line number="202" hits="0"/>
<line number="203" hits="0"/>
<line number="210" hits="0"/>
<line number="213" hits="1"/>
<line number="239" hits="1"/>
<line number="247" hits="0"/>
<line number="250" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="251,254"/>
<line number="251" hits="0"/>
<line number="254" hits="0"/>
<line number="257" hits="0"/>
<line number="258" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="259,265"/>
<line number="259" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="258,260"/>
<line number="260" hits="0"/>
<line number="261" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="258,262"/>
<line number="262" hits="0"/>
<line number="265" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="266,268"/>
<line number="266" hits="0"/>
<line number="268" hits="0"/>
<line number="271" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="272,275"/>
<line number="272" hits="0"/>
<line number="275" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,276"/>
<line number="276" hits="0"/>
<line number="279" hits="1"/>
<line number="354" hits="1"/>
<line number="355" hits="1"/>
<line number="364" hits="1"/>
<line number="382" hits="0"/>
<line number="385" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="386,389"/>
<line number="386" hits="0"/>
<line number="389" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="390,393"/>
<line number="390" hits="0"/>
<line number="393" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,394"/>
<line number="394" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="396,400"/>
<line number="396" hits="0"/>
<line number="397" hits="0"/>
<line number="398" hits="0"/>
<line number="400" hits="0"/>
<line number="402" hits="1"/>
<line number="403" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="412" hits="0"/>
<line number="413" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="416,422"/>
<line number="416" hits="0"/>
<line number="417" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="418,420"/>
<line number="418" hits="0"/>
<line number="420" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="413,421"/>
<line number="421" hits="0"/>
<line number="422" hits="0"/>
<line number="424" hits="1"/>
<line number="425" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="434" hits="0"/>
<line number="435" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="436,440"/>
<line number="436" hits="0"/>
<line number="440" hits="0"/>
<line number="442" hits="1"/>
<line number="443" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="451" hits="0"/>
<line number="452" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="453,456"/>
<line number="453" hits="0"/>
<line number="454" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="452,455"/>
<line number="455" hits="0"/>
<line number="456" hits="0"/>
</lines>
</class>
<class name="table.py" filename="mixin/table.py" complexity="0" line-rate="0.5917" branch-rate="0.44">
<methods/>
<lines>
<line number="16" hits="1"/>
<line number="17" hits="1"/>
<line number="18" hits="1"/>
<line number="27" hits="1"/>
<line number="28" hits="1"/>
<line number="29" hits="1"/>
<line number="30" hits="1"/>
<line number="31" hits="1"/>
<line number="32" hits="1"/>
<line number="33" hits="1"/>
<line number="34" hits="1"/>
<line number="35" hits="1"/>
<line number="37" hits="1"/>
<line number="38" hits="1"/>
<line number="41" hits="1"/>
<line number="42" hits="1"/>
<line number="43" hits="1"/>
<line number="46" hits="1"/>
<line number="69" hits="1"/>
<line number="71" hits="1"/>
<line number="72" hits="1"/>
<line number="74" hits="1"/>
<line number="75" hits="1"/>
<line number="79" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="80" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="exit"/>
<line number="85" hits="1"/>
<line number="95" hits="1"/>
<line number="96" hits="1"/>
<line number="98" hits="1"/>
<line number="99" hits="1"/>
<line number="101" hits="1"/>
<line number="102" hits="1"/>
<line number="104" hits="1"/>
<line number="105" hits="1"/>
<line number="107" hits="1"/>
<line number="116" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="117,119"/>
<line number="117" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="118,119"/>
<line number="118" hits="0"/>
<line number="119" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="120,124"/>
<line number="120" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="121,124"/>
<line number="121" hits="0"/>
<line number="124" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,125"/>
<line number="125" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,126"/>
<line number="126" hits="0"/>
<line number="132" hits="1"/>
<line number="139" hits="1"/>
<line number="140" hits="1"/>
<line number="142" hits="1"/>
<line number="143" hits="1"/>
<line number="145" hits="1"/>
<line number="146" hits="1"/>
<line number="148" hits="1"/>
<line number="149" hits="1"/>
<line number="152" hits="1"/>
<line number="184" hits="1"/>
<line number="199" hits="1"/>
<line number="200" hits="1"/>
<line number="202" hits="1"/>
<line number="209" hits="1"/>
<line number="211" hits="1"/>
<line number="213" hits="1"/>
<line number="214" hits="1"/>
<line number="220" hits="1"/>
<line number="221" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="248" hits="1"/>
<line number="249" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="250" hits="1"/>
<line number="251" hits="1"/>
<line number="253" hits="1"/>
<line number="255" hits="1"/>
<line number="257" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="264"/>
<line number="258" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="259" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="260" hits="1"/>
<line number="262" hits="1"/>
<line number="264" hits="1"/>
<line number="266" hits="1"/>
<line number="305" hits="1"/>
<line number="306" hits="1"/>
<line number="308" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="309"/>
<line number="309" hits="0"/>
<line number="311" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="312"/>
<line number="312" hits="0"/>
<line number="313" hits="0"/>
<line number="315" hits="0"/>
<line number="317" hits="1"/>
<line number="318" hits="1"/>
<line number="320" hits="1"/>
<line number="371" hits="1"/>
<line number="376" hits="1"/>
<line number="377" hits="1"/>
<line number="379" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="380"/>
<line number="380" hits="0"/>
<line number="382" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="383"/>
<line number="383" hits="0"/>
<line number="384" hits="0"/>
<line number="385" hits="0"/>
<line number="387" hits="1"/>
<line number="388" hits="1"/>
<line number="390" hits="1"/>
<line number="391" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="411" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="412"/>
<line number="412" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="413,417"/>
<line number="413" hits="0"/>
<line number="415" hits="1"/>
<line number="417" hits="1"/>
<line number="419" hits="1"/>
<line number="420" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="439" hits="1"/>
<line number="440" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="441"/>
<line number="441" hits="0"/>
<line number="442" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="443"/>
<line number="443" hits="0"/>
<line number="444" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="445"/>
<line number="445" hits="0"/>
<line number="446" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="447"/>
<line number="447" hits="0"/>
<line number="448" hits="1"/>
<line number="450" hits="1"/>
<line number="451" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="538" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="539"/>
<line number="539" hits="0"/>
<line number="545" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="547"/>
<line number="547" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="548,557"/>
<line number="548" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="549,550"/>
<line number="549" hits="0"/>
<line number="550" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="551,552"/>
<line number="551" hits="0"/>
<line number="552" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="553,554"/>
<line number="553" hits="0"/>
<line number="554" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="555,557"/>
<line number="555" hits="0"/>
<line number="557" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="558,569"/>
<line number="558" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="559,560"/>
<line number="559" hits="0"/>
<line number="560" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="561,563"/>
<line number="561" hits="0"/>
<line number="563" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="564,569"/>
<line number="564" hits="0"/>
<line number="565" hits="0"/>
<line number="569" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="571"/>
<line number="571" hits="0"/>
<line number="572" hits="0"/>
<line number="574" hits="1"/>
<line number="576" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="577" hits="1"/>
<line number="580" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="584"/>
<line number="584" hits="0"/>
<line number="586" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="588"/>
<line number="588" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="589,591"/>
<line number="589" hits="0"/>
<line number="591" hits="0"/>
<line number="594" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="595"/>
<line number="595" hits="0"/>
<line number="597" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="599" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="600"/>
<line number="600" hits="0"/>
<line number="603" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="604,609"/>
<line number="604" hits="0"/>
<line number="609" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="611,615"/>
<line number="611" hits="0"/>
<line number="615" hits="0"/>
<line number="617" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="620,624"/>
<line number="620" hits="0"/>
<line number="624" hits="0"/>
<line number="626" hits="1"/>
<line number="628" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="629"/>
<line number="629" hits="0"/>
<line number="631" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="632" hits="1"/>
<line number="634" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="635" hits="1"/>
<line number="637" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="638"/>
<line number="638" hits="0"/>
<line number="640" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="641"/>
<line number="641" hits="0"/>
<line number="643" hits="1"/>
<line number="645" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="646" hits="1"/>
<line number="647" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="648" hits="1"/>
<line number="649" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="652"/>
<line number="650" hits="1"/>
<line number="652" hits="0"/>
<line number="654" hits="1"/>
<line number="655" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="675" hits="0"/>
<line number="676" hits="0"/>
<line number="679" hits="0"/>
<line number="682" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="684,697"/>
<line number="684" hits="0"/>
<line number="685" hits="0"/>
<line number="687" hits="0"/>
<line number="697" hits="0"/>
<line number="698" hits="0"/>
<line number="705" hits="0"/>
<line number="706" hits="0"/>
<line number="708" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="709,712"/>
<line number="709" hits="0"/>
<line number="712" hits="0"/>
<line number="713" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,exit"/>
<line number="715" hits="1"/>
<line number="716" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="765" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="766,775"/>
<line number="766" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="767,768"/>
<line number="767" hits="0"/>
<line number="768" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="769,770"/>
<line number="769" hits="0"/>
<line number="770" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="771,772"/>
<line number="771" hits="0"/>
<line number="772" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="773,775"/>
<line number="773" hits="0"/>
<line number="775" hits="0"/>
<line number="778" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="779,782"/>
<line number="779" hits="0"/>
<line number="782" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="786,788"/>
<line number="786" hits="0"/>
<line number="788" hits="0"/>
<line number="789" hits="0"/>
<line number="791" hits="1"/>
<line number="792" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="839" hits="0"/>
<line number="840" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="841,849"/>
<line number="841" hits="0"/>
<line number="849" hits="0"/>
<line number="852" hits="0"/>
<line number="865" hits="0"/>
<line number="867" hits="1"/>
<line number="868" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="886" hits="1"/>
<line number="887" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="888" hits="1"/>
<line number="889" hits="1"/>
<line number="891" hits="1"/>
<line number="901" hits="1"/>
<line number="902" hits="1"/>
<line number="904" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="905" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="906" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="927" hits="1"/>
</lines>
</class>
</classes>
</package>
<package name="password" line-rate="0.9434" branch-rate="0.9" complexity="0">
<classes>
<class name="pwd.py" filename="password/pwd.py" complexity="0" line-rate="0.9434" branch-rate="0.9">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="3" hits="1"/>
<line number="4" hits="1"/>
<line number="5" hits="1"/>
<line number="6" hits="1"/>
<line number="7" hits="1"/>
<line number="8" hits="1"/>
<line number="9" hits="1"/>
<line number="11" hits="1"/>
<line number="12" hits="1"/>
<line number="14" hits="1"/>
<line number="16" hits="1"/>
<line number="19" hits="1"/>
<line number="20" hits="1"/>
<line number="22" hits="1"/>
<line number="23" hits="1"/>
<line number="25" hits="1"/>
<line number="26" hits="1"/>
<line number="28" hits="1"/>
<line number="31" hits="1"/>
<line number="32" hits="1"/>
<line number="34" hits="1"/>
<line number="37" hits="1"/>
<line number="38" hits="1"/>
<line number="40" hits="1"/>
<line number="43" hits="1"/>
<line number="44" hits="1"/>
<line number="46" hits="1"/>
<line number="49" hits="1"/>
<line number="50" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="61" hits="1"/>
<line number="63" hits="1"/>
<line number="77" hits="1"/>
<line number="89" hits="1"/>
<line number="96" hits="1" branch="true" condition-coverage="50% (1/2)" missing-branches="97"/>
<line number="97" hits="0"/>
<line number="98" hits="0"/>
<line number="100" hits="1"/>
<line number="101" hits="1"/>
<line number="103" hits="1"/>
<line number="106" hits="1"/>
<line number="107" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="117" hits="1"/>
<line number="119" hits="1"/>
<line number="121" hits="1"/>
<line number="126" hits="1"/>
<line number="130" hits="0"/>
<line number="135" hits="1"/>
<line number="136" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="151" hits="1"/>
<line number="152" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="153" hits="1"/>
<line number="155" hits="1"/>
</lines>
</class>
</classes>
</package>
<package name="storage" line-rate="0.3198" branch-rate="0.2" complexity="0">
<classes>
<class name="__init__.py" filename="storage/__init__.py" complexity="0" line-rate="1" branch-rate="1">
<methods/>
<lines>
<line number="9" hits="1"/>
<line number="19" hits="1"/>
<line number="20" hits="1"/>
</lines>
</class>
<class name="exceptions.py" filename="storage/exceptions.py" complexity="0" line-rate="1" branch-rate="1">
<methods/>
<lines>
<line number="8" hits="1"/>
<line number="13" hits="1"/>
<line number="18" hits="1"/>
<line number="23" hits="1"/>
<line number="28" hits="1"/>
<line number="33" hits="1"/>
<line number="38" hits="1"/>
<line number="43" hits="1"/>
</lines>
</class>
<class name="local_storage.py" filename="storage/local_storage.py" complexity="0" line-rate="0.1905" branch-rate="0.05556">
<methods/>
<lines>
<line number="11" hits="1"/>
<line number="12" hits="1"/>
<line number="14" hits="1"/>
<line number="15" hits="1"/>
<line number="16" hits="1"/>
<line number="18" hits="1"/>
<line number="19" hits="1"/>
<line number="27" hits="1"/>
<line number="30" hits="1"/>
<line number="49" hits="1"/>
<line number="56" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="57,59"/>
<line number="57" hits="0"/>
<line number="59" hits="0"/>
<line number="60" hits="0"/>
<line number="62" hits="1"/>
<line number="63" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="65" hits="0"/>
<line number="69" hits="1"/>
<line number="77" hits="0"/>
<line number="78" hits="0"/>
<line number="79" hits="0"/>
<line number="80" hits="0"/>
<line number="81" hits="0"/>
<line number="83" hits="1"/>
<line number="91" hits="0"/>
<line number="92" hits="0"/>
<line number="93" hits="0"/>
<line number="94" hits="0"/>
<line number="95" hits="0"/>
<line number="96" hits="0"/>
<line number="98" hits="1"/>
<line number="108" hits="0"/>
<line number="109" hits="0"/>
<line number="110" hits="0"/>
<line number="111" hits="0"/>
<line number="112" hits="0"/>
<line number="113" hits="0"/>
<line number="117" hits="1"/>
<line number="129" hits="0"/>
<line number="135" hits="0"/>
<line number="136" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="137,140"/>
<line number="137" hits="0"/>
<line number="140" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="141,147"/>
<line number="141" hits="0"/>
<line number="143" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="144,150"/>
<line number="144" hits="0"/>
<line number="145" hits="0"/>
<line number="147" hits="0"/>
<line number="150" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="151,153"/>
<line number="151" hits="0"/>
<line number="153" hits="0"/>
<line number="155" hits="0"/>
<line number="157" hits="0"/>
<line number="161" hits="1"/>
<line number="170" hits="0"/>
<line number="171" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="172,173"/>
<line number="172" hits="0"/>
<line number="173" hits="0"/>
<line number="174" hits="0"/>
<line number="175" hits="0"/>
<line number="177" hits="1"/>
<line number="192" hits="0"/>
<line number="194" hits="0"/>
<line number="195" hits="0"/>
<line number="197" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="198,200"/>
<line number="198" hits="0"/>
<line number="199" hits="0"/>
<line number="200" hits="0"/>
<line number="201" hits="0"/>
<line number="202" hits="0"/>
<line number="204" hits="1"/>
<line number="211" hits="0"/>
<line number="212" hits="0"/>
<line number="214" hits="0"/>
<line number="215" hits="0"/>
<line number="219" hits="1"/>
<line number="228" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="229,231"/>
<line number="229" hits="0"/>
<line number="231" hits="0"/>
<line number="232" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,233"/>
<line number="233" hits="0"/>
<line number="234" hits="0"/>
<line number="235" hits="0"/>
<line number="237" hits="1"/>
<line number="245" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="246,248"/>
<line number="246" hits="0"/>
<line number="248" hits="0"/>
<line number="249" hits="0"/>
<line number="251" hits="1"/>
<line number="258" hits="0"/>
<line number="262" hits="1"/>
<line number="268" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,269"/>
<line number="269" hits="0"/>
<line number="270" hits="0"/>
<line number="271" hits="0"/>
<line number="272" hits="0"/>
<line number="273" hits="0"/>
<line number="275" hits="1"/>
<line number="292" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="293,296"/>
<line number="293" hits="0"/>
<line number="296" hits="0"/>
<line number="299" hits="0"/>
<line number="300" hits="0"/>
<line number="301" hits="0"/>
<line number="304" hits="0"/>
<line number="305" hits="0"/>
<line number="306" hits="0"/>
<line number="307" hits="0"/>
<line number="308" hits="0"/>
<line number="309" hits="0"/>
<line number="311" hits="1"/>
<line number="323" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="324,327"/>
<line number="324" hits="0"/>
<line number="327" hits="0"/>
<line number="328" hits="0"/>
<line number="330" hits="0"/>
<line number="331" hits="0"/>
<line number="332" hits="0"/>
<line number="333" hits="0"/>
<line number="334" hits="0"/>
<line number="336" hits="1"/>
<line number="343" hits="0"/>
<line number="344" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="345,347"/>
<line number="345" hits="0"/>
<line number="347" hits="0"/>
<line number="348" hits="0"/>
<line number="349" hits="0"/>
<line number="350" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="351,355"/>
<line number="351" hits="0"/>
<line number="352" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="350,353"/>
<line number="353" hits="0"/>
<line number="354" hits="0"/>
<line number="355" hits="0"/>
<line number="356" hits="0"/>
<line number="357" hits="0"/>
<line number="359" hits="0"/>
<line number="363" hits="1"/>
<line number="370" hits="0"/>
<line number="371" hits="0"/>
<line number="372" hits="0"/>
<line number="373" hits="0"/>
<line number="374" hits="0"/>
<line number="376" hits="1"/>
<line number="384" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="385,387"/>
<line number="385" hits="0"/>
<line number="387" hits="0"/>
<line number="388" hits="0"/>
</lines>
</class>
<class name="naming_rule.py" filename="storage/naming_rule.py" complexity="0" line-rate="0.6154" branch-rate="0.5714">
<methods/>
<lines>
<line number="20" hits="1"/>
<line number="21" hits="1"/>
<line number="22" hits="1"/>
<line number="23" hits="1"/>
<line number="24" hits="1"/>
<line number="26" hits="1"/>
<line number="29" hits="1"/>
<line number="36" hits="1"/>
<line number="37" hits="1"/>
<line number="39" hits="1"/>
<line number="40" hits="1"/>
<line number="42" hits="1"/>
<line number="43" hits="1"/>
<line number="46" hits="1"/>
<line number="66" hits="1"/>
<line number="69" hits="1"/>
<line number="71" hits="1"/>
<line number="72" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="80" hits="0"/>
<line number="83" hits="0"/>
<line number="86" hits="0"/>
<line number="101" hits="0"/>
<line number="102" hits="0"/>
<line number="103" hits="0"/>
<line number="105" hits="0"/>
<line number="107" hits="1"/>
<line number="108" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="115" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="116,118"/>
<line number="116" hits="0"/>
<line number="117" hits="0"/>
<line number="118" hits="0"/>
<line number="120" hits="1"/>
<line number="121" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="128" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,exit"/>
<line number="130" hits="1"/>
<line number="131" hits="1" branch="true" condition-coverage="100% (2/2)"/>
<line number="138" hits="0"/>
<line number="143" hits="0"/>
<line number="144" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="exit,exit"/>
</lines>
</class>
</classes>
</package>
<package name="user" line-rate="0.3478" branch-rate="0" complexity="0">
<classes>
<class name="__init__.py" filename="user/__init__.py" complexity="0" line-rate="1" branch-rate="1">
<methods/>
<lines>
<line number="1" hits="1"/>
</lines>
</class>
<class name="login.py" filename="user/login.py" complexity="0" line-rate="0.3182" branch-rate="0">
<methods/>
<lines>
<line number="1" hits="1"/>
<line number="3" hits="1"/>
<line number="5" hits="1"/>
<line number="6" hits="1"/>
<line number="7" hits="1"/>
<line number="8" hits="1"/>
<line number="12" hits="1"/>
<line number="33" hits="0"/>
<line number="36" hits="0"/>
<line number="37" hits="0"/>
<line number="46" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="47,50"/>
<line number="47" hits="0"/>
<line number="50" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="52,62"/>
<line number="52" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="53,57"/>
<line number="53" hits="0"/>
<line number="54" hits="0"/>
<line number="57" hits="0" branch="true" condition-coverage="0% (0/2)" missing-branches="58,62"/>
<line number="58" hits="0"/>
<line number="59" hits="0"/>
<line number="62" hits="0"/>
<line number="66" hits="0"/>
<line number="71" hits="0"/>
</lines>
</class>
</classes>
</package>
</packages>
</coverage>