diff options
| author | Daniel Schadt <kingdread@gmx.de> | 2026-08-17 20:29:02 +0200 |
|---|---|---|
| committer | Daniel Schadt <kingdread@gmx.de> | 2026-08-17 20:29:02 +0200 |
| commit | 0eece020318bc9a0223dd4d3bac6b29949146699 (patch) | |
| tree | ae9c15922ebaf08005661ff310af898ac1347295 /hittekaart-py | |
| parent | 9a576a8d3a8cb1d143be0ade0310f71b490cacb9 (diff) | |
| parent | 99db2d1e499c3ca0b113e50ddd46f46f52c9e28b (diff) | |
| download | hittekaart-0eece020318bc9a0223dd4d3bac6b29949146699.tar.gz hittekaart-0eece020318bc9a0223dd4d3bac6b29949146699.tar.bz2 hittekaart-0eece020318bc9a0223dd4d3bac6b29949146699.zip | |
Merge branch 'mbtiles-desc'
Diffstat (limited to 'hittekaart-py')
| -rw-r--r-- | hittekaart-py/hittekaart_py/__pycache__/__init__.cpython-314.pyc | bin | 0 -> 207 bytes | |||
| -rw-r--r-- | hittekaart-py/hittekaart_py/hittekaart_py.pyi | 2 | ||||
| -rw-r--r-- | hittekaart-py/src/lib.rs | 18 | ||||
| -rw-r--r-- | hittekaart-py/tests/test_api.py | 71 |
4 files changed, 83 insertions, 8 deletions
diff --git a/hittekaart-py/hittekaart_py/__pycache__/__init__.cpython-314.pyc b/hittekaart-py/hittekaart_py/__pycache__/__init__.cpython-314.pyc Binary files differnew file mode 100644 index 0000000..11caa7e --- /dev/null +++ b/hittekaart-py/hittekaart_py/__pycache__/__init__.cpython-314.pyc diff --git a/hittekaart-py/hittekaart_py/hittekaart_py.pyi b/hittekaart-py/hittekaart_py/hittekaart_py.pyi index b3d110c..00ed13c 100644 --- a/hittekaart-py/hittekaart_py/hittekaart_py.pyi +++ b/hittekaart-py/hittekaart_py/hittekaart_py.pyi @@ -17,7 +17,7 @@ class Storage: def OsmAnd(path: bytes) -> "Storage": ... @staticmethod - def MbTiles(path: bytes) -> "Storage": ... + def MbTiles(path: bytes, name: str | None, description: str | None) -> "Storage": ... class HeatmapRenderer: diff --git a/hittekaart-py/src/lib.rs b/hittekaart-py/src/lib.rs index b93d9d6..3a9b3ed 100644 --- a/hittekaart-py/src/lib.rs +++ b/hittekaart-py/src/lib.rs @@ -88,7 +88,7 @@ impl Track { enum StorageType { Folder(PathBuf), OsmAnd(PathBuf), - MbTiles(PathBuf), + MbTiles(PathBuf, Option<String>, Option<String>), } /// Represents a storage target. @@ -125,17 +125,17 @@ impl Storage { } #[staticmethod] - #[pyo3(name = "MbTiles")] - fn mbtiles(path: &[u8]) -> Self { + #[pyo3(name = "MbTiles", signature = (path, name = None, description = None))] + fn mbtiles(path: &[u8], name: Option<String>, description: Option<String>) -> Self { let path = OsStr::from_bytes(path); - Storage(StorageType::MbTiles(path.into())) + Storage(StorageType::MbTiles(path.into(), name, description)) } fn __repr__(&self) -> String { match self.0 { StorageType::Folder(ref path) => format!("<Storage.Folder path='{}'>", path.display()), StorageType::OsmAnd(ref path) => format!("<Storage.OsmAnd path='{}'>", path.display()), - StorageType::MbTiles(ref path) => format!("<Storage.MbTiles path='{}'>", path.display()), + StorageType::MbTiles(ref path, ..) => format!("<Storage.MbTiles path='{}'>", path.display()), } } } @@ -152,9 +152,13 @@ impl Storage { .map_err(|e| err_to_py(&e))?; Ok(Box::new(storage)) } - StorageType::MbTiles(ref path) => { - let storage = hittekaart::storage::MbTiles::open(path.clone()) + StorageType::MbTiles(ref path, ref name, ref desc) => { + let mut storage = hittekaart::storage::MbTiles::open(path.clone()) .map_err(|e| err_to_py(&e))?; + if let Some(n) = name { + storage = storage.with_name(n.clone()); + } + storage = storage.with_description(desc.clone()); Ok(Box::new(storage)) } } diff --git a/hittekaart-py/tests/test_api.py b/hittekaart-py/tests/test_api.py new file mode 100644 index 0000000..1ea51c2 --- /dev/null +++ b/hittekaart-py/tests/test_api.py @@ -0,0 +1,71 @@ +from hittekaart_py import ( + Track, HeatmapRenderer, MarktileRenderer, TilehuntRenderer, Settings, Storage, generate +) + + +def tracks(): + return [ + Track.from_file(b"../test-assets/Synthetic_BRouter_1.gpx.gz", "gzip"), + ] + + +def storage(): + return Storage.MbTiles(b":memory:", "heat", "mappy") + + +def test_track_from_file(): + track = Track.from_file(b"../test-assets/Synthetic_BRouter_1.gpx.gz", "gzip") + assert track is not None + + +def test_track_from_coordinates(): + track = Track.from_coordinates([(1.0, 2.0), (3.0, 4.0)]) + assert track is not None + + +def test_storage_folder(): + storage = Storage.Folder(b"/tmp") + assert storage is not None + + +def test_storage_osmand(): + storage = Storage.OsmAnd(b":memory:") + assert storage is not None + + +def test_storage_mbtiles(): + storage = Storage.MbTiles(b":memory:") + assert storage is not None + + storage = Storage.MbTiles(b":memory:", "Heatmap") + assert storage is not None + + storage = Storage.MbTiles(b":memory:", "Heatmap", "This is my heatmap") + assert storage is not None + + +def test_generate_heatmap(): + generate( + Settings(), + tracks(), + HeatmapRenderer(), + storage(), + ) + + +def test_generate_marktile(): + generate( + Settings(), + tracks(), + MarktileRenderer(), + storage(), + ) + + +def test_generate_tilehunt(): + generate( + Settings(), + tracks(), + TilehuntRenderer(10), + storage(), + ) |
