Skip to main content
# nf-grapher-python

This is a Python3 library for building Native Format Scores.

> **Note**: Currently this library supports _building_ Native Format Scores for the Native Format Smart Player, however reading or deserializing scores from JSON is currently unsupported.

## Requirements

- Python3
- virtualenv

## Installing

```bash
pip install nf_grapher
```

## Getting Started

Setup a virtual environment with the following:

```bash
virtualenv -p python3 e
source ./e/bin/activate
```

You can use whatever environment name you'd like, `e` is used here because it's short.

## Structure

This python library is divided into 3 modules. `nf_grapher.score` contains all the Score level objects
defined by the Native Format Score schema. `nf_grapher.typed` contains useful "typed" nodes defined
by the [smart player contract](../smart-player-contract.json). Because Python is not
statically typed, these types are not yet enforced. `nf_grapher.encoder` contains a function `encode`
for serializing grapher objects into JSON.

## Tests

Run tests with the following command:

```bash
python -m unittest discover -v
```

## Example Usage

```python
from nf_grapher.score import *
from nf_grapher.typed import *
from nf_grapher.encoder import encode

# Build a source node for a Spotify track
# Start from 5.6 seconds into the track and play for 5.6 seconds
source = FileNode('spotify:track:4RDKrwyA9YouzL1LxvMaxH', offset=5.6e+9, duration=5.6e+9)

# Create a 5.6 second loop from the beginning of the track
loop = LoopNode(when=0, duration=5.6e+9)

# Create the full score
score = Score(Graph(
nodes=[source, loop],
edges=[source.connect(loop)]
))

print(encode(score))
```

You can see a list of all supported typed nodes by using the Python `help` feature in a REPL.
For instance,

```bash
python
>>> from nf_grapher import typed
>>> help(typed)
```


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nf_grapher-1.2.12.tar.gz (9.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nf_grapher-1.2.12-py3-none-any.whl (14.1 kB view details)

Uploaded Python 3

File details

Details for the file nf_grapher-1.2.12.tar.gz.

File metadata

  • Download URL: nf_grapher-1.2.12.tar.gz
  • Upload date:
  • Size: 9.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.4

File hashes

Hashes for nf_grapher-1.2.12.tar.gz
Algorithm Hash digest
SHA256 e655f5714803820902d7d2854dec2a17fb13d569d8543c3ae6dc9b967f1b0eae
MD5 148770301cd18bb46ec319bdd8af323a
BLAKE2b-256 38d9ef590662cd4b2ca17910ef7ae6a732e88b1852c2d8b7817fb49193db625a

See more details on using hashes here.

File details

Details for the file nf_grapher-1.2.12-py3-none-any.whl.

File metadata

  • Download URL: nf_grapher-1.2.12-py3-none-any.whl
  • Upload date:
  • Size: 14.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.4

File hashes

Hashes for nf_grapher-1.2.12-py3-none-any.whl
Algorithm Hash digest
SHA256 bbda1492a4c9c36e980ab4e9e0f5619573a39c67dc75c35096c513487310e939
MD5 d8beeb69082c543cbebfa8a62ac549b9
BLAKE2b-256 e4fd37c6fdc1ee98ccd3ef34b5678d14bfa41991c91ddde9c5665cc894534525

See more details on using hashes here.

Release history Release notifications | RSS feed

1.2.24

2 files

1.2.23

2 files

1.2.22

2 files

1.2.21

2 files

1.2.20

2 files

1.2.19

2 files

1.2.18

2 files

1.2.17

2 files

1.2.16

2 files

1.2.15

2 files

1.2.14

2 files

1.2.13

2 files

This release

1.2.12 This release

2 files

1.2.11

2 files

1.2.10

2 files

1.2.9

2 files

1.2.8

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page