MotionLake Client
MotionLake Client is a Python client library for interacting with a storage server designed for a new mobility data lake solution. It provides functionalities to create collections, store data, query data, and retrieve collections.
Installation
You can install the library via pip:
pip install motion-lake-client
Usage
Here's a brief overview of how to use the library:
from motion_lake_client import BaseClient
# Initialize the client with the base URL of the storage server
client = BaseClient(lake_url="http://localhost:8000")
# Create a new collection
client.create_collection("my_collection")
# Store data in a collection
data = b"example_data"
timestamp = int(datetime.now().timestamp())
client.store("my_collection", data, timestamp)
# Query data from a collection
results = client.query(
"my_collection", min_timestamp=0, max_timestamp=timestamp, ascending=True
)
# Retrieve last item from a collection
last_item = client.get_last_item("my_collection")
# Retrieve first item from a collection
first_item = client.get_first_item("my_collection")
# Get items between two timestamps
items_between = client.get_items_between(
"my_collection", min_timestamp=0, max_timestamp=timestamp
)
# Get items before a timestamp
items_before = client.get_items_before("my_collection", timestamp, limit=10)
# Get items after a timestamp
items_after = client.get_items_after("my_collection", timestamp, limit=10)
# Get all collections
collections = client.get_collections()
Documentation
The library provides a series of classes and methods for storing, querying, and managing collections of data items. Each item is timestamped and can be stored in various formats. Below is a detailed usage guide for each component provided by the API.
Prerequisites
Before using the API, make sure you have the requests library installed:
pip install requests
Initializing the Client
To start interacting with the data storage server, instantiate the BaseClient with the URL of the storage server:
from datetime import datetime
from my_module import BaseClient, ContentType
# Initialize the client; replace 'http://localhost:8000' with your server's URL
client = BaseClient('http://localhost:8000')
Creating a Data Collection
Create a new data collection by specifying its name:
response = client.create_collection("weather_data")
print(response)
Storing Data
Store data in a specified collection:
data = b"Example data"
timestamp = datetime.now()
# Store data as raw bytes
response = client.store("weather_data", data, timestamp, ContentType.RAW)
print(response)
You can also specify whether to create the collection if it doesn't exist:
response = client.store("weather_data", data, timestamp, ContentType.JSON, create_collection=True)
print(response)
Querying Data
Retrieve items from a collection based on various criteria:
-
Query by Timestamp Range:
from datetime import datetime, timedelta start_date = datetime.now() - timedelta(days=1) end_date = datetime.now() items = client.get_items_between("weather_data", start_date, end_date) for item in items: print("Timestamp:", item.timestamp, "Data:", item.data)
-
Get Last N Items:
last_items = client.get_last_items("weather_data", 5) for item in last_items: print("Timestamp:", item.timestamp, "Data:", item.data)
-
Get First N Items:
first_items = client.get_first_items("weather_data", 5) for item in first_items: print("Timestamp:", item.timestamp, "Data:", item.data)
-
Get Items but skip data (only load timestamps):
first_items = client.get_first_items("weather_data", 5, skip_data=True) for item in first_items: print("Timestamp:", item.timestamp) assert item.data is None, "Data should be None, otherwise developer made a mistake (aka me)"
Advanced Queries
Perform an advanced SQL-like query (make sure your query string contains the placeholder [table]):
query = "SELECT * FROM [table] WHERE data LIKE '%sample%'"
min_timestamp = datetime(2023, 1, 1)
max_timestamp = datetime(2023, 1, 31)
response = client.advanced_query("weather_data", query, min_timestamp, max_timestamp)
print(response)
Managing Collections
-
List All Collections:
collections = client.get_collections() for collection in collections: print(f"Collection: {collection.name}, Items: {collection.count}")
-
Delete a Collection:
response = client.delete_collection("weather_data") print(response)
Contributing
Contributions are welcome! Please feel free to submit a pull request or open an issue for any bugs or feature requests.
License
All rights reserved.
Metadata
Release files for motion-lake-client 0.0.15
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| motion_lake_client-0.0.15.tar.gz | 8.1 kB | Without provenance | Details for motion_lake_client-0.0.15.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| motion_lake_client-0.0.15-py3-none-any.whl | Python 3 | none | any | Details for motion_lake_client-0.0.15-py3-none-any.whl |
Total release size: 14.9 kB
Release files / motion_lake_client-0.0.15.tar.gz
| Download URL | motion_lake_client-0.0.15.tar.gz |
|---|---|
| Size | 8.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7c11601934bed203cc4ace2600c22fabd3942b60bc05473f34e47f16711c450b
|
|
BLAKE2b-256 checksum How to use checksums |
eec36cd674596cdcd65b4ab394e1d4e807dca33807c1605f9747ce7c85506014
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.12.2
|
Release files / motion_lake_client-0.0.15-py3-none-any.whl
| Download URL | motion_lake_client-0.0.15-py3-none-any.whl |
|---|---|
| Size | 6.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c4a4e40849216709e0fd14bacddb05d3dae1bbe8c5b62238ad8dfaaabb60f4b9
|
|
BLAKE2b-256 checksum How to use checksums |
e044744ca6f3850e2cd7df42966a272e1776271121768cc36c65ca2481a04b36
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.12.2
|
Security for motion-lake-client 0.0.15
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.