Skip to main content

Click params for commmand line interfaces to GeoJSON

Project description

https://travis-ci.org/mapbox/cligj.svg https://coveralls.io/repos/mapbox/cligj/badge.png?branch=master

Common arguments and options for GeoJSON processing commands, using Click.

Example

Here’s an example of a command that writes out GeoJSON features as a collection or, optionally, a sequence of individual features. Since most software that reads and writes GeoJSON expects a text containing a single feature collection, that’s the default, and a LF-delimited sequence of texts containing one GeoJSON feature each is a feature that is turned on using the --sequence option. To write sequences of feature texts that conform to the JSON Text Sequences proposed standard (and might contain pretty-printed JSON) with the ASCII Record Separator (0x1e) as a delimiter, use the --rs option

import click
import cligj
import json

@click.command()
@cligj.sequence_opt
@cligj.use_rs_opt
def features(sequence, use_rs):
    features = [
        {'type': 'Feature', 'id': '1'}, {'type': 'Feature', 'id': '2'}]
    if sequence:
        for feature in features:
            if use_rs:
                click.echo(b'\x1e', nl=False)
            click.echo(json.dumps(feature))
    else:
        click.echo(json.dumps(
            {'type': 'FeatureCollection', 'features': features}))

On the command line it works like this.

$ features
{'type': 'FeatureCollection', 'features': [{'type': 'Feature', 'id': '1'}, {'type': 'Feature', 'id': '2'}]}

$ features --sequence
{'type': 'Feature', 'id': '1'}
{'type': 'Feature', 'id': '2'}

$ features --sequence --rs
^^{'type': 'Feature', 'id': '1'}
^^{'type': 'Feature', 'id': '2'}

In this example, ^^ represents 0x1e.

Plugins

cligj can also facilitate loading external click-based plugins via setuptools entry points. The cligj.plugins module contains a special group() decorator that behaves exactly like click.group() except that it offers the opportunity load plugins and attach them to the group as it is istantiated.

from pkg_resources import iter_entry_points

import cligj.plugins
import click

@cligj.plugins.group(plugins=iter_entry_points('module.entry_points'))
def cli():

    """A CLI application."""

    pass

@cli.command()
@click.argument('arg')
def printer(arg):

    """Print arg."""

    click.echo(arg)

@cli.group(plugins=iter_entry_points('other_module.more_plugins'))
def plugins():

    """A sub-group that contains plugins from a different module."""
    pass

Project details


Download files

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

Source Distribution

cligj-0.2.0.tar.gz (5.6 kB view details)

Uploaded Source

Built Distributions

cligj-0.2.0-py3-none-any.whl (7.8 kB view details)

Uploaded Python 3

cligj-0.2.0-py2-none-any.whl (7.8 kB view details)

Uploaded Python 2

File details

Details for the file cligj-0.2.0.tar.gz.

File metadata

  • Download URL: cligj-0.2.0.tar.gz
  • Upload date:
  • Size: 5.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for cligj-0.2.0.tar.gz
Algorithm Hash digest
SHA256 8037291ed094fa5d9e164b71cd1bc1ffcb3846d326ca95a6699a1b4145237214
MD5 2016c3d83d198a6840924b04a3962f3e
BLAKE2b-256 a8725afac40d6898bc61cbd998e36e9ad6b46f327dd8003f828e580be7610a15

See more details on using hashes here.

File details

Details for the file cligj-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for cligj-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ad8b2e82c9f580b0ffbf0e932ff8a1226645423eefc86d7fb6d6677301f2a051
MD5 be1e8e56bc04f21676f07da47fac51aa
BLAKE2b-256 ae1b98c8bfb7733cbcde840864f3fd2007849fcdcfb146e98b1b24f5d3e10bff

See more details on using hashes here.

File details

Details for the file cligj-0.2.0-py2-none-any.whl.

File metadata

File hashes

Hashes for cligj-0.2.0-py2-none-any.whl
Algorithm Hash digest
SHA256 0e8f9bef0b4a87649f9f5aa50a575115865183d40438525c3f0864b5db6f0a8f
MD5 3d0c39180ac760bf032d8947745ad4d9
BLAKE2b-256 40e750ca0b3c0fc7748d3e109be6799bc51134ffe269324779eff96d41a218e9

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page