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.3.0.tar.gz (5.8 kB view details)

Uploaded Source

Built Distributions

cligj-0.3.0-py3-none-any.whl (8.2 kB view details)

Uploaded Python 3

cligj-0.3.0-py2-none-any.whl (8.3 kB view details)

Uploaded Python 2

File details

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

File metadata

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

File hashes

Hashes for cligj-0.3.0.tar.gz
Algorithm Hash digest
SHA256 a534cb32a44b7d1182c13fa81507b479cabbdbcb40f6470a080b670a88aff425
MD5 cd135f171b4ef2c07ebd34731ccf09a5
BLAKE2b-256 e8dc3fcb0af2fbeacd384ab18b2c3a591e9a861c8018fd8ee793bfb0accfb8a3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cligj-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 dec88b7f2e7d4c133a3633e791575f07a4c5425e25817fa5e02a4b3f62133c7e
MD5 edd320203e62a0c71a8277c945086fa6
BLAKE2b-256 ed4cc18480b8605df690d0b07d884a5e7be547bdad476e6117c69d64bacdfc56

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cligj-0.3.0-py2-none-any.whl
Algorithm Hash digest
SHA256 bc009db09177b132a4b789ca1dc12c65ee21b2c998af3f65fc1fae27a9343bd9
MD5 57a7268eed6d56966af12988edcfc484
BLAKE2b-256 dd98c272fd34654ceab24c27b804cfc1fc99b1a43dd0d4e56156130d2e7b8cd2

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