Skip to main content

Library for reading and writing Joint BIIF Profile (JBP) files (NITF and NSIF)

Project description

jbpy

PyPI - Version PyPI - Python Version PyPI - License SPEC 0 — Minimum Supported Dependencies
Tests Documentation Status

jbpy is a library for reading and writing Joint BIIF Profile files. Including:

  • National Imagery Transmission Format (NITF)
  • North Atlantic Treaty Organisation (NATO) Secondary Imagery Format (NSIF)

The Joint BIIF Profile is available from the NSG Standards Registry. See: https://nsgreg.nga.mil/doc/view?i=5674

Install

jbpy can be installed using pip:

$ python -m pip install jbpy

jbpy can also be installed using conda and the conda-forge channel:

$ conda install --channel conda-forge jbpy

License

This repository is licensed under the MIT license.

Testing

Some tests rely on the JITC Quick Look Test Data. If this data is available, it can be used by setting the JBPY_JITC_QUICKLOOK_DIR environment variable.

JBPY_JITC_QUICKLOOK_DIR=<path> pytest

Support Data Extensions

The JBP document provides extensibility through Support Data Extensions (SDEs) such as Tagged Record Extensions (TREs) and Data Extension Segments (DES). To mimic this extensibility, jbpy defines two entry point groups which are used to load SDE plugins:

  1. jbpy.extensions.tre
  2. jbpy.extensions.des_subheader

jbpy provides a number of built-in SDEs and will load additional SDEs from separately installed packages provided they are declared under these entry point groups as described below.

[!WARNING] There is not currently a mechanism to arbitrate multiple SDEs that are registered under the same plugin name.

TREs

A TRE plugin is named using a 6-character (left-justified and space-padded) TRETAG. The object reference must resolve to a function with no required arguments that instantiates a jbpy.core.Tre object.

pyproject.toml example:

[project.entry-points."jbpy.extensions.tre"]
"MYTRE " = "my_package.my_module:my_tre_func"

Once registered, a TRE object can be instantiated using jbpy.tre_factory:

>>> import jbpy
>>> tre = jbpy.tre_factory("MYTRE")  # note: tag passed to factory must have trailing spaces stripped

DES Subheaders

A DES subheader plugin is named using a 27-character string formed by concatenating the 25-character DESID and 2-digit DESVER. The object reference must resolve to a function that accepts a string-valued name and instantiates a jbpy.core.DataExtensionSubheader object.

pyproject.toml example:

[project.entry-points."jbpy.extensions.des_subheader"]
"MY DES SUBHEADER         24" = "my_des_subheader_func"

Once registered, a DES subheader object can be instantiated using jbpy.des_subheader_factory:

>>> import jbpy
>>> des_subhdr = jbpy.des_subheader_factory("MY DES SUBHEADER", 24)

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

jbpy-0.6.0.tar.gz (57.6 kB view details)

Uploaded Source

Built Distribution

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

jbpy-0.6.0-py3-none-any.whl (45.4 kB view details)

Uploaded Python 3

File details

Details for the file jbpy-0.6.0.tar.gz.

File metadata

  • Download URL: jbpy-0.6.0.tar.gz
  • Upload date:
  • Size: 57.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for jbpy-0.6.0.tar.gz
Algorithm Hash digest
SHA256 465db7932ee02830e0adffc50bd78d7e078a86ffc73a017f40791d9e98aae66b
MD5 624ac2d410308868779129a66361eef8
BLAKE2b-256 29a6d36243d7ede6d6a52252f33b5b8fee0bb5ce77dd190f29dad56acb3dde79

See more details on using hashes here.

Provenance

The following attestation bundles were made for jbpy-0.6.0.tar.gz:

Publisher: pypi.yml on ValkyrieSystems/jbpy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file jbpy-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: jbpy-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 45.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for jbpy-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 01d85e5552faa66ff5e6d533de30d003eddff29ca3b1b8f635e71c29693be941
MD5 1ccf69d62a96388eee4ebb229a1af2e9
BLAKE2b-256 87e21eebbc7c41589c29d325a5af266fa52571a97e8081fc0e81d5074c2a5b59

See more details on using hashes here.

Provenance

The following attestation bundles were made for jbpy-0.6.0-py3-none-any.whl:

Publisher: pypi.yml on ValkyrieSystems/jbpy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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