summaryrefslogtreecommitdiff
path: root/git/db/complex.py
blob: e8ad8a625c57e009bae4c1e3ff38b3b710c7f78c (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
"""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."""