Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (pypi.python.org).
Help us improve Python packaging - Donate today!

Package management command for data.

Project Description

# infinity-data

This is a simple package that helps read Infinity data format and get data in such format.

## Quick start

### Get data

Just `pip install infdata`, and start getting data.

For example,
```
$ inf install example.com/posts==crawler-1.0.0
```

installs records that are posts from `example.com`.

### Publish data
```
$ int init # initiates folder .inf/
$ inf login # saves token to .inf/config
$ inf search example.com/posts # searches for dataset versions
$ inf upload file.json # uploads Infinity JSON or JSON-L data to specified infinity server
```

**Note:** the tokens `['example.com/posts', 'crawler-1.0.0']` together define a unique `[source-specific, crawler-specific]` schema.

# Infinity JSON

Infinity JSON format includes a header line, which specifies schemas (`[S]`) and types (`[T]`) for its records.

Example:

```
[
{'': [[S],[T], 'x': [[S],[T]], 'y': [{'': [[S],[T]], 'z': [[S],[T]]}]},
{'x': '1,330.98', 'y': [{'z': 1}, {'u': 2}]},
{'x': '2,011.19', 'y': [{'z': 4}, {'u': 3}]},
]
```

The schemas, types specification for the empty string key `''` specifies the schema and type for the records themselves (required in every level separated by curly braces), whereas the rest of keys specify schemas and types for the data accessible via the keys.

This way, if we want to specify, that the `x` must be casted to a `float`, and means the [elevation](https://www.wikidata.org/wiki/Q2633778), we can do:

```
[
{'': [], 'x': {'': [['str'],['https://www.wikidata.org/wiki/Q2633778']]}},
{'x': '1,330.98', 'y': [{'z': 1}, {'u': 2}]},
{'x': '2,011.19', 'y': [{'z': 4}, {'u': 3}]},
]
```

If you want to additionally, add conversion rules, you can include lambda expression after the final type:

```
[
{'': [], 'x': {'': [['float', "lambda x: x.replace(',','')"],['https://www.wikidata.org/wiki/Q2633778']]}},
{'x': '1,330.98', 'y': [{'z': 1}, {'u': 2}]},
{'x': '2,011.19', 'y': [{'z': 4}, {'u': 3}]},
]
```

This way, the final data becomes:

```
from inf import normalize

normalize(
[
{'x': [['float', "lambda x: x.replace(',','')"],['https://www.wikidata.org/wiki/Q2633778']]},
{'x': '1,330.98', 'y': [{'z': 1}, {'u': 2}]},
{'x': '2,011.19', 'y': [{'z': 4}, {'u': 3}]},
]
)
```

Result is:

```
[
{'Q2633778': 1330.98, 'y': [{'z': 1}, {'u': 2}]},
{'Q2633778': 2011.19, 'y': [{'z': 4}, {'u': 3}]},
]
```

Release History

This version
History Node

1.0.5

History Node

1.0.4

History Node

1.0.3

History Node

1.0.2

History Node

1.0.1

History Node

1.0.0

Download Files

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

File Name & Hash SHA256 Hash Help Version File Type Upload Date
infdata-1.0.5.tar.gz
(16.5 kB) Copy SHA256 Hash SHA256
Source Feb 17, 2018

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting