Metadata-Version: 2.2
Name: tsercom
Version: 0.0.1a5
Summary: Utilities for communicating time-series data across a network using gRPC.
Author: Ryan Keane
License: Apache-2.0
Project-URL: Homepage, https://github.com/rwkeane/tsercom
Project-URL: Documentation, https://github.com/rwkeane/tsercom
Project-URL: Repository, https://github.com/rwkeane/tsercom
Project-URL: Issues, https://github.com/rwkeane/tsercom/issues
Keywords: ts,time,time series,communication,rpc,serialization,transport,channel,grpc
Classifier: Development Status :: 3 - Alpha
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: License :: OSI Approved :: Apache Software License
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: torch>=2.0.0
Requires-Dist: grpcio~=1.62.0
Requires-Dist: grpcio-status~=1.62.0
Requires-Dist: grpcio-tools~=1.62.0
Requires-Dist: ntplib>=0.4.0
Requires-Dist: zeroconf>=0.135.0
Requires-Dist: psutil>=5.9.0
Requires-Dist: mypy-protobuf
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Requires-Dist: pre-commit; extra == "dev"

# tsercom
This library provides utilities for transmitting time-series data across a 
network, from client to server and back again (if needed) using gRPC.

## WARNING: This library is still in alpha version. It works for my project use case, but has not yet been fully tested with unit tests. Use at your own risk!

This library operates on the principle that many data science libraries use a
"blocking" model, in that calls are made, and then the thread sits and waits for
a response to be available, while networking calls are expected to be 
high-performance and minimal overhead, so these operations should be isolated
from one-another on different threads. At the same time, the user should not
need to worry about the fact that different threads are being used, and can
instead just look for new data as needed, without worrying about the underlying
network connection.

Specifically, this library supports the following:

- Creation of both synchronous and asynchronous gRPC Connections, and utilities
for maintaining these connections.
- Reconnections upon failure.
- Time synchronization between client and server instances using NTP, as well as
utilities to make use of this synchronization.
- Identities for clients, as assigned by servers, and utlities to 
Time Series Communication Utilities for Data Science Applications
- Utilities for serializing and deserializing common types to and from
protobufs (for use with gRPC), as well as the proto files which must be imported
in a gRPC Service definition to use these instances.
- Threading utilities necessary to synchronize between a "main" thread and other
"utility" threads.

## Dependencies
_NOTE_: If the gRPC dependency here gets out-of-date, it is a 2 minute fix to update it! Just check out the repo, run `scripts/generate_protos.py`, and put up a pull request!
