Source code for terracotta
"""__init__.py
Initialize global setup
"""
# get version
try:
from terracotta._version import version as __version__ # noqa: F401
except ImportError: # pragma: no cover
# package is not installed
raise RuntimeError(
"Terracotta has not been installed correctly. Please run `pip install -e .` or "
"`python setup.py develop` in the Terracotta package folder."
) from None
# initialize settings, define settings API
from typing import Mapping, Any, Set
from terracotta.config import parse_config, TerracottaSettings
_settings: TerracottaSettings = parse_config()
_overwritten_settings: Set = set()
[docs]
def update_settings(**new_config: Any) -> None:
"""Update the global Terracotta runtime settings.
Arguments:
new_config: Options to override. Have to be valid Terracotta settings.
Example:
>>> import terracotta as tc
>>> tc.get_settings().DEFAULT_TILE_SIZE
(256, 256)
>>> tc.update_settings(DEFAULT_TILE_SIZE=[512, 512])
>>> tc.get_settings().DEFAULT_TILE_SIZE
(512, 512)
"""
from terracotta.config import parse_config
global _settings, _overwritten_settings
current_config = {k: getattr(_settings, k) for k in _overwritten_settings}
_settings = parse_config({**current_config, **new_config})
_overwritten_settings |= set(new_config.keys())
[docs]
def get_settings() -> TerracottaSettings: # noqa: F821
"""Returns the current set of global runtime settings.
Example:
>>> import terracotta as tc
>>> tc.get_settings().DEBUG
False
"""
return _settings
del parse_config, TerracottaSettings
del Mapping, Any, Set
# expose API
from terracotta.drivers import get_driver # noqa: F401
__all__ = (
"get_driver",
"get_settings",
"update_settings",
)