Mapnik

Latest version: v0.1

Safety actively analyzes 681866 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 3 of 5

3.0.1

Released: July 27th, 2015

(Packaged from 28f6f4d)

Summary

The 3.0.1 fixes a few bugs in geojson parsing, svg parsing, and rendering. It also avoids a potential hang when using `line-geometry-transform` and includes a speedup for text rendering compared to v3.0.0. It is fully back compatible with v3.0.0 and everyone is encouraged to upgrade.

- Fixed text placement performance after 2949 (2963)
- Fixed rendering behavior for `text-minimum-path-length` which regressed in 3.0.0 (2990)
- Fixed handling of `xml:id` in SVG parsing (2989)
- Fixed handling of out of range `rx` and `ry` in SVG `rect` (2991)
- Fixed reporting of envelope from `mapnik::memory_datasource` when new features are added (2985)
- Fixed parsing of GeoJSON when unknown properties encountered at `FeatureCollection` level (2983)
- Fixed parsing of GeoJSON when properties contained `{}` (2964)
- Fixed potential hang due to invalid use of `line-geometry-transform` (6d6cb15)
- Moved unmaintained plugins out of core: `osm`, `occi`, and `rasterlite` (2980)

3.0.0

Released: July 7th, 2015

(Packaged from e6891a0)

Summary

The 3.0 release is a major milestone for Mapnik and includes many performance and design improvements. The is the first release to provide text shaping using the harfbuzz library. This harfbuzz support unlocks improved rendering and layer for many new languages, particularly SE Asian scripts. The internal storage for working with images and geometries has been made more flexible, faster, and strongly typed. The python bindings that were previously bundled with Mapnik have now been moved to <https://github.com/mapnik/python-mapnik> and are versioned independently.

Notice

- Mapnik 3.0.0 requires a compiler capable of `std=c++11`.
- It is highly recommended you use the `clang++` compiler on both OS X and Linux since it has robust c++11 support lower memory requirements.

Major Changes

- Improved support for International Text (now uses harfbuzz library for text shaping)

- Uses latest C++11 features for better performance (especially map loading)

- Expressions everywhere: all symbolizer properties can now be data driven expressions (with the exception of `face-name` and `fontset-name` on the `TextSymbolizer`).

- Rewritten geometry storage based on `std::vector` (2739)
- Separate storage of polygon exterior rings and interior rings to allow for more robust clipping of parts.
- Enforces consistent winding order per OGC spec (exterior rings are CCW, interior CW)
- Reduced memory consumption for layers with many points
- Ability to adapt Mapnik geometries to boost::geometry operations (in a zero-copy way)
- Ability to have i/o grammars for json/wkt work on geometries rather than paths for better efficiency and simpler code

- Added new and experimental `dot` symbolizer for fast rendering of points

- New functions supported in expressions: `exp`, `sin`, `cos`, `tan`, `atan`, `abs`.

- New constants supported in expressions: `PI`, `DEG_TO_RAD`, `RAD_TO_DEG`

- Added support for a variety of different grayscale images:
- `mapnik.imageType.null`
- `mapnik.imageType.rgba8`
- `mapnik.imageType.gray8`
- `mapnik.imageType.gray8s`
- `mapnik.imageType.gray16`
- `mapnik.imageType.gray16s`
- `mapnik.imageType.gray32`
- `mapnik.imageType.gray32s`
- `mapnik.imageType.gray32f`
- `mapnik.imageType.gray64`
- `mapnik.imageType.gray64s`
- `mapnik.imageType.gray64f`

- Pattern symbolizers now support SVG input and applying transformations on them dynamically

- Experimental / interface may change: `variables` can be passed to renderer and evaluated in expressions

- Supports being built with clang++ using `-fvisibility=hidden -flto` for smaller binaries

- Supports being built with Visual Studio 2014 CTP 3

- Shield icons are now pixel snapped for crisp rendering

- `MarkersSymbolizer` now supports `avoid-edges`, `offset`, `geometry-transform`, `simplify` for `line` placement and two new `placement` options called `vertex-last` and `vertex-first` to place a single marker at the end or beginning of a path. Also `clip` is now respected when rendering markers on a LineString
geometry.

- `TextSymbolizer` now supports `smooth`, `simplify`, `halo-opacity`, `halo-comp-op`, and `halo-transform`

- `ShieldSymbolizer` now supports `smooth`, `simplify`, `halo-opacity`, `halo-comp-op`, and `halo-transform`

- The `text-transform` property of `TextSymbolizer` now supports `reverse` value to flip direction of text.

- The `TextSymbolizer` now supports `font-feature-settings` for advanced control over Opentype font rendering (https://developer.mozilla.org/en-US/docs/Web/CSS/font-feature-settings)

- New GroupSymbolizer for applying multiple symbolizers in a single layout

- AGG renderer: fixed geometry offsetting to work after smoothing to produce more consistent results (2202)

- AGG renderer: increased `vertex_dist_epsilon` to ensure nearly coincident points are discarded more readily (2196)

- GDAL plugin
- Now keeps datasets open for the lifetime of the datasource (rather than per featureset)
- Added back support for user driven `nodata` on rgb(a) images (2023)
- Allowed nodata to override alpha band if set on rgba images (2023)
- Added `nodata_tolerance` option to set nearby pixels transparent (has similar effect to the `nearblack` program) (2023)
- At process exit Mapnik core no longer calls `dlclose` on gdal.input (2716)

- TopoJSON plugin
- Now supporting optional `bbox` property on layer
- Fixed support for reporting correct `feature.id()`
- Now supports `inline` string for passing data from memory
- Faster parsing via static initialization of grammars
- Fix crash on invalid arc index

- GeoJSON plugin
- Now supporting optional `bbox` property on layer
- Fixed support for reporting correct `feature.id()`
- Now supports `inline` string for passing data from memory
- Faster parsing via static initialization of grammars

- SQLite plugin
- Fixed support for handling all column types

- CSV Plugin
- Added the ability to pass an `extent` in options

- PostGIS plugin
- Added Async support to - https://github.com/mapnik/mapnik/wiki/PostGIS-Async
- Added support for rendering 3D and 4D geometries (previously silently skipped) (44)

- Added support for web fonts: `.woff` format (2113)

- Added missing support for `geometry-transform` in `line-pattern` and `polygon-pattern` symbolizers (2065)

- Dropped support for Sun compiler

- Upgraded unifont to `unifont-6.3.20131020`

- Fixed crash when rendering to cairo context from python (2031)

- Moved `label-position-tolerance` from `unsigned` type to `double`

- Added support for more seamless blurring by rendering to a larger internal image to avoid edge effects (1478)

- Fixed rendering of large shapes at high zoom levels, which might dissapear due to integer overflow. This
bug was previously fixable when geometries were clipped, but would, until now, re-appear if clipping was turned
off for a symbolizer (2000)

- Added single color argument support to `colorize-alpha` to allow colorizing alpha with one color.

- Added `color-to-alpha` `image-filter` to allow for applying alpha in proportion to color similiarity (2023)

- Fixed alpha handling bug with `comp-op:dst-over` (1995)

- Fixed alpha handling bug with building-fill-opacity (2011)

- Optimized mapnik.Path.to_wkb

- Python: added `__geo_interface__` to mapnik.Feature and mapnik.Path (2009)

- Python: Exposed optimized WKTReader for parsing WKT into geometry paths (6bfbb53)

- Optimized expression evaluation of text by avoiding extra copy (1dd1275)

- Added Map level `background-image-comp-op` to control the compositing operation used to blend the
`background-image` onto the `background-color`. Has no meaning if `background-color` or `background-image`
are not set. (1966)

- Added Map level `background-image-opacity` to dynamically set the opacity of the `background-image` (1966)

- Removed `RENDERING_STATS` compile option since it should be replaced with a better solution (1956)

- Added support to experimental `svg_renderer` for grouping layers for inkscape and illustrator (1917)

- Fixed compile of python bindings against Python 3.x

- Optimized SVG loading by improving color parsing speed (1918)

- Fixed startup problem when fonts cannot be read due to lacking permissions (1919)

- Fixed bad behavior when negative image dimensions are requested (1927)

- Fixed handling of `marker-ignore-placement:true` when `marker-placement:line` (1931)

- Fixed handling of svg `opacity` in Cairo renderer (1943)

- Fixed handling of SVG files which contain empty `<g>` (1944)

- Fixed various 32bit test failures

- Fixed compile against icu when by using `U_NAMESPACE_QUALIFIER`

- Fixed missing support for using PathExpression in `marker-file` (1952)

- Added support for `line-pattern-offset` (1991)

- Added support for building on Android (tested with `android-ndk-r9`)

- Added support for compiling with both -ansi (aka -std=c++98) and -std=c++11

- Added support for compiling and linking on OS X against libc++

- Fixed regression in handling `F` type dbf fields, introduced in v2.2.0.

- Added the ability to create a mapnik Feature from a geojson feature with `mapnik.Feature.from_geojson` in python.

- Added to python bindings: `has_tiff`, `has_png`, `has_webp`, `has_proj4`, `has_svg_renderer`, and `has_grid_renderer`

- Made it possible to disable compilation of `grid_renderer` with `./configure GRID_RENDERER=False` (1962)

- Added `premultiplied` property on mapnik::image_32 / mapnik.Image to enable knowledge of premultiplied status of image buffer.

- Added `webp` image encoding and decoding support (1955)

- Added `scale-hsla` image-filter that allows scaling colors in HSL color space. RGB is converted to HSL (hue-saturation-lightness) and then each value (and the original alpha value) is stretched based on the specified scaling values. An example syntax is `scale-hsla(0,1,0,1,0,1,0,1)` which means no change because the full range will be kept (0 for lowest, 1 for highest). Other examples are: 1) `scale-hsla(0,0,0,1,0,1,0,1)` which would force all colors to be red in hue in the same way `scale-hsla(1,1,0,1,0,1,0,1)` would, 2) `scale-hsla(0,1,1,1,0,1,0,1)` which would cause all colors to become fully saturated, 3) `scale-hsla(0,1,1,1,0,1,.5,1)` which would force no colors to be any more transparent than half, and 4) `scale-hsla(0,1,1,1,0,1,0,.5)` which would force all colors to be at least half transparent. (1954)

- The `shapeindex` tool now works correctly with point 3d geometry types

2.2.0

Released June 3rd, 2013

(Packaged from 9231205)

Summary: The 2.2.0 release is primarily a performance and stability release. The code line represents development in the master branch since the release of 2.1.0 in Aug 2012 and therefore includes nearly a year of bug-fixes and optimizations. Nearly 500 new tests have been added bring the total coverage to 925. Shapefile and PostGIS datasources have benefited from numerous stability fixes, 64 bit integer support has been added to support OSM data in the grid renderer and in attribute filtering, and many fixes have landed for higher quality output when using a custom `scale_factor` during rendering. Critical code paths have been optimized include raster rendering, xml map loading, string to number conversion, vector reprojection when using `epsg:4326` and `epsg:3857`, `hextree` encoding, halo rendering, and rendering when using a custom `gamma`. Mapnik 2.2 also compiles faster than previous releases in the 2.x series and drops several unneeded and hard to install dependencies making builds on OS X and Windows easier than any previous release.

- Removed 3 dependencies without loosing any functionality: `ltdl`, `cairomm` and `libsigc++` (1804,806,1681)

- Added 64 bit integer support in expressions, feature ids, and the grid_renderer (1661,1662,1662)

- Added the ability to disable the need for various dependencies: `proj4`, `libpng`, `libtiff`, `libjpeg`

- Added faster reprojection support between `epsg:3857` and `epsg:4326` (1705,1703,1579)

- Added `colorize-alpha` image filter that applies user provided color gradients based on level of alpha.
Accepts one or more colors separated by commas. Each color can be paired with an `offset` value separated
by a space that is either `0-100%` or `0.0-1.0`. An `offset` of `0` is implied and the default. For background
on where this design came from see http://www.w3.org/TR/SVG/pservers.htmlGradientStops. A simple example
of colorizing alpha into a "rainbow" is `colorize-alpha(blue,cyan,lightgreen, yellow, orange, red)`. An example of
using offsets and the variety of supported color encodings is to produce a ramp which sharp contrast between `blue`
and `cyan` is `colorize-alpha(blue 30%, cyan, yellow 0.7 , rgb(0%,80%,0%) 90%)` (1371).

- Fixed concurrency problem when using cursors in postgis plugin (1823,1588)

- Fixed postgres connection pool leaks when using `persist_connection=false` (1764)

- Fixed postgres connection key to respect highest value of `max_size` and `initial_size` for any layer in map (1599)

- Fixed potential crash in wkb parsing when postgis returns null geometry (1843)

- Fixed blurry rendering of image and SVG icons (1316)

- Added detection of invalid srs values when loading xml (646)

- Added support for specifying a base_path as a third, optional argument to load_xml

- Removed muffling of projection errors while rendering (646)

- Improved logging system (https://github.com/mapnik/mapnik/wiki/Logging)

- Added support for reading images from in memory streams (1805)

- Optimized halo rendering. When halo radius is < 1 new method will be used automatically (1781)

- Added `text-halo-rasterizer` property. Set to `fast` for lower quality but faster
halo rendering (1298) which matched new default method when radius is < 1.

- Added support in `shape`, `sqlite`, `geojson`, and `csv` plugin for handling non-latin characters in the paths to file-based resources (1177)

- Fixed rendering of markers when their size is greater than the specified `spacing` value (1487)

- Fixed handling of alpha premultiplication in image scaling (1489)

- Optimized rendering when a style with no symbolizers is encountered (1517)

- Optimized string handling and type conversion by removing `boost::to_lower`, `boost::trim`, and `boost::lexical_cast` usage (1687,1687,1633)

- Optimized alpha preserving `hextree` method for quantization of png images (1629)

- Faster rendering of rasters by reducing memory allocation of temporary buffers (1516)

- Fixed some raster reprojection artifacts (1501)

- Fixed raster alignment when width != height and raster is being scaled (1748,1622)

- Added support for caching rasters for re-use during rendering when styling more than once per layer (1543)

- Improved compile speeds of the code - in some cases by up to 2x and removed need for freetype dependency when building code against mapnik (1688, 1756)

- Removed internal rule cache on `mapnik::Map` c++ object (1723)

- Improved the scaled rendering of various map features when using `scale_factor` > 1 (1280,1100,1273,1792,1291,1344,1279,1624,1767,1766)

- Added C++ api for overriding scale_denominator to enable rendering at fixed scale (1582)

- Added Layer `buffer-size` that can be used to override Map `buffer-size` to avoid
over-fetching of data that does not need to be buffered as much as other layers.
Map level `buffer-size` will be default if layers do not set the option. Renamed a
previously undocumented parameter by the same name that impacted clipping extent and
was not needed (clipping padding should likely be a symbolizer level option) (1566)

- Fixed potential file descriptor leaks in image readers when invalid images were encountered (1783)

- Fixed alpha handling in the `blur` and `invert` image filters (1541)

- Fixed error reporting in the python plugin (1422)

- Added the ability to run tests without installing with `make test-local`

- Reduced library binary size by adding support for `-fvisibility-inlines-hidden` and `-fvisibility=hidden` (1826,1832)

- Added `mapnik::map_request` class, a special object to allow passing mutable map objects to renderer (1737)

- Added the ability to use `boost::hash` on `mapnik::value` types (1729)

- Removed obsolete `geos` plugin (functionality replaced by `csv` plugin) and unmaintained `kismet` plugin (1809,1833)

- Added new `mapnik-config` flags: `--all-flags`, `--defines`, `--git-describe`, `--includes`, `--dep-includes`, `--cxxflags`, `--cxx` (1443)

- Added support for unicode strings as arguments in python bindings (163)

- Added DebugSymbolizer which is able to render the otherwise invisible collision boxes (1366)

- Optimized rendering by reducing overhead of using `gamma` property (1174)

- Fixed rendering artifacts when using `polygon-gamma` or `line-gamma` equal to 0 (761,1763)

- Fixed and optimized the display of excessive precision of some float data in labels (430,1697)

- Removed the `bind` option for datasources (1654)

- Added ability to access style list from map by (name,obj) in python (1725)

- Added `is_solid` method to python mapnik.Image and mapnik.ImageView classes (1728)

- Changed scale_denominator C++ interface to take scale as first argument rather than map.

- Added support for `background-image` in cairo_renderer (1724)

- Fixed building symbolizer rendering to be fully sensitive to alpha (8b66128c892 / bc8ea1c5a7a)

- `<Filter>[attr]</Filter>` now returns false if attr is an empty string (1665)

- `<Filter>[attr]!=null</Filter>` now returns true if attr is not null (1642)

- Added support for DBF `Logical` type: 1614

- Added serialization of `line-offset` to save_map (1562)

- Enabled default input plugin directory and fonts path to be set inherited from environment settings in
python bindings to make it easier to run tests locally (1594). New environment settings are:
- MAPNIK_INPUT_PLUGINS_DIRECTORY
- MAPNIK_FONT_DIRECTORY

- Added support for controlling rendering behavior of markers on multi-geometries `marker-multi-policy` (1555,1573)

- Added alternative PNG/ZLIB implementation (`miniz`) that can be enabled with `e=miniz` (1554)

- Added support for setting zlib `Z_FIXED` strategy with format string: `png:z=fixed`

- Fixed handling of transparency level option in `octree` png encoding (1556)

- Added ability to pass a pre-created collision detector to the cairo renderer (1444)

- Tolerance parameter is now supported for querying datasources at a given point (503/1499)

- Improved detection of newlines in CSV files - now more robust in the face of mixed newline types (1497)

- Allow style level compositing operations to work outside of featureset extents across tiled requests (1477)

- Support for encoding `literal` postgres types as strings 69fb17cd3/1466

- Fixed zoom_all behavior when Map maximum-extent is provided. Previously maximum-extent was used outright but
now the combined layer extents will be again respected: they will be clipped to the maximum-extent if possible
and only when back-projecting fails for all layers will the maximum-extent be used as a fallback (1473)

- Compile time flag called `PLUGIN_LINKING` to allow input datasource plugins to be statically linked with the mapnik library (249)

- Fixed `dasharray` rendering in cairo backend (1740)

- Fixed handling of `opacity` in svg rendering (1744)

- Fixed uneven rendering of markers along lines (1693)

- Fixed handling of extra bytes in some shapefile fields (1605)

- Fixed handling (finally) of null shapes and partially corrupt shapefiles (1630,1621)

- Added ability to re-use `mapnik::image_32` and `mapnik::grid` by exposing a `clear` method (1571)

- Added support for writing RGB (no A) png images by using the format string of `png:t=0` (1559)

- Added experimental support for geometry simplification at symbolizer level (1385)

2.1.0

Released Aug 23, 2012

(Packaged from a25aac8)

- Feature-level compositing (comp-op) for all symbolizers (except building) in AGG and Cairo renderers (1409)

- Style-level compositing (comp-op) (1409) and style-level opacity for AGG renderer (314)

- New experimental framework for image manipulation called `image-filters` to allow things to be done across entire layer canvas like burring (1412)

- Support for recoloring stroke, fill, and opacity of SVG files (1410 / 659)

- Support for data-driven transform expressions (664)

- New support for offsetting geometries / parallel lines in line_symbolizer (927/1269)

- New support for clipping geometries - now default enabled on all symbolizers (1116)

- Framework for chainable geometry transformations (called `vertex_converters`) so that you can do things like clip, smooth, and offset at the same time (927)

- WKT parsing now is more robust and supports multi-geometries (745)

- New support for outputting WKT/WKB/GeoJSON/SVG from mapnik.Geometry objects (1411)

- New experimental python datasource plugin (1337)

- New experimental geojson datasource plugin using in-memory rtree indexing (1413)

- Cairo rendering is now much more similiar to AGG rendering as cairo backend now supports `scale_factor` (1280) and other fixed have landed (1343, 1233, 1344, 1242, 687, 737, 1006, 1071)

- mapnik::Feature objects and datasource plugins now use a `Context` to store attribute schemas to reduce the memory footprint of features (834)

- Added Stroke `miterlimit` (786)

- Python: exposed Map `background_image` (and aliased `background` to `background_color`)

- Python: exposed BuildingSymbolizer

- Support in the CSV plugin for reading JSON encoded geometries (1392)

- Increased grid encoding performance (1315)

- Added support for setting opacity dynamically on images in polygon pattern and markers symbolizers

- Added support for filtering on a features geometry type, either `point`, `linestring`, `polygon`,
or `collection` using the expression keyword of `[mapnik::geometry_type]` (546)

- MarkersSymbolizer width and height moved to expressions (1102)

- PostGIS: Added `simplify_geometries` option - will trigger ST_Simplify on geometries before returning to Mapnik (1179)

- Improved error feedback for invalid values passed to map.query_point

- Fixed rendering of thin svg lines (1129)

- Improved logging/debugging system with release logs and file redirection (https://github.com/mapnik/mapnik/wiki/Runtime-Logging) (937 and partially 986, 467)

- GDAL: allow setting `nodata` value on the fly (will override value if `nodata` is set in data) (1161)

- GDAL: respect `nodata` for paletted/colormapped images (1160)

- PostGIS: Added a new option called `autodetect_key_field` (by default false) that if true will
trigger autodetection of the table primary key allowing for feature.id() to represent
globally unique ids. This option has no effect if the user has not manually supplied the `key_field` option. (804)

- Cairo: Add full rendering support for markers to match AGG renderer functionality (1071)

- Fix Markers rendering so that ellipse height/width units are pixels (previously were unintentionally radii) (1134)

- Added `ignore-placement` attribute to markers-symbolizer (1135)

- Removed PointDatasource - use more robust MemoryDatasource instead (1032)

- SQLite - Added support for !intersects! token in sql subselects (809) allow custom positioning of rtree spatial filter.

- New CSV plugin - reads tabular files - autodetecting geo columns, newlines, and delimiters. Uses in-memory featureset for fast rendering and is not designed for large files (902)

- Fixed bug in shield line placement when dx/dy are used to shift the label relative to the placement point (Matt Amos) (908)

- Added <layer_by_sql> parameter in OGR plugin to select a layer by SQL query (besides name or index): see http://www.gdal.org/ogr/ogr_sql.html for specifications (kunitoki) (472)

- Added support for output maps as tiff files (addresses 967 partially)

- Added support for justify-alignment=auto. This is the new default. (1125)

- Added support for grouped rendering using the `group-by` layer option: https://github.com/mapnik/mapnik/wiki/Grouped-rendering

2.0.2

Released Aug 3, 2012

(Packaged from adb2ec741)

- Fixed handling of empty WKB geometries (1334)

- Fixed naming of `stroke-dashoffset` in save_map (cc3cd5f63f28)

- Fixed support for boost 1.50 (8dea5a5fe239233)

- Fixed TextSymbolizer placement in Cairo backend so it respects avoid-edges and minimum-padding across all renderers (1242)

- Fixed ShieldSymbolizer placement so it respects avoid-edges and minimum-padding across all renderers (1242)

- Rolled back change made in 2.0.1 to marker width/height meaning that Mapnik > 2.0.2 will stick to assuming width/heigh are radii for back compatibility with 2.0.0. The reverted change is seen below as "Fix Markers rendering so that ellipse height/width units are pixels (previously were unintentionally radii)". Issue tracking this is 1163

- XML: Fixed to avoid throwing if a `<Parameters>` element is encountered (which is supported in >= 2.1.x)

- Support for PostGIS 2.0 in the pgsql2sqlite command (e69c44e/47e5b3c)

- Fixed reference counting of Py_None when returning null attributes from Postgres during UTFGrid encoding, which could cause a Fatal Python error: deallocating None (1221)

- Fixed possible breakage registering plugins via python if a custom PREFIX or DESTDIR was used (e.g. macports/homebrew) (1171)

- Fixed memory leak in the case of proj >= 4.8 and a projection initialization error (1173)

2.0.1

Released April 10, 2012

(Packaged from 57347e9106)

- Support for PostGIS 2.0 (956,1083)

- Switched back to "libmapnik" and "import mapnik" rather than "mapnik2" (mapnik2 will still work from python) (941)

- Restored Python 2.5 compatibility (904)

- Fixed `mapnik-config --version` (903)

- Cairo: Add full rendering support for markers to match AGG renderer functionality (1071)

- Fix Markers rendering so that ellipse height/width units are pixels (previously were unintentially radii) (1134)

- Added `ignore-placement` attribute to markers-symbolizer (1135)

- Removed svn_revision info from mapnik-config and python bindings as git is now used

- Removed OGCServer from core - now at https://github.com/mapnik/OGCServer (e7f6267)

- Fixed SQLite open stability across platforms/versions (854)

- Workaround for boost interprocess compile error with recent gcc versions (950,1001,1082)

- Fix possible memory corruption when using `hextree` mode for png color reduction (1087)

- Fixed bug in shield line placement when dx/dy are used to shift the label relative to the placement point (Matt Amos) (908)

- Fix to avoid modifying a feature if an attribute is requested that does not exist (0f5ab18ed)

- Fixed ability to save to jpeg format from python (7387afd9) (896)

Page 3 of 5

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.