Research
Security News
Malicious npm Package Targets Solana Developers and Hijacks Funds
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
.. image:: https://travis-ci.com/mapbox/cligj.svg :target: https://travis-ci.com/mapbox/cligj
.. image:: https://coveralls.io/repos/mapbox/cligj/badge.png?branch=master :target: https://coveralls.io/r/mapbox/cligj?branch=master
Common arguments and options for GeoJSON processing commands, using Click.
cligj
is for Python developers who create command line interfaces for geospatial data.
cligj
allows you to quickly build consistent, well-tested and interoperable CLIs for handling GeoJSON.
files_in_arg
Multiple files
files_inout_arg
Multiple files, last of which is an output file.
features_in_arg
GeoJSON Features input which accepts multiple representations of GeoJSON features
and returns the input data as an iterable of GeoJSON Feature-like dictionaries
verbose_opt
quiet_opt
format_opt
JSON formatting options
``indent_opt``
``compact_opt``
Coordinate precision option
precision_opt
Geographic (default), projected, or Mercator switch
``projection_geographic_opt``
``projection_projected_opt``
``projection_mercator_opt``
Feature collection or feature sequence switch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
``sequence_opt``
``use_rs_opt``
GeoJSON output mode option
~~~~~~~~~~~~~~~~~~~~~~~~~~
``geojson_type_collection_opt``
``geojson_type_feature_opt``
``def geojson_type_bbox_opt``
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 `GeoJSON Text Sequences
standard <https://tools.ietf.org/html/rfc8142>`__ (and might contain
pretty-printed JSON) with the ASCII Record Separator (0x1e) as a delimiter, use
the ``--rs`` option
.. warning:: Future change warning
GeoJSON sequences (`--sequence`), not collections (`--no-sequence`), will be
the default in version 1.0.0.
.. code-block:: python
import click
import cligj
import json
def process_features(features):
for feature in features:
# TODO process feature here
yield feature
@click.command()
@cligj.features_in_arg
@cligj.sequence_opt
@cligj.use_rs_opt
def pass_features(features, sequence, use_rs):
if sequence:
for feature in process_features(features):
if use_rs:
click.echo(u'\x1e', nl=False)
click.echo(json.dumps(feature))
else:
click.echo(json.dumps(
{'type': 'FeatureCollection',
'features': list(process_features(features))}))
On the command line, the generated help text explains the usage
.. code-block:: console
Usage: pass_features [OPTIONS] FEATURES...
Options:
--sequence / --no-sequence Write a LF-delimited sequence of texts
containing individual objects or write a single
JSON text containing a feature collection object
(the default).
--rs / --no-rs Use RS (0x1E) as a prefix for individual texts
in a sequence as per http://tools.ietf.org/html
/draft-ietf-json-text-sequence-13 (default is
False).
--help Show this message and exit.
And can be used like this
.. code-block:: console
$ cat data.geojson
{'type': 'FeatureCollection', 'features': [{'type': 'Feature', 'id': '1'}, {'type': 'Feature', 'id': '2'}]}
$ pass_features data.geojson
{'type': 'FeatureCollection', 'features': [{'type': 'Feature', 'id': '1'}, {'type': 'Feature', 'id': '2'}]}
$ cat data.geojson | pass_features
{'type': 'FeatureCollection', 'features': [{'type': 'Feature', 'id': '1'}, {'type': 'Feature', 'id': '2'}]}
$ cat data.geojson | pass_features --sequence
{'type': 'Feature', 'id': '1'}
{'type': 'Feature', 'id': '2'}
$ cat data.geojson | pass_features --sequence --rs
^^{'type': 'Feature', 'id': '1'}
^^{'type': 'Feature', 'id': '2'}
In this example, ``^^`` represents 0x1e.
FAQs
Click params for commmand line interfaces to GeoJSON
We found that cligj demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.