All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
- set proper default 'osc.gz' for prefixes on replication servers
- add documentation for writing custom objects and replication module
- correctly package py.typed file
- typing: correctly report inheritance of SimpleWriter and NodeLocationsForWays
- support for Python 3.13
- iterative processing of OSM files (see FileProcessor)
- new
flush()
callback for handlers - FileBuffer for reading from a Python buffer instead of a file
- bit operators for entity bit enum
- filter mode for handlers (return False to stop processing)
- various C++-implementations of filters (for tags, keys, ids, etc.)
- convenience functions to determine object types
- binary wheels for MAcOS and Intel ARM architecture
- haversine functions for two point
- direct access to lat/lon for nodes
- expose osmium's IdSet
- new IdTracker for efficient tracking of dependent objects
- new writers for adding forward and backward references to output
- new parameter for server file type for pyosmium_get_updates
- new filter to add
__geo_interface__
attribute
- consistently use namespaces everywhere
- deprecation warnings around utc_now (thanks @mtmail)
- SimpleHandler is now a Python class
- make NodeLocationForWays a generic BaseHandler
apply()
and MergeInputReader can take an arbitrary number of handlers- accept Python class as handler, no inheritance from SimpleHandler necessary
- new minimum requirements: pybind 2.7, Python 3.7, C++17 compatible compiler, cmake 3.8
- AreaManager is now part of the Python interface
- consistently allow str, Path, File and FileBuffer, where OSM files are expected
- objects stay alive through handler chain allowing to carry over extra attributes
- switch SimpleWriter to use keyword arguments
- make Reader and SimpleWriter context managers
- new overwrite parameter for writers
- remove GIL release, only slows down processing
- move documentation of C++ interface into pyi files
- complete rewrite of documentation using mkdocs
- update pybind to 2.13.6
- use maximum parallelization when building (thanks @Mathiasdm)
- move build configuration to pyproject.toml as far as possible
- transparently retry download on transient HTTP errors
- catch non-200 status for HTTP responses
- update to pybind 2.11.1
- update to libosmium 2.20.0
- update to pybind 2.10.3
- update to libosmium 2.19.0
- change minimum required version of Cmake to 3.0
- complete internal rewrite of the bindings for OSM data types
- invalid buffers are now checked on access time, no more reference count checks on leaving the handler callback
- type annotations for the public interface
- new
ReplicationServer.set_request_parameter()
function to specify additional parameters to give torequests.get()
- writer now rolls back data buffer after exceptions (fixes #212)
- off-by-one error in computation of change ID from a start date
- socket timeout in pyosmium-get-changes/pyosmium-up-to-date was ignored falling back to waiting forever on requests
- use format strings instead of
format()
where possible - pyosmium-get-changes now prints an error message when there is a HTTP error during download
- overwriting
ReplicationServer.open_url()
is no longer recommended, use newReplicationServer.set_request_parameter()
function instead - cookies for pyosmium-get-changes/pyosmium-up-to-date are now set via request parameters, removing the last use-case where urllib was used
- update bundled pybind11 to 2.10.1
- allow building docs from built sources in PYTHONPATH again
- finding the build directory when newer versions of setuptools are used
- improve error message when writing to a writer that is already closed
- update to pybind 2.10.0
- drop support for Python 3.5
add_box()
for osmium.osm.Header for setting the bbox in a OSM file- SimpleWriter now can receive a customized header in its constructor
- SimpleWriter now accepts a list of RelationMember in then member parameter
of
add_relation()
- more tests for replication server and osm base types
- AttributeError when using pyosmium-get-changes with cookies (thanks @wiktorn)
- avoid memory leak in
apply_buffer()
functions in SimpleHandler and MergeInputReader - maek sure close() is called for requests.Session and requests.Response
- documentation for
open_url()
now reflects its new behaviour - build issue with raw ssize_t on Windows since Python 3.10
- ReplicationServer is now a context manager
- allow any string-like object for
apply_file()
- switch tests from nose to pytest
- use Python libraries instead of wget for downloading contrib packages
- update to libosmium 2.18.0 (requires now C++14)
- update to pybind11 2.9.1
- merge change files correctly so that latest applied object comes first
- switch to requests library for downloading files (thanks @jocelynj)
- update to libosmium 2.17.0
- update to pybind11 2.7.1
- up-to-date: check if any updates are available before starting download
- AttributeError when writing replication headers and network is unreachable
- update to pybind11 2.6.2
- package pypi source wheel with correct libosmium version
- support for lz4 compression (compiled in when library is found)
- update to libosmium 2.16.0
- update to pybind11 2.6.1
- improved help messages for update tools
- update to pybind11 2.6
- pyosmium-up-to-date: fix missing flag when applying changes to history files
- smaller linting and documentation issues
- allow to set user in mutable object
- use current libosmium and protozero
- avoid leaking Python handle in timestamp conversion
- socket timeouts for pyosmium-get-changes and pyosmium-up-to-date
- pyosmium-up-to-date: allow writing the diff to stdout (requires format option)
- remove support for Python2 and Python 3.3
- pyosmium-get-changes: allow to pipe updates to stdout
- doc: add more information about file updates
- check for dangling references in callbacks
- use a custom HTTP user agent when requesting diffs
- use current libosmium
- replication: retry downloading truncated state files
make_simple_handler()
convenience wrapper- iterator for Tag type (for allowing to convert TagLists into python dicts)
- tests for examples
- tests for MP building and MergeInputReader
- use current libosmium and protozero
- remove spurious 404 error message when downloading OSM diffs
- NodeLocationsForWays (accidentally removed in 2.15.0)
- more tests
- GIL lock now released while apply() is in C++ code
- unicode output of tag str() representation for python 2
- handling of tempfile in test for pyosmium_get_changes
- documentation for ends_have_same_location()
- tests for pyosmium-get-changes
- do not read data when checking for replication headers
- fix typo in sequence file reading of pyosmium-get-changes
- more tests
- replace boost-python with header only pybind11 library
- switch to cmake for configuration (called through setup.py)
- default node cache changed to flex_mem
- allow to add arbitrary headers when updating files
- replication: custom URL opener
- cookie support for pyosmium-get-changes and pyosmium-up-to-date
- pyosmium-up-to-date declares itself as 'generator'
- bug when reading sequence ID files in pyosmium-get-changes
- fix rounding error in tests
- expose Coordinates struct and mercator projection functions
- use current libosmium and protozero
- fix build script to find libboost-python on Darwin
- use current libosmium
- install protozero separately from libosmium
- installation documentation updated
- tests for WKB factories and replication server
- str() and repr() implementations for all classes in osmium.osm
- when applying diffs to a handler, a location cache may be used
- use new MultipolygonManager for building areas
- allow to access nodes in a NodeRefList with negative index
- use current libosmium
- pyosmium-get-changes exits with an error when no start sequence can be found
- make apply_reader_simple a template again
- minor fixes to documentation
- links to appropriate mailing lists and issue trackers
- handler functions not called when using replication service (#38)
- pyosmium-get-updates: bad variable name
- build support for Windows
- various tests
- python sources moved into src/ directory
- use current libosmium
- area.inner_rings() now takes an outer ring as parameter and returns an iterator
- force use of C++ compiler
- output type of index.map_types() function
- write buffers growing unbound
- geometry factories for WKT and GeoJSON
- man pages for new tools
- get() function for TagList
- tests for TagList
- example code simplified
- use current libosmium
- area creator always called (#32)
- various typos
- TagList [] accessor properly throws KeyError on missing element
- WriteHandler for writing data directly to a file
- tools for downloading changes and updating a OSM files from these changes
- get/set functions for io.Header
- use current libosmium
- various typos in documentation
- Use current libosmium
- support for sdist creation (now published via Pypi)
- custom locations for libosmium and boost can be set via the
environment variables
LIBOSMIUM_PREFIX
andBOOST_PREFIX
. - export bounding box from osmium::io::Header
- Use libosmium 2.10.2
- various typos in documentation
- crash in replication handler on incomplete state files
- Use current libosmium
- Use current libosmium
- Works with different libosmium versions.
apply_buffer()
for handling in-memory data- MergeInputReader for reading and sorting multiple input files
- Functions using replication change files to update an OSM file or database.
- Use current libosmium
- Experimental write support, see documentation
- Multiple examples for writing data
- Use current libosmium
- Improve timestamp to datetime conversion
- Simplified package structure that uses the compiled libs directly
- Use current libosmium
- README updates
- Use current libosmium
- Use current libosmium
- Use current libosmium
- Use current libosmium
- Exception not caught in test.