doc/.venv/Lib/site-packages/cerulean/file_system.py

76 lines
2.2 KiB
Python

from abc import ABC
from types import TracebackType
from typing import Any, Optional, Union
from cerulean.path import Path
from cerulean.util import BaseExceptionType
class UnsupportedOperationError(RuntimeError):
"""Raised when an unsupported method is called.
See :class:`WebdavFileSystem`.
"""
pass
class FileSystem(ABC):
"""Represents a file system.
This is a generic interface class that all file systems inherit \
from, so you can use it wherever any file system will do.
In order to do something useful, you'll want an actual file system,
like a :class:`LocalFileSystem` or an :class:`SftpFileSystem`.
FileSystems may hold resources, so you should either use them \
with a ``with`` statement, or call :meth:`close` on the returned \
object when you are done with it.
Beyond that, file systems support a single operation:
.. code-block:: python
fs / 'path'
which produces a :class:`Path`, through which you can do things \
with files.
"""
def __enter__(self) -> 'FileSystem':
"""Enter context manager."""
return self
def __exit__(self, exc_type: Optional[BaseExceptionType],
exc_value: Optional[BaseException],
traceback: Optional[TracebackType]) -> None:
"""Exit context manager."""
pass
def __eq__(self, other: Any) -> bool:
"""Returns True iff this filesystem and other are equal.
FileSystem objects compare equal if they access the same
file system on the same host via the same protocol.
"""
return NotImplemented
def close(self) -> None:
"""Close connections and free resources, if any.
FileSystem objects may hold resources that need to be freed \
when you are done with the object. You can free them by calling \
this function, or you can use the FileSystem as a context \
manager using a ``with`` statement.
"""
pass
def root(self) -> Path:
"""Returns a Path representing the root of the file system.
"""
raise NotImplementedError()
def __truediv__(self, segment: str) -> Path:
"""Returns a Path anchored at this file system's root."""
raise NotImplementedError()