pyEDAA.Reports.DocumentationCoverage

pyEDAA/Reports/DocumentationCoverage/__init__.py
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