def env(ctx, key): """Print information about the Fiona environment: available formats, etc. """ stdout = click.get_text_stream('stdout') with ctx.obj['env'] as env: if key == 'formats': for k, v in sorted(fiona.supported_drivers.items()): modes = ', '.join("'" + m + "'" for m in v) stdout.write("%s (modes %s)\n" % (k, modes)) stdout.write('\n') elif key == 'credentials': click.echo(json.dumps(env.session.credentials)) elif key == 'gdal_data': click.echo(os.environ.get('GDAL_DATA') or GDALDataFinder().search()) elif key == 'proj_data': click.echo(os.environ.get('PROJ_LIB') or PROJDataFinder().search())
# See https://github.com/mapbox/rasterio/issues/1631. elif GDALDataFinder().find_file("header.dxf"): log.debug("GDAL data files are available at built-in paths.") else: path = GDALDataFinder().search() if path: set_gdal_config("GDAL_DATA", path) log.debug("GDAL data found in other locations: path=%r.", path) if "PROJ_LIB" in os.environ: path = os.environ["PROJ_LIB"] set_proj_data_search_path(path) elif PROJDataFinder().search_wheel(): path = PROJDataFinder().search_wheel() log.debug("PROJ data found in package: path=%r.", path) set_proj_data_search_path(path) # See https://github.com/mapbox/rasterio/issues/1631. elif PROJDataFinder().has_data(): log.debug("PROJ data files are available at built-in paths.") else: path = PROJDataFinder().search() if path: log.debug("PROJ data found in other locations: path=%r.", path) set_proj_data_search_path(path)
def test_search_wheel_proj_data(mock_wheel): """Find GDAL data in a wheel""" finder = PROJDataFinder() assert finder.search_wheel(str(mock_wheel.join("_env.py"))) == str(mock_wheel.join("proj_data"))
def test_search_proj_data_fhs(mock_fhs): finder = PROJDataFinder() assert finder.search(str(mock_fhs)) == str(mock_fhs.join("share").join("proj"))
def test_search_wheel_proj_data_failure(tmpdir): """Fail to find GDAL data in a non-wheel""" finder = PROJDataFinder() assert not finder.search_wheel(str(tmpdir))
def test_search_proj_data_wheel(mock_wheel): finder = PROJDataFinder() assert finder.search(str(mock_wheel.join("_env.py"))) == str(mock_wheel.join("proj_data"))
def test_search_prefix_proj_data(mock_fhs): """Find GDAL data under prefix""" finder = PROJDataFinder() assert finder.search_prefix(str(mock_fhs)) == str(mock_fhs.join("share").join("proj"))
def test_search_prefix_proj_data_failure(tmpdir): """Fail to find GDAL data in a bogus prefix""" finder = PROJDataFinder() assert not finder.search_prefix(str(tmpdir))
return decorator # Patch the environment if needed, such as in the installed wheel case. if 'GDAL_DATA' not in os.environ: # See https://github.com/mapbox/rasterio/issues/1631. if GDALDataFinder().find_file("header.dxf"): log.debug("GDAL data files are available at built-in paths") else: path = GDALDataFinder().search() if path: os.environ['GDAL_DATA'] = path log.debug("GDAL_DATA not found in environment, set to %r.", path) if 'PROJ_LIB' not in os.environ: # See https://github.com/mapbox/rasterio/issues/1631. if PROJDataFinder().has_data(): log.debug("PROJ data files are available at built-in paths") else: path = PROJDataFinder().search() if path: os.environ['PROJ_LIB'] = path log.debug("PROJ data not found in environment, set to %r.", path)
def test_proj_data_wheel(): """Get GDAL data path from a wheel""" assert PROJDataFinder().search() == os.path.join( os.path.dirname(fiona.__file__), 'proj_data')