Metadata-Version: 2.1
Name: moonstream
Version: 0.1.1
Summary: Moonstream: Open source blockchain analytics
Home-page: https://github.com/bugout-dev/moonstream
Author: Moonstream
Author-email: engineering@moonstream.to
License: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Programming Language :: Python
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Topic :: Software Development :: Libraries
Description-Content-Type: text/markdown
Requires-Dist: requests
Requires-Dist: pydantic
Requires-Dist: dataclasses ; python_version == "3.6"
Provides-Extra: aws
Requires-Dist: boto3 ; extra == 'aws'
Provides-Extra: dev
Requires-Dist: black ; extra == 'dev'
Requires-Dist: mypy ; extra == 'dev'
Requires-Dist: isort ; extra == 'dev'
Requires-Dist: wheel ; extra == 'dev'
Requires-Dist: types-requests ; extra == 'dev'
Requires-Dist: types-dataclasses ; extra == 'dev'
Provides-Extra: distribute
Requires-Dist: setuptools ; extra == 'distribute'
Requires-Dist: twine ; extra == 'distribute'
Requires-Dist: wheel ; extra == 'distribute'

# Moonstream Python client

This is the Python client library for the Moonstream API.

## Installation

This library assumes you are using Python 3.6 or greater.

Install using `pip`:

```bash
pip install moonstream
```

## Usage

-   Source environment variable with access token to Moonstream, you can create one on page https://moonstream.to/account/tokens/

```python
access_token = os.environ.get("MOONSTREAM_ACCESS_TOKEN")
```

-   Create an object of Moonstream client and authorize

```python
mc = Moonstream()
mc.authorize(access_token)
```

## create_stream method

Return a stream of event for time range.

**From timestamp to None, from bottom to top**

When `end_time` is not set.

```python
for events in mc.create_stream(
    start_time=1637834400, end_time=None, q="type:ethereum_blockchain"
):
    event_timestamp_list = [e["event_timestamp"] for e in events["events"]]
    print(event_timestamp_list)
```

In this case we will be receiving events from bottom of history to recent time in next order:

```python
[1637836177, ..., 1637834440]
[1637837980, ..., 1637836226]
# Until we will get latest event,
# then we will be receiving empty lists
[]
[]
# Until new events will be available
[1637839306, 1637839306, 1637839306, 1637839306]
[]
# Continuing...
```

**From timestamp to timestamp, from top to bottom**

When `start_time` is greater then `end_time`.

```python
for events in mc.create_stream(
    start_time=1637839281, end_time=1637830890, q="type:ethereum_blockchain"
):
    event_timestamp_list = [e["event_timestamp"] for e in events["events"]]
    print(event_timestamp_list)
```

Stream of event packs will be generating from recent timestamp to older and inner list of transactions for each pack will be in most recent to older event timestamp range:

```python
[1637839280, ..., 1637838094]
[1637838086, ..., 1637836340]
...
[1637834488, ..., 1637832699]
[1637832676, ..., 1637830903]
```

**From timestamp to timestamp, from bottom to top**

When `start_time` is less then `end_time`.

```python
for events in mc.create_stream(
    start_time=1637830890, end_time=1637839281, q="type:ethereum_blockchain"
):
    event_timestamp_list = [e["event_timestamp"] for e in events["events"]]
    print(event_timestamp_list)
```

You start receiving list of older events from bottom of history to newest:

```python
[1637832676, ..., 1637830903]
[1637834488, ..., 1637832699]
...
[1637838086, ..., 1637836340]
[1637839280, ..., 1637838094]
```


