NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #1734 most downloaded on PyPI
Fast and direct raster I/O for use with NumPy
Last release 4 days ago
30 Sep 2026
Ships unpredictably
gaps range from 8 days to 12 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
13 years old
170 releases · first in 2013
Bug fix: upgrade from deprecated Numpy usage in read() by explicitly converting window offsets to ints (#678, #680).
crs.from_string() raises CRSError
instead of passing silently (#628, #642).rasterio.open() (#650, #665).read() by explicitly
converting window offsets to ints (#678, #680).logger = logging.getLogger(__name__) pattern throughout Rasterio (#649,
#658).drivers() implementation with a new Env class
and more consistent usage of it through the library and command line
interface (#665, #682).One column per quarter.
Bug fix: S3 support was found missing in several of the CLI commands mentioned below. This is corrected in 0.34 and we have the tests to prove it (#63
I played a lot of One-on-One on the computers of the mid-1980s and dedicate this release to the best #33 of all time, Larry Bird.
I played a lot of One-on-One on the computers of the mid-1980s and dedicate this release to the best #33 of all time, Larry Bird.
pip install -U rasterio[s3]. AWS Credentials are handled by boto3 (and botocore) and so can
be provided by environment variables, session arguments, ~/.aws/credentials
file, or EC2 instance metadata. S3 access is enabled in the following CLI
commands: rio-clip, rio-info, rio-insp, rio-bounds, rio-shapes, rio-sample
and may be expanded in future versions. S3 objects are identified on the
command line and in API functions by URIs following the pattern
s3://bucket/object. Extra thanks to Rob Emanuele and Even Rouault for
helping on this one (#551, #610).No changes to the library in this post-release version, but there is a significant change to the distributions on PyPI: to help make Rasterio more com
Breaking change: align rio-warp's --bounds option with rio-merge's: these are in destination CRS units (#541, #545).
read_band() has been replaced by read() throughout
the docs (#537).resolve_inout() function in rasterio.rio.helpers. Commands that take
one or more input files plus an output file should use this helper and force
overwrite either by using a --force-overwrite option or by using the
-o output option, which implicitly forces overwriting (#539, #540).rasterize()'s fill parameter added
(#543).Interleaving enum (#560).matplotlib import errors to a RuntimeWarning (#562).__future__.division *#580).--no-check-invert-proj (#597).rasterio.tools.mask.mask() (#552).rasterio.tool.show()
(#553).warp() and rio-warp (#574).--bounds option with rio-merge's: these
are in destination CRS units (#541, #545).Warn when rasters have no georeferencing and when the default identity transform will be applied by GDAL (#524, #527).
Added window utilities: get_data_window(), window_union(), window_intersection(), windows_intersect() (#496, #506).
rasterio.features tests (#522).Fill masked arrays in rio-calc when using Numpy 1.10.x as well as with 1.8.x (#500).
profile property. This prevents meaningless block
size parameters from stripped, not tiled, datasets from being used when
creating new datasets (#503).Ensure that tools module is packaged (#489, #490). The rio-merge command was broken in 0.27.0 and is restored to working order in version 0.28.0.
precision keyword argument to index() method (#492).Ensure local uniqueness of the rio-shapes feature ids (#479).
enums.Compression and
enums.Interleaving); the values of the enums correspond to GDAL terms
(i.e, "DEFLATE") and the names are what surface in the CLI ("deflate").None (#485).Add dependency on click-plugins, a new project that takes over the plugin duties formerly assigned to cligj (#426).
New rio-warp command (#264, #404).
--co) to many commands (#379, #403).--like option (#387, #399).Improve safety of the sample() generator (#378).
0.24.0 (2015-05-27) -------------------#408).
rasterio.open() in read mode is an
existing file, turning on some non-file formats (#364).window_bounds() method to dataset objects (#366).Nothing published for this version
Redesign CLI as dynamically loaded entry points (#346).
Return masked arrays in the boundless read case (#338).
Masking bug fix for rio-shapes (#335).
Switch read() default to masked=False (#300, #317).
Add missing blockxsize, blockysize, tiled keywords (#301).
Deprecation of read_mask() and read_band (#284).
Nothing published for this version
Properly handle metadata tags with values that contain "=" (#254).
Nothing published for this version
Nothing published for this version
Fix incorrect use of output.dtype (#196).
Support for more data types in sieve() (#159).
out keyword arg supersedes output in rasterio.features (#179).Allow update of nodata values in r+ mode (#167).
Add --mask and --bidx options to rio shapes (#150).
Add enum34 to requirements (#149).
Read unprojected images with less flailing (#117).
Add single value options to rio info command (#139, #143).
Add missing rasterio.rio package (#135).
Add --mercator option for rio bounds (#126).
Add --bbox option for rio bounds (#124).
Accept CRS strings like 'EPSG:3857' (#116).
Numpy.require C-contiguous data when writing bands (#108).
Add rio transform command (#112).
Add meta and tag dumping options to rio_insp.
Add rasterize(), the inverse of shapes() (#45, #62).
- Fix sieve() bug (#57).
Add rio_insp, deprecation warning in rasterio.insp (#50, #52).
Source distribution bug fix (#48).
Add a Band object, providing a shortcut for shapes() and sieve() functions (#34).
Add support for dataset and band tags (#32).
Add mask option to shapes() function (#26).
Access to shapes of raster features via GDALPolygonize (#20).
Allow nodata to be set when opening file to write (#17).
Add bounds attribute and ul() method (#11).
Decimation or replication of pixels on read and write (#3).
Reading and writing of GeoTIFFs, with examples.
Your coding agent can read these notes before it upgrades. Set up the MCP server →