summaryrefslogtreecommitdiff
path: root/git/db/complex.py
blob: e3442deedab78ee72fc0326cfd5e59e23c30d381 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
"""Module with many useful complex databases with different useful combinations of primary implementations"""

from py.complex import PurePartialGitDB
from cmd.complex import CmdPartialGitDB
from compat import RepoCompatibilityInterface

__all__ = ['CmdGitDB', 'PureGitDB', 'CmdCompatibilityGitDB', 'PureCompatibilityGitDB']


class CmdGitDB(CmdPartialGitDB, PurePartialGitDB):

    """A database which uses primarily the git command implementation, but falls back
    to pure python where it is more feasible
    :note: To assure consistent behaviour across implementations, when calling the 
        ``stream()`` method a cache is created. This makes this implementation a bad
        choice when reading big files as these are streamed from memory in all cases."""


class CmdCompatibilityGitDB(RepoCompatibilityInterface, CmdGitDB):

    """A database which fills in its missing implementation using the pure python 
    implementation"""
    pass


class PureGitDB(PurePartialGitDB, CmdPartialGitDB):

    """A repository which uses the pure implementation primarily, but falls back
    on using the git command for high-level functionality"""


class PureCompatibilityGitDB(RepoCompatibilityInterface, PureGitDB):

    """Repository which uses the pure implementation primarily, but falls back
    to the git command implementation. Please note that the CmdGitDB does it
    the opposite way around."""