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

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/>. 

16 

17from __future__ import annotations 

18 

19from dataclasses import KW_ONLY, dataclass, field 

20from typing import TYPE_CHECKING 

21 

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 

24 

25 

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 

37 

38 def __post_init__(self) -> None: 

39 if not self.file_name: 

40 self.file_name = self.url.split("/").pop()