Blazingly fast spatio-temporal database library
Project description
Spatio: Python Bindings for High-Performance Spatio-Temporal Database
Python bindings for Spatio, a high-performance, embedded spatio-temporal database written in Rust. Spatio brings spatial operations and geographic data management to Python with minimal overhead.
Features
- High Performance: Built on Rust for maximum speed and memory efficiency
- Spatio-Temporal Operations: Geographic point storage with automatic spatial indexing and optional time filters
- Advanced Spatial Queries: Distance calculations (4 metrics), K-nearest-neighbors, polygon queries, bounding box operations
- Trajectory Tracking: Store and query movement data over time
- TTL Support: Automatic data expiration with time-to-live
- Thread-Safe: Concurrent access (atomic operations coming soon for Python)
- Persistent Storage: Optional file-based persistence
Installation
From PyPI (Recommended)
pip install spatio
📦 PyPI Repository: https://pypi.org/project/spatio
From Source
# Clone the repository
git clone https://github.com/pkvartsianyi/spatio.git
cd spatio/py-spatio
# Build and install
pip install maturin
maturin develop
Quick Start
import spatio
# Create an in-memory database
db = spatio.Spatio.memory()
# Store simple key-value data
db.insert(b"user:123", b"John Doe")
user = db.get(b"user:123")
print(f"User: {user.decode()}") # User: John Doe
# Store geographic points with automatic spatial indexing
# Note: Point uses (latitude, longitude) order in Python
nyc = spatio.Point(40.7128, -74.0060)
london = spatio.Point(51.5074, -0.1278)
db.insert_point("cities", nyc, b"New York City")
db.insert_point("cities", london, b"London")
# Find nearby points within 6000km
nearby = db.query_within_radius("cities", nyc, 6000000.0, 10)
for point, city_name, distance in nearby:
print(f"{city_name.decode()}: {distance/1000:.0f}km away")
Core Classes
Spatio
The main database class for all operations.
# Create databases
db = spatio.Spatio.memory() # In-memory
db = spatio.Spatio.open("data.db") # Persistent
db = spatio.Spatio.memory_with_config(config) # With custom config
# Basic operations
db.insert(key, value, options=None)
value = db.get(key)
old_value = db.delete(key)
# Spatial operations
db.insert_point(prefix, point, value, options=None)
nearby = db.query_within_radius(prefix, center, radius_meters, limit)
count = db.count_within_radius(prefix, center, radius_meters)
# Advanced spatial operations
distance = db.distance_between(point1, point2, metric)
nearest = db.knn(prefix, center, k, max_radius, metric)
in_polygon = db.query_within_polygon(prefix, polygon_coords, limit)
# Trajectory operations
db.insert_trajectory(object_id, trajectory, options=None)
path = db.query_trajectory(object_id, start_time, end_time)
Point
Represents a geographic coordinate.
Note: Python uses (latitude, longitude) order for user convenience, but internally converts to geo crate's (longitude, latitude) format.
# Create points (latitude, longitude order in Python)
point = spatio.Point(latitude, longitude)
print(f"Location: {point.lat}, {point.lon}")
# Calculate distance (uses Haversine by default)
distance = point1.distance_to(point2) # Returns meters
DistanceMetric
Distance calculation methods for spatial operations.
# Available metrics
metric = spatio.DistanceMetric("haversine") # Fast spherical (default)
metric = spatio.DistanceMetric("geodesic") # Accurate ellipsoidal (Karney 2013)
metric = spatio.DistanceMetric("rhumb") # Constant bearing (navigation)
metric = spatio.DistanceMetric("euclidean") # Planar coordinates only
SetOptions
Configure data storage options.
# TTL (time-to-live)
opts = spatio.SetOptions.with_ttl(300.0) # 5 minutes
db.insert(b"session", b"data", opts)
# Absolute expiration
import time
future = time.time() + 300
opts = spatio.SetOptions.with_expiration(future)
Config
Database configuration.
# Custom geohash precision (1-12, default: 8)
config = spatio.Config.with_geohash_precision(10) # ~61cm accuracy
db = spatio.Spatio.memory_with_config(config)
# Manual configuration
config = spatio.Config()
config.geohash_precision = 6 # ~610m accuracy
Usage Examples
Basic Spatial Queries
import spatio
db = spatio.Spatio.memory()
# Insert city data
# Note: Python Point uses (latitude, longitude) order
cities = [
(spatio.Point(40.7128, -74.0060), b"New York"),
(spatio.Point(51.5074, -0.1278), b"London"),
(spatio.Point(35.6762, 139.6503), b"Tokyo"),
(spatio.Point(48.8566, 2.3522), b"Paris"),
]
for point, name in cities:
db.insert_point("cities", point, name)
# Find cities within 6000km of New York
nyc = spatio.Point(40.7128, -74.0060)
nearby = db.query_within_radius("cities", nyc, 6000000.0, 10)
print(f"Cities within 6000km of NYC:")
for point, name, distance in nearby:
print(f" {name.decode()}: {distance/1000:.0f}km")
Advanced Spatial Operations
import spatio
db = spatio.Spatio.memory()
# Insert cities
db.insert_point("cities", spatio.Point(40.7128, -74.0060), b"NYC")
db.insert_point("cities", spatio.Point(34.0522, -118.2437), b"LA")
db.insert_point("cities", spatio.Point(41.8781, -87.6298), b"Chicago")
# Distance calculation with multiple metrics
nyc = spatio.Point(40.7128, -74.0060)
la = spatio.Point(34.0522, -118.2437)
metric = spatio.DistanceMetric("haversine")
distance = db.distance_between(nyc, la, metric)
print(f"NYC to LA: {distance / 1000:.2f} km")
# K-nearest-neighbors
query = spatio.Point(40.0, -75.0)
nearest = db.knn("cities", query, 2, 500_000.0, metric)
for point, data, dist in nearest:
print(f"{data.decode()}: {dist / 1000:.2f} km away")
# Polygon queries (coordinates as list of (lon, lat) tuples)
polygon = [
(-90.0, 35.0),
(-70.0, 35.0),
(-70.0, 45.0),
(-90.0, 45.0),
(-90.0, 35.0), # Close the polygon
]
in_region = db.query_within_polygon("cities", polygon, 100)
print(f"Cities in region: {len(in_region)}")
Trajectory Tracking
import spatio
import time
db = spatio.Spatio.memory()
# Create a trajectory (list of (Point, timestamp) tuples)
trajectory = [
(spatio.Point(40.7128, -74.0060), 1640995200), # NYC
(spatio.Point(40.7580, -73.9855), 1640995800), # Central Park
(spatio.Point(40.6892, -74.0445), 1640996400), # Brooklyn
]
# Store trajectory
db.insert_trajectory("vehicle:truck001", trajectory)
# Query trajectory for specific time range
path = db.query_trajectory("vehicle:truck001", 1640995200, 1640996400)
print(f"Vehicle path ({len(path)} points):")
for point, timestamp in path:
print(f" {timestamp}: ({point.lat:.4f}, {point.lon:.4f})")
TTL and Expiration
import spatio
import time
db = spatio.Spatio.memory()
# Data that expires in 5 seconds
opts = spatio.SetOptions.with_ttl(5.0)
db.insert(b"session:temp", b"temporary_data", opts)
print("Immediate:", db.get(b"session:temp")) # b'temporary_data'
time.sleep(6)
print("After TTL:", db.get(b"session:temp")) # None
Sequential Operations
import spatio
db = spatio.Spatio.memory()
# Sequential operations (atomic operations coming in future version)
db.insert(b"user:1", b"Alice")
db.insert(b"user:2", b"Bob")
point = spatio.Point(40.7128, -74.0060)
db.insert_point("locations", point, b"NYC Office")
print("Operations completed")
# Verify all operations were applied
print(db.get(b"user:1")) # b'Alice'
nearby = db.query_within_radius("locations", spatio.Point(40.7128, -74.0060), 1000, 10)
print(len(nearby)) # 1
Bounding Box Queries
import spatio
db = spatio.Spatio.memory()
# Insert points across different regions
# Note: Python Point uses (latitude, longitude) order
points = [
(spatio.Point(40.7128, -74.0060), b"NYC"), # North America
(spatio.Point(51.5074, -0.1278), b"London"), # Europe
(spatio.Point(35.6762, 139.6503), b"Tokyo"), # Asia
]
for point, name in points:
db.insert_point("cities", point, name)
# Find cities in Europe (rough bounding box)
european_cities = db.find_within_bounds(
"cities",
40.0, -10.0, # min_lat, min_lon
60.0, 10.0, # max_lat, max_lon
10 # limit
)
print("European cities:")
for point, name in european_cities:
print(f" {name.decode()} at ({point.lat:.2f}, {point.lon:.2f})")
Performance
Spatio-Py is built for high performance:
- Fast spatial indexing using geohash and R-tree algorithms
- Memory efficient storage with zero-copy operations where possible
- Concurrent access with minimal locking overhead
- Optimized distance calculations using efficient approximation algorithms
Benchmarks
Basic performance characteristics (your results may vary):
- Key-value operations: ~1.6M ops/sec (600ns per operation)
- Spatial insertions: ~1.9M points/sec (530ns per operation)
- Spatial queries: ~225K queries/sec (4.4μs per operation)
- Memory usage: Efficient in-memory storage with spatial indexing
Development
Development Tools
This project uses just as the primary task runner for all development workflows. Just provides a more powerful and expressive alternative to Make.
# Install just (if not already installed)
cargo install just
# See all available commands
just --list
# Common development tasks
just setup # Set up development environment
just build # Build the package
just test # Run tests
just check # Run all quality checks (lint, format, typecheck)
just ci # Run full CI pipeline locally
Building from Source
# Prerequisites
pip install maturin pytest
# Clone and build
git clone https://github.com/pkvartsianyi/spatio.git
cd spatio/py-spatio
# Development build
maturin develop
# Run tests
just test
# Run examples
python examples/basic_usage.py
Building Multi-Platform Wheels
The project uses cibuildwheel to build wheels for all major platforms and Python versions (3.9-3.13):
Supported Platforms:
- Linux:
x86_64,aarch64(manylinux) - macOS:
x86_64(Intel),arm64(Apple Silicon) - Windows:
AMD64
Automated Builds:
- Wheels are automatically built on every release via GitHub Actions
- All wheels are tested before publishing to PyPI
- The workflow generates 40+ wheel files covering all platform/Python combinations
Manual Build:
# Install cibuildwheel
pip install cibuildwheel
# Build wheels for your platform
cibuildwheel --platform linux # or macos, windows
# Build for specific Python versions
CIBW_BUILD="cp311-* cp312-*" cibuildwheel
# Output wheels will be in ./wheelhouse/
For more details, see .github/workflows/wheels.yml
Testing
# Run all tests
just test
# Run with coverage
just coverage
# Run performance tests
just bench
Code Formatting
# Format Python code
just fmt
# Type checking
just typecheck
# Run all checks
just check
API Reference
Database Operations
| Method | Description |
|---|---|
Spatio.memory() |
Create in-memory database |
Spatio.open(path) |
Open/create persistent database |
insert(key, value, options=None) |
Store key-value pair |
get(key) |
Retrieve value by key |
delete(key) |
Remove key and return old value |
| (atomic operations coming soon) | Execute operations atomically |
sync() |
Force sync to disk |
stats() |
Get database statistics |
Spatial Operations
| Method | Description |
|---|---|
insert_point(prefix, point, value, options=None) |
Store geographic point |
query_within_radius(prefix, center, radius_meters, limit) |
Find points within radius |
contains_point(prefix, center, radius_meters) |
Check if any points exist in radius |
count_within_radius(prefix, center, radius_meters) |
Count points within radius |
intersects_bounds(prefix, min_lat, min_lon, max_lat, max_lon) |
Check if any points in bounding box |
find_within_bounds(prefix, min_lat, min_lon, max_lat, max_lon, limit) |
Find points in bounding box |
distance_between(point1, point2, metric) |
Calculate distance with specified metric |
knn(prefix, center, k, max_radius, metric) |
Find K nearest neighbors |
query_within_polygon(prefix, polygon_coords, limit) |
Find points within polygon boundary |
Trajectory Operations
| Method | Description |
|---|---|
insert_trajectory(object_id, trajectory, options=None) |
Store trajectory data |
query_trajectory(object_id, start_time, end_time) |
Query trajectory for time range |
Error Handling
Spatio-Py uses standard Python exceptions:
import spatio
try:
# Invalid coordinates
point = spatio.Point(91.0, 0.0) # Raises ValueError
except ValueError as e:
print(f"Invalid point: {e}")
try:
db = spatio.Spatio.open("/invalid/path/db.spatio")
except RuntimeError as e:
print(f"Database error: {e}")
Project Status
Spatio-Python is in alpha development:
- Core spatial operations implemented
- Advanced spatial features (distance, KNN, polygon queries) powered by georust/geo
- Complete Python API via PyO3 bindings
- TTL and persistence support
- Multi-platform wheels (Linux, macOS, Windows)
- Python 3.8-3.13 support
Current version: 0.1.0-alpha.10
Coordinate Convention
Important: Coordinate ordering differs between Python and Rust for user convenience:
- Python API:
Point(latitude, longitude)- familiar order for most users - Rust/geo:
Point::new(longitude, latitude)- standard (x, y) cartesian convention
The Python bindings automatically convert between these formats, so you don't need to worry about it!
# Python: latitude first (user-friendly)
nyc = spatio.Point(40.7128, -74.0060)
print(nyc.lat) # 40.7128
print(nyc.lon) # -74.0060
Platform Support
Pre-built wheels are available for:
- Linux: x86_64, aarch64 (manylinux)
- macOS: x86_64 (Intel), arm64 (Apple Silicon)
- Windows: AMD64
- Python: 3.9, 3.10, 3.11, 3.12, 3.13
License
This project is licensed under the MIT License - see the LICENSE file for details.
Contributing
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
Spatial Features Documentation
For comprehensive documentation on all spatial operations:
- SPATIAL_FEATURES.md - Complete API reference with examples
- examples/advanced_spatial.rs - Comprehensive Rust demo
Links
- GitHub Repository: https://github.com/pkvartsianyi/spatio
- Documentation: https://github.com/pkvartsianyi/spatio#readme
- PyPI Package: https://pypi.org/project/spatio/
- Issue Tracker: https://github.com/pkvartsianyi/spatio/issues
- georust/geo: https://github.com/georust/geo
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file spatio-0.1.5-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: spatio-0.1.5-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 324.5 kB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bc14e3cb2f9382e070a85b6e34d7e772fa31acbc60445afd5d51fef331d1be8c
|
|
| MD5 |
303d80262df12e30c267c83c4c93f8d4
|
|
| BLAKE2b-256 |
3b31ced9cceb206086ac58df29c8665b657d7f3cc86874a3727de1d611c24534
|
File details
Details for the file spatio-0.1.5-cp313-cp313-manylinux_2_35_x86_64.whl.
File metadata
- Download URL: spatio-0.1.5-cp313-cp313-manylinux_2_35_x86_64.whl
- Upload date:
- Size: 423.1 kB
- Tags: CPython 3.13, manylinux: glibc 2.35+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0d3314ebd8e6e23fb7e6f0869e95f8a0100751a6b3d9f7fb97d697d4a33ab63e
|
|
| MD5 |
d3cbb06b341b49f890a5aeb15eed5152
|
|
| BLAKE2b-256 |
bd0bffb1cf661a5d72b8d15f3bd690bca6c9ee2a5f4a188c25283cf24890606e
|
File details
Details for the file spatio-0.1.5-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: spatio-0.1.5-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 363.5 kB
- Tags: CPython 3.13, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0b4eb654e9dd27ae2bdb00119b25a5fe8bb3c4647e1db505f1de8d07aa8c8994
|
|
| MD5 |
1f36afc3777bf5f1da97cccbc565f7f5
|
|
| BLAKE2b-256 |
8126c72f3fc9e2a01c107ce77ea23aa22c4fb25798f9099907b6610bd74d8cb8
|
File details
Details for the file spatio-0.1.5-cp313-cp313-macosx_10_12_x86_64.whl.
File metadata
- Download URL: spatio-0.1.5-cp313-cp313-macosx_10_12_x86_64.whl
- Upload date:
- Size: 400.6 kB
- Tags: CPython 3.13, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
397b9ef71ff4b4c871d756648c45e48bed3e50048762ca0652a77a9f5db98873
|
|
| MD5 |
a5c6991348dd28aaa5cd0339835ae964
|
|
| BLAKE2b-256 |
b077d39def7367e60a5c07b5179acf1ee31be808a554e835aa9d0448d82e04c5
|
File details
Details for the file spatio-0.1.5-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: spatio-0.1.5-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 324.5 kB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
de79e3bc9d03025a35d878ed51ba916f79a6436bc979140735cca4271321523f
|
|
| MD5 |
f17f2f42dbb23673bd84731996c84f03
|
|
| BLAKE2b-256 |
e32434ff394eb1023a1f2d12eb7977e0226b3a403fcb3e719a0661a56de1597a
|
File details
Details for the file spatio-0.1.5-cp312-cp312-manylinux_2_35_x86_64.whl.
File metadata
- Download URL: spatio-0.1.5-cp312-cp312-manylinux_2_35_x86_64.whl
- Upload date:
- Size: 423.1 kB
- Tags: CPython 3.12, manylinux: glibc 2.35+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
97936a083ba30c6530470efb602bc5acdbb2e12861fc3270e414be7c837cad40
|
|
| MD5 |
f74dd769622bbc22463ee7512bce5a5e
|
|
| BLAKE2b-256 |
d373b834bf13b1d9d258c8d90a9262c18f72940fa45a32ae1128941e1320fef8
|
File details
Details for the file spatio-0.1.5-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: spatio-0.1.5-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 363.5 kB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4103677946db2f4825f1bd136724114163455ea4e62ec9eb837b9ec75b284d1f
|
|
| MD5 |
1a76b6aab496bff0c6de8efb199ffd77
|
|
| BLAKE2b-256 |
e3b3737420300f9846ba5e911faa13b2077e9caee97a86b4cf6387b900cc9a9f
|
File details
Details for the file spatio-0.1.5-cp312-cp312-macosx_10_12_x86_64.whl.
File metadata
- Download URL: spatio-0.1.5-cp312-cp312-macosx_10_12_x86_64.whl
- Upload date:
- Size: 400.6 kB
- Tags: CPython 3.12, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2ff3966eaf7c74312a022f017ed9123cf0d2cd11d08b874c30965c72f386a7a3
|
|
| MD5 |
a788c4e0d7c3d40ccff6c82e703e6d3f
|
|
| BLAKE2b-256 |
582166c444337e6c6908663008a5798ae993f297dd76919c4b3c166b28533444
|
File details
Details for the file spatio-0.1.5-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: spatio-0.1.5-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 325.7 kB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a40de521634c4634709939353242eb1d56b608587b8fd3938dc37201327e4fd2
|
|
| MD5 |
e4632af7a2ed6776fa37e6138eea4ed4
|
|
| BLAKE2b-256 |
762452da1b1328101a07df8ac2279c3ae3384bb1c2365a5c7e6453beb08c75f9
|
File details
Details for the file spatio-0.1.5-cp311-cp311-manylinux_2_35_x86_64.whl.
File metadata
- Download URL: spatio-0.1.5-cp311-cp311-manylinux_2_35_x86_64.whl
- Upload date:
- Size: 423.1 kB
- Tags: CPython 3.11, manylinux: glibc 2.35+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fc717f7852a202ba4e856ca7f3994bce50d28d6e995f1a633b125b53c8495e5a
|
|
| MD5 |
0f5ca810b7ea746924a8d3a13a275a17
|
|
| BLAKE2b-256 |
c13118f6dfb49d67eb0646a2c140f0e76150db1ec368e28e9e9562104230bfbb
|
File details
Details for the file spatio-0.1.5-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: spatio-0.1.5-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 364.3 kB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
839fffc0c9c1357190d1327a8e3de1c86c7405c29c909da4e67037610cf113cf
|
|
| MD5 |
af91b16044f2f1fd098314655425aa4a
|
|
| BLAKE2b-256 |
fbb8fe29372c201a4963731e6273042d06fb6fb0435a017192bbfcd46cbf51d7
|
File details
Details for the file spatio-0.1.5-cp311-cp311-macosx_10_12_x86_64.whl.
File metadata
- Download URL: spatio-0.1.5-cp311-cp311-macosx_10_12_x86_64.whl
- Upload date:
- Size: 400.7 kB
- Tags: CPython 3.11, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
39d69ece9d9359fbe367643791c0979db7bc5d54f633d8f7fbf802ce92cd6421
|
|
| MD5 |
cf3fb4d56b9976d25611942ff0aad251
|
|
| BLAKE2b-256 |
a6e8d7faca09522e07d472a241f06996b7cdcef397839b072706068a65cee9a1
|
File details
Details for the file spatio-0.1.5-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: spatio-0.1.5-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 325.8 kB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b74f43acd34863b45296b741f61fdbb64fca09bf5b507d780aef6ac4241665ac
|
|
| MD5 |
3b153bb6203d7b4d63679438eeb9e770
|
|
| BLAKE2b-256 |
bbf10ad9743926f22d30dcd5424db479b7e12717e87fec3ab3b8f5a4cf1d7c7b
|
File details
Details for the file spatio-0.1.5-cp310-cp310-manylinux_2_35_x86_64.whl.
File metadata
- Download URL: spatio-0.1.5-cp310-cp310-manylinux_2_35_x86_64.whl
- Upload date:
- Size: 423.4 kB
- Tags: CPython 3.10, manylinux: glibc 2.35+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7a3c1a825de6f8b1589918d6c8573f7d029bafffcea9ed799cb06e4c5e081f60
|
|
| MD5 |
f769ad19bccece11ca7fca1092d3a812
|
|
| BLAKE2b-256 |
e17407391d33f109210979ec98ee499c79ce6fb2c96a12a736096a195535b653
|
File details
Details for the file spatio-0.1.5-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: spatio-0.1.5-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 364.3 kB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
67e847b70bfa6d87b96547f965f1ddee0b608adda7c02a4965e445b0f824628e
|
|
| MD5 |
a86a880739f426fd355a0ab568c9c42a
|
|
| BLAKE2b-256 |
72dd2650f91f2924362e459524068a48881245426034d91685d49ac2d362579c
|
File details
Details for the file spatio-0.1.5-cp310-cp310-macosx_10_12_x86_64.whl.
File metadata
- Download URL: spatio-0.1.5-cp310-cp310-macosx_10_12_x86_64.whl
- Upload date:
- Size: 400.8 kB
- Tags: CPython 3.10, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
62262f5fdb78e81fb195b5948c992ea2556adca3f2ffcec1ecc16f597c8b3c29
|
|
| MD5 |
7350a1bf2a50d005c8b201470c3e7397
|
|
| BLAKE2b-256 |
25224a06d9bf3b519b6b54e0d2ad34920a185c5008de29ffd904b70e7920f8bb
|
File details
Details for the file spatio-0.1.5-cp39-cp39-win_amd64.whl.
File metadata
- Download URL: spatio-0.1.5-cp39-cp39-win_amd64.whl
- Upload date:
- Size: 326.0 kB
- Tags: CPython 3.9, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4fb0e7e9ce3ecd2ebd66af5c91464a96ab2415930baf557b8c14a0991c1663ed
|
|
| MD5 |
beca56f7cb767fbc628373d260110eeb
|
|
| BLAKE2b-256 |
aca43a2cace128cc4919f81f6fb0c500e49062e3fa8a05e0a0615482cb8bac4e
|
File details
Details for the file spatio-0.1.5-cp39-cp39-manylinux_2_35_x86_64.whl.
File metadata
- Download URL: spatio-0.1.5-cp39-cp39-manylinux_2_35_x86_64.whl
- Upload date:
- Size: 423.5 kB
- Tags: CPython 3.9, manylinux: glibc 2.35+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
57a2fe1a0708250964f1532747dd785581106b3ea921941ed0aff71a4bff7dc0
|
|
| MD5 |
195e70ba2ea11fa74170aa4106ac8def
|
|
| BLAKE2b-256 |
8ca75fc0405a7ff929bcd06fcf13e5c9b9dd344a8ce78de1c2207e37a71cfc3d
|
File details
Details for the file spatio-0.1.5-cp39-cp39-macosx_11_0_arm64.whl.
File metadata
- Download URL: spatio-0.1.5-cp39-cp39-macosx_11_0_arm64.whl
- Upload date:
- Size: 364.5 kB
- Tags: CPython 3.9, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8f64737f4b236c50f7bfcdec6df938595e5e17548ea784365774f953a40fff77
|
|
| MD5 |
1811449c3938f52eb16e61f5be07ee20
|
|
| BLAKE2b-256 |
0e96dfce04b4c75c90c82625ab28f5529d993032ae82fe9ffefed2d7d6526b6e
|
File details
Details for the file spatio-0.1.5-cp39-cp39-macosx_10_12_x86_64.whl.
File metadata
- Download URL: spatio-0.1.5-cp39-cp39-macosx_10_12_x86_64.whl
- Upload date:
- Size: 401.0 kB
- Tags: CPython 3.9, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
540874bb426b43aae0d3a99667b67732733765d130c228c5a5f81e55d4e3453a
|
|
| MD5 |
d6f69106b2a535f2ac16d16f9988f8bd
|
|
| BLAKE2b-256 |
f63ad307b2810eb6c5161ba5444dc1675c773f16387751f7acb4c224e45a21ac
|