aiida.tools.archive.implementations.sqlite_zip package¶
SQLite implementations of an archive file format.
Submodules¶
The file format implementation
- class aiida.tools.archive.implementations.sqlite_zip.main.ArchiveFormatSqlZip[source]¶
Bases:
aiida.tools.archive.abstract.ArchiveFormatAbstract
Archive format, which uses a zip file, containing an SQLite database.
The content of the zip file is:
|- archive.zip |- metadata.json |- db.sqlite3 |- repo/ |- hashkey
Repository files are named by their SHA256 content hash.
- __abstractmethods__ = frozenset({})¶
- __module__ = 'aiida.tools.archive.implementations.sqlite_zip.main'¶
- _abc_impl = <_abc_data object>¶
- migrate(inpath: Union[str, pathlib.Path], outpath: Union[str, pathlib.Path], version: str, *, force: bool = False, compression: int = 6) None [source]¶
Migrate an archive to a specific version.
- Parameters
path – archive path
- open(path: Union[str, pathlib.Path], mode: Literal['r'], *, compression: int = '6', **kwargs: Any) aiida.tools.archive.implementations.sqlite_zip.reader.ArchiveReaderSqlZip [source]¶
- open(path: Union[str, pathlib.Path], mode: Literal['x', 'w'], *, compression: int = '6', **kwargs: Any) aiida.tools.archive.implementations.sqlite_zip.writer.ArchiveWriterSqlZip
- open(path: Union[str, pathlib.Path], mode: Literal['a'], *, compression: int = '6', **kwargs: Any) aiida.tools.archive.implementations.sqlite_zip.writer.ArchiveAppenderSqlZip
Open an archive (latest version only).
- Parameters
path – archive path
mode – open mode: ‘r’ (read), ‘x’ (exclusive write), ‘w’ (write) or ‘a’ (append)
compression – default level of compression to use for writing (integer from 0 to 9)
Note, in write mode, the writer is responsible for writing the format version.
- read_version(path: Union[str, pathlib.Path]) str [source]¶
Read the version of the archive from a file.
This method should account for reading all versions of the archive format.
- Parameters
path – archive path
- Raises
UnreachableStorage
if the file does not exist- Raises
CorruptStorage
if a version cannot be read from the archive
AiiDA archive reader implementation.
- class aiida.tools.archive.implementations.sqlite_zip.reader.ArchiveReaderSqlZip(path: Union[str, pathlib.Path], **kwargs: Any)[source]¶
Bases:
aiida.tools.archive.abstract.ArchiveReaderAbstract
An archive reader for the SQLite format.
- __abstractmethods__ = frozenset({})¶
- __enter__() aiida.tools.archive.implementations.sqlite_zip.reader.ArchiveReaderSqlZip [source]¶
Start reading from the archive.
- __init__(path: Union[str, pathlib.Path], **kwargs: Any)[source]¶
Initialise the reader.
- Parameters
path – archive path
- __module__ = 'aiida.tools.archive.implementations.sqlite_zip.reader'¶
- _abc_impl = <_abc_data object>¶
- get_backend() aiida.storage.sqlite_zip.backend.SqliteZipBackend [source]¶
Return a ‘read-only’ backend for the archive.
AiiDA archive writer implementation.
- class aiida.tools.archive.implementations.sqlite_zip.writer.ArchiveAppenderSqlZip(path: Union[str, pathlib.Path], fmt: aiida.tools.archive.abstract.ArchiveFormatAbstract, *, mode: Literal['x', 'w', 'a'] = 'x', compression: int = 6, work_dir: Optional[pathlib.Path] = None, _debug: bool = False, _enforce_foreign_keys: bool = True)[source]¶
Bases:
aiida.tools.archive.implementations.sqlite_zip.writer.ArchiveWriterSqlZip
AiiDA archive appender implementation.
- __abstractmethods__ = frozenset({})¶
- __enter__() aiida.tools.archive.implementations.sqlite_zip.writer.ArchiveAppenderSqlZip [source]¶
Start appending to the archive
- __module__ = 'aiida.tools.archive.implementations.sqlite_zip.writer'¶
- _abc_impl = <_abc_data object>¶
- class aiida.tools.archive.implementations.sqlite_zip.writer.ArchiveWriterSqlZip(path: Union[str, pathlib.Path], fmt: aiida.tools.archive.abstract.ArchiveFormatAbstract, *, mode: Literal['x', 'w', 'a'] = 'x', compression: int = 6, work_dir: Optional[pathlib.Path] = None, _debug: bool = False, _enforce_foreign_keys: bool = True)[source]¶
Bases:
aiida.tools.archive.abstract.ArchiveWriterAbstract
AiiDA archive writer implementation.
- __abstractmethods__ = frozenset({})¶
- __enter__() aiida.tools.archive.implementations.sqlite_zip.writer.ArchiveWriterSqlZip [source]¶
Start writing to the archive
- __init__(path: Union[str, pathlib.Path], fmt: aiida.tools.archive.abstract.ArchiveFormatAbstract, *, mode: Literal['x', 'w', 'a'] = 'x', compression: int = 6, work_dir: Optional[pathlib.Path] = None, _debug: bool = False, _enforce_foreign_keys: bool = True)[source]¶
Initialise the writer.
- Parameters
path – archive path
mode – mode to open the archive in: ‘x’ (exclusive), ‘w’ (write) or ‘a’ (append)
compression – default level of compression to use (integer from 0 to 9)
- __module__ = 'aiida.tools.archive.implementations.sqlite_zip.writer'¶
- _abc_impl = <_abc_data object>¶
- _stream_binary(name: str, handle: BinaryIO, *, buffer_size: Optional[int] = None, compression: Optional[int] = None, comment: Optional[bytes] = None) None [source]¶
Add a binary stream to the archive.
- Parameters
buffer_size – Number of bytes to buffer
compression – Override global compression level
comment – A binary meta comment about the object
- bulk_insert(entity_type: aiida.orm.entities.EntityTypes, rows: List[Dict[str, Any]], allow_defaults: bool = False) None [source]¶
Add multiple rows of entity data to the archive.
- Parameters
entity_type – The type of the entity
data – A list of dictionaries, containing all fields of the backend model, except the id field (a.k.a primary key), which will be generated dynamically
allow_defaults – If
False
, assert that each row contains all fields, otherwise, allow default values for missing fields.
- Raises
IntegrityError
if the keys in a row are not a subset of the columns in the table
- db_name = 'db.sqlite3'¶
- delete_object(key: str) None [source]¶
Delete the object from the archive.
- Parameters
key – fully qualified identifier for the object within the repository.
- Raises
IOError – if the file could not be deleted.
- meta_name = 'metadata.json'¶
- put_object(stream: BinaryIO, *, buffer_size: Optional[int] = None, key: Optional[str] = None) str [source]¶
Add an object to the archive.
- Parameters
stream – byte stream to read the object from
buffer_size – Number of bytes to buffer when read/writing
key – key to use for the object (if None will be auto-generated)
- Returns
the key of the object