Source code for et_micc.tomlfile

# -*- coding: utf-8 -*-
"""
Module et_micc.tomlfile
=======================
"""
# This is a copy of poetry/utils/toml_file.py
# It is there to avoid introducing a dependency on poetry in et_micc.
from tomlkit.toml_file import TOMLFile as BaseTOMLFile
from typing import Union

# from ._compat import Path
from pathlib import Path


[docs]class TomlFile(BaseTOMLFile): """Read/write access to :file:`.toml` files (:file:`pyproject.toml` in particular). Open a :file:`.toml` file and read its content The content is accessed by subscripting: .. code-block:: python toml = TomlFile('path/to/toml') # Read an item from the .toml file's content: old_name = toml['tool']['poetry']['name'] # Modify an item in the .toml file's content (but not yet in the file): toml['tool']['poetry']['name'] = 'new_name' # Now modify the file with the modified content: toml.save() :param str|Path path: path to the .toml file. :raises: FileNotFoundError if the file does not exist. """ def __init__(self, path): # type: (Union[str, Path]) -> None super(TomlFile, self).__init__(str(path)) self._path_ = Path(path) if self.exists(): self._content_ = self.read() else: raise FileNotFoundError(str(self._path_)) @property def path(self): # type: () -> Path """Path object of the :file:`.toml` file""" return self._path_
[docs] def exists(self): # type: () -> bool """Does the :file:`.toml` file exist?""" return self._path_.exists()
def __getattr__(self, item): """Delegate to self.path.""" return getattr(self._path_, item) def __str__(self): """string representation of self.path""" return str(self._path) def __getitem__(self,item): """Read access the content of the :file:`.toml` file.""" return self._content_[item] def __setitem__(self,item,value): """Write access the content of the :file:`.toml` file.""" self._content_[item] = value
[docs] def save(self): """Write the current content of the :file:`.toml` file back to file.""" self.write(self._content_)\
# eof