In development
- Drop the support for Python 3.8 and add the support for Python 3.12
- Update the minimum required version for
protobuf
- Replace Isort, Flake8 and Black by Ruff in the
.pre-commit-config.yaml
file - Use
prettier
pre-commit tool to prettify Markdown and Yaml files - Use
poetry-check
pre-commit tool to avoid incompatibilities betweenpoetry.lock
andpyproject.toml
- Support previous pre 2.0 encode/decode method signatures with deprecation warning. #129
- Drop Python 2 support
- Usage of
tox
for tests - Add GitHub Actions
- Add pre-commit tool
- Regenerate the vector tile protobuf Python code to solve #113
- Support for Python 3.11
- Delete the
round_fn
argument as Python 2 has been dropped - Use
pyproject.toml
and Poetry to replace thesetup.py
file - Use
geom_type
property instead of deprecatedtype
- Add the possibility to give a coordinates transformer
- Add a
geojson
option. See #107 - Refactor the options using the
per_layer_options
anddefault_options
dictionaries. - Add the option
max_geometry_validate_tries
.
- Add the trove classifiers to the setup.py
- Performance focused release, including:
- Enable Shapely speedups, when available
- Skip inners which cause exceptions
- Union inners in blocks when making valid
- Make benchmark script python3 compatible
- Fix test to support different versions of GEOS
- Include LICENSE & CHANGELOG.md in sdist tarballs
- Refactor geometry encoding logic, including skipping tiny geometries
- Decoded geometry is now geojson-ish dict
- Winding order is now optional
- Add benchmarking around round function and document how to improve performance
- Document performance tip for protobuf encoding with C bindings for Debian
- Generate more valid polygons and multipolygons using pyclipper library for v2 MVT compliance (but we're still not fully v2 compliant for other reasons).
- Handle edge cases where polygon buffer makes a multi-polygon, ensuring inner rings are dropped when subtracting them from the polygon would make it invalid, and not adding multipolygons as array elements for multipolygon constructor.
- Calculate area more properly by using PolyTree result from Clipper.
- Factor out polygon validity code into its own file.
- Improved results from
on_invalid_geometry_make_valid
when the geometry is self-crossing. It was possible for large parts of the geometry to be discarded, and it is now less likely. See PR 66 for more information.
- Custom rounding functions: a
round_fn
parameter was added to theencode
function, which allows control over how floating point coordinates are transformed to integer ones. See PR 55. - Custom validity functions: an
on_invalid_geometry
parameter was added to theencode
function, which is called when invalid geometry is found, or created through coordinate rounding. See PR 46. - Winding order bug fix: See issue 57 and PR 59.
- Performance improvements: including a 2x speedup from using
tuple
s instead ofdict
s for coordinates, see PR 56. - Improvements to PY3 compatibility: See PR 52.
- python3 compatability improvements
- travis integration
- documentation updates
- insert CMD_SEG_END for MultiPolygons
- decode multipolygons correctly
- encode tiles using version 1
- include README.md in distribution to fix install
- python3 updates
- enforce winding order on multipolygons
- update key/val handling
- round floating point values instead of truncating
- add option to quantize bounds
- add option to flip y coord system
- add ability to pass custom extents
- Add compatibility with python 3
- Handle multipolygons as single features
- Use winding order from mapbox vector tile 2.0 spec
- Support custom extents when decoding
- Decode string keys to utf-8
- Allow encoder to accept shapely objects directly
- Handle tiles from java-vector-tile (zero pad binary integers)
- Update README
- Handle unicode properties
- Update id handling behavior
- Explode multipolygons into several features
- #4
- Resolve issue when id is passed in
- More tests
- Removing the option of encoding floats in big endian
- Updated tests
- Bug fix - does not try to load wkt geom if wkb succeeds
- Option to encode floats in little endian
- WKT Support
- Better Documentation
- More tests
- Initial release