• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

colour-science / colour-datasets / 7853010122

10 Feb 2024 05:53AM UTC coverage: 96.225%. Remained the same
7853010122

push

github

KelSolaar
Use `np.reshape` function instead of `.reshape` method.

2243 of 2331 relevant lines covered (96.22%)

0.96 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

96.77
/colour_datasets/loaders/abstract.py
1
"""
2
Abstract Dataset Loader
3
=======================
4

5
Defines the abstract class implementing support for dataset loading:
6

7
-   :class:`colour_datasets.loaders.AbstractDatasetLoader`
8
"""
9

10
from __future__ import annotations
1✔
11

12
from abc import ABC, abstractmethod
1✔
13

14
from colour.hints import Any
1✔
15

16
from colour_datasets.records import Record
1✔
17

18
__author__ = "Colour Developers"
1✔
19
__copyright__ = "Copyright 2019 Colour Developers"
1✔
20
__license__ = "BSD-3-Clause - https://opensource.org/licenses/BSD-3-Clause"
1✔
21
__maintainer__ = "Colour Developers"
1✔
22
__email__ = "colour-developers@colour-science.org"
1✔
23
__status__ = "Production"
1✔
24

25
__all__ = [
1✔
26
    "AbstractDatasetLoader",
27
]
28

29

30
class AbstractDatasetLoader(ABC):
1✔
31
    """
32
    Define the base class for a dataset loader.
33

34
    This is an :class:`ABCMeta` abstract class that must be inherited by
35
    sub-classes.
36

37
    The sub-classes are expected to implement the
38
    :meth:`colour_datasets.loaders.AbstractDatasetLoader.load` method that
39
    handles the syncing, parsing, conversion and return of the dataset content
40
    as a *Python* object.
41

42
    Attributes
43
    ----------
44
    -   :attr:`colour_datasets.loaders.AbstractDatasetLoader.ID`
45
    -   :attr:`colour_datasets.loaders.AbstractDatasetLoader.record`
46
    -   :attr:`colour_datasets.loaders.AbstractDatasetLoader.id`
47
    -   :attr:`colour_datasets.loaders.AbstractDatasetLoader.content`
48

49
    Methods
50
    -------
51
    -   :meth:`colour_datasets.loaders.AbstractDatasetLoader.__init__`
52
    -   :meth:`colour_datasets.loaders.AbstractDatasetLoader.load`
53
    -   :meth:`colour_datasets.loaders.AbstractDatasetLoader.sync`
54

55
    Parameters
56
    ----------
57
    record
58
        Dataset record.
59
    """
60

61
    ID: str = "Undefined"
1✔
62
    """Dataset record id, i.e. the *Zenodo* record number."""
1✔
63

64
    def __init__(self, record: Record) -> None:
1✔
65
        self._record: Record = record
1✔
66
        self._content: Any | None = None
1✔
67

68
    @property
1✔
69
    def record(self) -> Record:
1✔
70
        """
71
        Getter property for the dataset record.
72

73
        Returns
74
        -------
75
        :class:`colour_datasets.Record`
76
            Dataset record.
77
        """
78

79
        return self._record
1✔
80

81
    @property
1✔
82
    def id(self) -> str:
1✔
83
        """
84
        Getter property for the dataset id.
85

86
        Returns
87
        -------
88
        :class:`str`
89
            Dataset id.
90
        """
91

92
        return self.__class__.ID
×
93

94
    @property
1✔
95
    def content(self) -> Any:
1✔
96
        """
97
        Getter property for the dataset content.
98

99
        Returns
100
        -------
101
        :class:`object`
102
           Dataset content.
103
        """
104

105
        return self._content
1✔
106

107
    @abstractmethod
1✔
108
    def load(self) -> Any:
1✔
109
        """
110
        Sync, parse, convert and return the dataset content as a *Python*
111
        object.
112

113
        Returns
114
        -------
115
        :class:`object`
116
            Dataset content as a *Python* object.
117

118
        Notes
119
        -----
120
        -   Sub-classes are required to call
121
            :meth:`colour_datasets.loaders.AbstractDatasetLoader.sync` method
122
            when they implement it, e.g. ``super().sync()``.
123
        """
124

125
    def sync(self):
1✔
126
        """
127
        Sync the dataset content, i.e. checks whether it is synced and pulls
128
        it if required.
129
        """
130

131
        if not self.record.synced():
1✔
132
            self.record.pull()
1✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc