Source code for projectreport.analyzer.module
from typing import TYPE_CHECKING, List, Optional
if TYPE_CHECKING:
from projectreport.analyzer.project import Project
from projectreport.analyzer.parsers.base import Parser
import os
from cached_property import cached_property
from projectreport.analyzer.analysis import ModuleAnalysis
from projectreport.analyzer.analyzable import Analyzable
from projectreport.analyzer.parsers.index import PARSER_EXTENSIONS
[docs]class Module(Analyzable):
[docs] def __init__(
self,
path: str,
package: Optional[str] = None,
project: Optional["Project"] = None,
):
base_path, extension = os.path.splitext(path)
self.name = os.path.basename(base_path)
self.extension = extension.strip(".")
if package is None:
package = self.name
self.package = package
super().__init__(path, project=project)
self.analysis = ModuleAnalysis(self)
@cached_property
def parser(self) -> Optional["Parser"]:
if self.extension not in PARSER_EXTENSIONS:
return None
return PARSER_EXTENSIONS[self.extension](self.path)