def getenv(): """Get a mapping of current options.""" if not local._env: raise EnvError("No GDAL environment exists") else: log.debug("Got a copy of environment %r options", local._env) return local._env.options.copy()
def setenv(**options): """Set options in the existing environment.""" if not local._env: raise EnvError("No GDAL environment exists") else: local._env.update_config_options(**options) log.debug("Updated existing %r with options %r", local._env, options)
def delenv(): """Delete options in the existing environment.""" if not local._env: raise EnvError("No GDAL environment exists") else: local._env.clear_config_options() log.debug("Cleared existing %r options", local._env) local._env.stop() local._env = None
def __init__( self, session=None, **options): """Create a new GDAL/AWS environment. Note: this class is a context manager. GDAL isn't configured until the context is entered via `with fiona.Env():` Parameters ---------- session : optional A Session object. **options : optional A mapping of GDAL configuration options, e.g., `CPL_DEBUG=True, CHECK_WITH_INVERT_PROJ=False`. Returns ------- Env Notes ----- We raise EnvError if the GDAL config options AWS_ACCESS_KEY_ID or AWS_SECRET_ACCESS_KEY are given. AWS credentials are handled exclusively by boto3. Examples -------- >>> with Env(CPL_DEBUG=True, CPL_CURL_VERBOSE=True): ... with fiona.open("zip+https://example.com/a.zip") as col: ... print(col.meta) For access to secured cloud resources, a Fiona Session may be passed to the constructor. >>> import boto3 >>> from fiona.session import AWSSession >>> boto3_session = boto3.Session(...) >>> with Env(AWSSession(boto3_session)): ... with fiona.open("zip+s3://example/a.zip") as col: ... print(col.meta) """ if ('AWS_ACCESS_KEY_ID' in options or 'AWS_SECRET_ACCESS_KEY' in options): raise EnvError( "GDAL's AWS config options can not be directly set. " "AWS credentials are handled exclusively by boto3.") if session: self.session = session else: self.session = DummySession() self.options = options.copy() self.context_options = {}