<commit_before>============
Introduction
============

Background
----------

Before Rasterio, there was one way to access the many different kind of raster
data files used in the GIS field with Python: the Python bindings distributed
with the geospatial data abstraction library, `GDAL <http://gdal.org/>`__.
These bindings provide almost no abstraction for GDAL's C API and Python
programs using them read and run like C programs.

Rasterio uses the GDAL C API but is not a "Python binding for GDAL." It is
written for a different mindset.

Philosophy
----------

Rasterio is written with a question in mind: what would it be like to have
a geospatial data abstraction in the Python standard library?. GDAL's raster
data model has unique qualities but is not too special to be expressed using
standard Python language features. Rasterio uses fewer classes specific to GDAL
and more ordinary mappings, sequences, and generators.

Rasterio aspires to keep input/output separate from other operations.
``rasterio.open()`` is the only library function that operates on filenames and
URIs. ``dataset.read()``, ``dataset.write()``, and their mask counterparts are<commit_msg>Remove extra punctuation<commit_after>============
Introduction
============

Background
----------

Before Rasterio, there was one way to access the many different kind of raster
data files used in the GIS field with Python: the Python bindings distributed
with the geospatial data abstraction library, `GDAL <http://gdal.org/>`__.
These bindings provide almost no abstraction for GDAL's C API and Python
programs using them read and run like C programs.

Rasterio uses the GDAL C API but is not a "Python binding for GDAL." It is
written for a different mindset.

Philosophy
----------

Rasterio is written with a question in mind: what would it be like to have
a geospatial data abstraction in the Python standard library? GDAL's raster
data model has unique qualities but is not too special to be expressed using
standard Python language features. Rasterio uses fewer classes specific to GDAL
and more ordinary mappings, sequences, and generators.

Rasterio aspires to keep input/output separate from other operations.
``rasterio.open()`` is the only library function that operates on filenames and
URIs. ``dataset.read()``, ``dataset.write()``, and their mask counterparts are
{'fraction_non_alphanumeric': 0.08460884353741496, 'fraction_numerical': 0.0, 'mean_word_length': 4.523474178403756, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2431010', 'n_tokens_mistral': 604, 'n_tokens_neox': 569, 'n_words': 335}