Source code for nitpick.plugins.info

"""Info needed by the plugins."""

from __future__ import annotations

from dataclasses import dataclass, field
from typing import TYPE_CHECKING

from identify import identify

from nitpick.constants import DOT
from nitpick.exceptions import Deprecation

if TYPE_CHECKING:
    from nitpick.core import Project


[docs]@dataclass class FileInfo: """File information needed by the plugin.""" project: Project path_from_root: str tags: set[str] = field(default_factory=set)
[docs] @classmethod def create(cls, project: Project, path_from_root: str) -> FileInfo: """Clean the file name and get its tags.""" if Deprecation.pre_commit_without_dash(path_from_root): clean_path = DOT + path_from_root else: clean_path = DOT + path_from_root[1:] if path_from_root.startswith("-") else path_from_root tags = set(identify.tags_from_filename(clean_path)) return cls(project, clean_path, tags)