1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
# ==================================================================================================================== #
# _____ ____ _ _ ____ _ #
# _ __ _ _| ____| _ \ / \ / \ | _ \ ___ _ __ ___ _ __| |_ ___ #
# | '_ \| | | | _| | | | |/ _ \ / _ \ | |_) / _ \ '_ \ / _ \| '__| __/ __| #
# | |_) | |_| | |___| |_| / ___ \ / ___ \ _| _ < __/ |_) | (_) | | | |_\__ \ #
# | .__/ \__, |_____|____/_/ \_\/_/ \_(_)_| \_\___| .__/ \___/|_| \__|___/ #
# |_| |___/ |_| #
# ==================================================================================================================== #
# Authors: #
# Patrick Lehmann #
# #
# License: #
# ==================================================================================================================== #
# Copyright 2021-2026 Electronic Design Automation Abstraction (EDA²) #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); #
# you may not use this file except in compliance with the License. #
# You may obtain a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
# #
# SPDX-License-Identifier: Apache-2.0 #
# ==================================================================================================================== #
#
"""Abstraction of code documentation coverage data model."""
from enum import Flag
from typing import Optional as Nullable
from pyTooling.Decorators import export, readonly
from pyTooling.MetaClasses import ExtendedType
from pyEDAA.Reports import ReportException
@export
class DocCoverageException(ReportException):
pass
@export
class CoverageState(Flag):
Unknown = 0
Excluded = 1
Ignored = 2
Empty = 4
Covered = 8
Weak = 16
Incomplete = 32
Inherited = 64
Detailed = 128
Undocumented = 256
Documented = 512
Parameters = 1024
ReturnValue = 2048
Exceptions = 8192
Types = 16384
# unrequiredButDocumented
# wrongly documented
@export
class Base(metaclass=ExtendedType, slots=True):
_parent: Nullable["Base"]
_name: str
_status: CoverageState
def __init__(self, name: str, parent: Nullable["Base"] = None) -> None:
if name is None:
raise ValueError(f"Parameter 'name' must not be None.")
self._parent = parent
self._name = name
self._status = CoverageState.Unknown
@readonly
def Parent(self) -> Nullable["Base"]:
"""
Read-only property to access the reference to the parent coverage entity.
:returns: Reference to the parent entity, or ``None`` for the root entity.
"""
return self._parent
@readonly
def Name(self) -> str:
"""
Read-only property to access the coverage entity's name.
:returns: Name of the coverage entity.
"""
return self._name
@readonly
def Status(self) -> CoverageState:
"""
Read-only property to access the coverage entity's state.
:returns: Coverage state of the entity.
"""
return self._status
@export
class _Type(Base):
pass
@export
class Class(_Type):
pass
@export
class _Unit(Base):
pass
@export
class Module(_Unit):
pass
@export
class Package(_Unit):
pass
|