def test_auto_find_region(*mocks): with mock.patch('datacube.utils.aws._fetch_text', return_value=None): with pytest.raises(ValueError): auto_find_region() with mock.patch('datacube.utils.aws._fetch_text', return_value=_json(region='TT')): assert auto_find_region() == 'TT'
def activate_rio_env(aws=None, cloud_defaults=False, **kwargs): """ Inject activated rasterio.Env into current thread. This de-activates previously setup environment. :param aws: Dictionary of options for rasterio.session.AWSSession OR 'auto' -- session = rasterio.session.AWSSession() :param cloud_defaults: When True inject settings for reading COGs :param **kwargs: Passed on to rasterio.Env(..) constructor """ session = DummySession() if aws is not None: if not (aws == "auto" or isinstance(aws, dict)): raise ValueError( 'Only support: None|"auto"|{..} for `aws` parameter') aws = {} if aws == "auto" else dict(**aws) region_name = aws.get("region_name", "auto") if region_name == "auto": from datacube.utils.aws import auto_find_region try: aws["region_name"] = auto_find_region() except ValueError as e: # only treat it as error if it was requested by user if "region_name" in aws: raise e session = AWSSession(**aws) opts = (dict( GDAL_DISABLE_READDIR_ON_OPEN="EMPTY_DIR", GDAL_HTTP_MAX_RETRY="10", GDAL_HTTP_RETRY_DELAY="0.5", ) if cloud_defaults else {}) opts.update(**kwargs) state = _state() if state.env is not None: state.env.__exit__(None, None, None) env = rasterio.Env(session=session, **opts) env.__enter__() state.env = env state.epoch = -1 return get_rio_env()
def activate_rio_env(aws=None, cloud_defaults=False, **kwargs): """ Inject activated rasterio.Env into current thread. This de-activates previously setup environment. :param aws: Dictionary of options for rasterio.session.AWSSession OR 'auto' -- session = rasterio.session.AWSSession() :param cloud_defaults: When True inject settings for reading COGs :param **kwargs: Passed on to rasterio.Env(..) constructor """ session = DummySession() if aws is not None: if not (aws == 'auto' or isinstance(aws, dict)): raise ValueError( 'Only support: None|"auto"|{..} for `aws` parameter') aws = {} if aws == 'auto' else dict(**aws) region_name = aws.get('region_name', 'auto') if region_name == 'auto': from datacube.utils.aws import auto_find_region try: aws['region_name'] = auto_find_region() except ValueError as e: # only treat it as error if it was requested by user if 'region_name' in aws: raise e session = AWSSession(**aws) opts = dict( GDAL_DISABLE_READDIR_ON_OPEN='EMPTY_DIR') if cloud_defaults else {} opts.update(**kwargs) deactivate_rio_env() env = rasterio.Env(session=session, **opts) env.__enter__() _local.env = env return get_rio_env()
def test_auto_find_region_2(*mocks): assert auto_find_region() == 'tt-from-botocore'