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

17 from __future__ import annotations

18

19 from typing import TYPE_CHECKING

20

21 from requests import Session

22

23 from gitlabracadabra import __version__ as gitlabracadabra_version

24

25 if TYPE_CHECKING: 25 ↛ 26 line 25 didn't jump to line 26 because the condition on line 25 was never true

26 from gitlabracadabra.packages.destination import Destination

27 from gitlabracadabra.packages.package_file import PackageFile

28

29

30 class Source:

31 """Source package repository."""

32

33 def __init__(self) -> None:

34 """Initialize a Source."""

35 self.session = Session()

36 self.session.headers["User-Agent"] = f"gitlabracadabra/{gitlabracadabra_version}"

37

38 def package_files(self, destination: Destination) -> list[PackageFile]:

39 """Return list of package files.

40

41 Raises:

42 NotImplementedError: This is an abstract method.

43 """

44 raise NotImplementedError