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