Skip to main content

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.

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)

Source distribution for motion-lake-client 0.0.15
File Size Uploaded
motion_lake_client-0.0.15.tar.gz 8.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for motion-lake-client 0.0.15
File Interpreter ABI Platform
motion_lake_client-0.0.15-py3-none-any.whl Python 3 none any Details

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

Release history Release notifications | RSS feed

This release

0.0.15 This release

2 release files

0.0.14

2 release files

0.0.13

2 release files

0.0.12

2 release files

0.0.11

2 release files

0.0.10

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page