Coverage for src/gitlabracadabra/packages/package_file.py: 91%
19 statements
« prev ^ index » next coverage.py v7.8.0, created at 2025-04-23 06:44 +0200
« prev ^ index » next coverage.py v7.8.0, created at 2025-04-23 06:44 +0200
1#
2# Copyright (C) 2019-2025 Mathieu Parent <math.parent@gmail.com>
3#
4# This program is free software: you can redistribute it and/or modify
5# it under the terms of the GNU Lesser General Public License as published by
6# the Free Software Foundation, either version 3 of the License, or
7# (at your option) any later version.
8#
9# This program is distributed in the hope that it will be useful,
10# but WITHOUT ANY WARRANTY; without even the implied warranty of
11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12# GNU Lesser General Public License for more details.
13#
14# You should have received a copy of the GNU Lesser General Public License
15# along with this program. If not, see <http://www.gnu.org/licenses/>.
17from __future__ import annotations
19from dataclasses import KW_ONLY, dataclass, field
20from typing import TYPE_CHECKING
22if TYPE_CHECKING: 22 ↛ 23line 22 didn't jump to line 23 because the condition on line 22 was never true
23 from typing import Literal
26@dataclass
27class PackageFile:
28 url: str
29 package_type: Literal["generic", "helm", "pypi"]
30 package_name: str
31 package_version: str = "0"
32 file_name: str = ""
33 _: KW_ONLY
34 metadata: dict[str, str] = field(default_factory=dict)
35 force: bool = False
36 delete: bool = False
38 def __post_init__(self) -> None:
39 if not self.file_name:
40 self.file_name = self.url.split("/").pop()