# 📦 Biip
_Biip interprets the data in barcodes._
[![Tests](https://img.shields.io/github/actions/workflow/status/jodal/biip/tests.yml?branch=main)](https://github.com/jodal/biip/actions/workflows/tests.yml)
[![Docs](https://img.shields.io/readthedocs/biip)](https://biip.readthedocs.io/en/latest/)
[![Coverage](https://img.shields.io/codecov/c/gh/jodal/biip)](https://codecov.io/gh/jodal/biip)
[![PyPI](https://img.shields.io/pypi/v/biip)](https://pypi.org/project/biip/)
---
Biip is a Python library for making sense of the data in barcodes.
The library can interpret the following formats:
- GTIN-8, GTIN-12, GTIN-13, and GTIN-14 numbers,
commonly found in EAN-8, EAN-13, and ITF-14 barcodes.
- GS1 AI element strings,
commonly found in GS1-128 barcodes.
- UPC-A and UPC-E numbers, as found in UPC-A and UPC-E barcodes.
For a quickstart guide and a complete API reference,
see the [documentation](https://biip.readthedocs.io/).
## Installation
Biip requires Python 3.9 or newer.
Biip is available from [PyPI](https://pypi.org/project/biip/):
```
python3 -m pip install biip
```
Optionally, with the help of `py-moneyed`, Biip can convert amounts with
currency information to `moneyed.Money` objects.
To install Biip with `py-moneyed`, run:
```
python3 -m pip install "biip[money]"
```
## Project resources
- [Documentation](https://biip.readthedocs.io/)
- [Source code](https://github.com/jodal/biip)
- [Releases](https://github.com/jodal/biip/releases)
- [Issue tracker](https://github.com/jodal/biip/issues)
- [Contributors](https://github.com/jodal/biip/graphs/contributors)
- [Users](https://github.com/jodal/biip/wiki/Users)
## Development status
All planned features have been implemented.
Please open an issue if you have any barcode parsing related needs that are not covered.
## Features
- GS1 (multiple Element Strings with Application Identifiers)
- Recognize all specified Application Identifiers.
- Recognize allocating GS1 Member Organization from the GS1 Company Prefix.
- Recognize the GS1 Company Prefix.
- Parse fixed-length Element Strings.
- Parse variable-length Element Strings.
- Support configuring the separation character.
- Parse AI `00` as SSCC.
- Parse AI `01` and `02` as GTIN.
- Parse AI `410`-`417` as GLN.
- Parse dates/times into `datetime.date`/`datetime.datetime` values.
- Interpret the year to be within -49/+50 years from today.
- Interpret dates with day "00" as the last day of the month.
- Parse variable measurement fields into `Decimal` values.
- Parse discount percentage into `Decimal` values.
- Parse amounts into `Decimal` values.
- Additionally, if py-moneyed is installed,
parse amounts with currency into `Money` values.
- Encode as Human Readable Interpretation (HRI),
e.g. with parenthesis around the AI numbers.
- Parse Human Readable Interpretation (HRI) strings.
- Easy lookup of parsed Element Strings by:
- Application Identifier (AI) prefix
- Part of AI's data title
- GLN (Global Location Number)
- Parse.
- Extract and validate check digit.
- Extract GS1 Prefix.
- Extract GS1 Company Prefix.
- GTIN (Global Trade Item Number)
- Parse GTIN-8, e.g. from EAN-8 barcodes.
- Parse GTIN-12, e.g. from UPC-A and UPC-E barcodes.
- Parse GTIN-13, e.g. from EAN-13 barcodes.
- Parse GTIN-14, e.g. from ITF-14 and GS1-128 barcodes.
- Extract and validate check digit.
- Extract GS1 Prefix.
- Extract GS1 Company Prefix.
- Extract packaging level digit from GTIN-14.
- Encode GTIN-8 as GTIN-12/13/14.
- Encode GTIN-12 as GTIN-13/14.
- Encode GTIN-13 as GTIN-14.
- RCN (Restricted Circulation Numbers), a subset of GTINs
- Classification of RCN usage to either a geographical region or a company.
- Parsing of variable measurements (price/weight) into `Decimal`
values.
- Parsing of price values into `Money` values if `py-moneyed` is
installed and the region's RCN parsing rules specifies a currency.
- Denmark: Parsing of weight and price.
- Estland: Parsing of weight.
- Finland: Parsing of weight.
- Germany: Parsing of weight, price, and count, including validation of
measurement check digit.
- Great Britain: Parsing of price, including validation of measurement check
digit.
- Latvia: Parsing of weight.
- Lithuania: Parsing of weight.
- Norway: Parsing of weight and price.
- Sweden: Parsing of weight and price.
- Encode RCN with the variable measure part zeroed out,
to help looking up the correct trade item.
- SSCC (Serial Shipping Container Code)
- Extract and validate check digit.
- Extract GS1 Prefix.
- Extract GS1 Company Prefix.
- Extract extension digit.
- Encode for human consumption, with the logical groups separated by whitespace.
- UPC (Universal Product Code)
- Parse 12-digit UPC-A.
- Parse 6-digit UPC-E, with implicit number system 0 and no check digit.
- Parse 7-digit UPC-E, with explicit number system and no check digit.
- Parse 8-digit UPC-E, with explicit number system and a check digit.
- Expand UPC-E to UPC-A.
- Suppress UPC-A to UPC-E, for the values where it is supported.
- Symbology Identifiers, e.g. `]EO`
- Recognize all specified Symbology Identifier code characters.
- Strip Symbology Identifiers before parsing the remainder.
- Use Symbology Identifiers when automatically selecting what parser to use.
## License
Copyright 2020-2024 Stein Magnus Jodal and contributors.
Licensed under the
[Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0).
Raw data
{
"_id": null,
"home_page": "https://github.com/jodal/biip",
"name": "biip",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0.0,>=3.9.0",
"maintainer_email": null,
"keywords": "barcodes, ean, isbn, gs1, gtin, upc",
"author": "Stein Magnus Jodal",
"author_email": "stein.magnus@jodal.no",
"download_url": "https://files.pythonhosted.org/packages/34/4d/91331de46ca55bcc2124fcf7c4203d2581e1ee124da1482767f99b44d478/biip-3.5.0.tar.gz",
"platform": null,
"description": "# 📦 Biip\n\n_Biip interprets the data in barcodes._\n\n[![Tests](https://img.shields.io/github/actions/workflow/status/jodal/biip/tests.yml?branch=main)](https://github.com/jodal/biip/actions/workflows/tests.yml)\n[![Docs](https://img.shields.io/readthedocs/biip)](https://biip.readthedocs.io/en/latest/)\n[![Coverage](https://img.shields.io/codecov/c/gh/jodal/biip)](https://codecov.io/gh/jodal/biip)\n[![PyPI](https://img.shields.io/pypi/v/biip)](https://pypi.org/project/biip/)\n\n---\n\nBiip is a Python library for making sense of the data in barcodes.\n\nThe library can interpret the following formats:\n\n- GTIN-8, GTIN-12, GTIN-13, and GTIN-14 numbers,\n commonly found in EAN-8, EAN-13, and ITF-14 barcodes.\n\n- GS1 AI element strings,\n commonly found in GS1-128 barcodes.\n\n- UPC-A and UPC-E numbers, as found in UPC-A and UPC-E barcodes.\n\nFor a quickstart guide and a complete API reference,\nsee the [documentation](https://biip.readthedocs.io/).\n\n## Installation\n\nBiip requires Python 3.9 or newer.\n\nBiip is available from [PyPI](https://pypi.org/project/biip/):\n\n```\npython3 -m pip install biip\n```\n\nOptionally, with the help of `py-moneyed`, Biip can convert amounts with\ncurrency information to `moneyed.Money` objects.\nTo install Biip with `py-moneyed`, run:\n\n```\npython3 -m pip install \"biip[money]\"\n```\n\n## Project resources\n\n- [Documentation](https://biip.readthedocs.io/)\n- [Source code](https://github.com/jodal/biip)\n- [Releases](https://github.com/jodal/biip/releases)\n- [Issue tracker](https://github.com/jodal/biip/issues)\n- [Contributors](https://github.com/jodal/biip/graphs/contributors)\n- [Users](https://github.com/jodal/biip/wiki/Users)\n\n## Development status\n\nAll planned features have been implemented.\nPlease open an issue if you have any barcode parsing related needs that are not covered.\n\n## Features\n\n- GS1 (multiple Element Strings with Application Identifiers)\n - Recognize all specified Application Identifiers.\n - Recognize allocating GS1 Member Organization from the GS1 Company Prefix.\n - Recognize the GS1 Company Prefix.\n - Parse fixed-length Element Strings.\n - Parse variable-length Element Strings.\n - Support configuring the separation character.\n - Parse AI `00` as SSCC.\n - Parse AI `01` and `02` as GTIN.\n - Parse AI `410`-`417` as GLN.\n - Parse dates/times into `datetime.date`/`datetime.datetime` values.\n - Interpret the year to be within -49/+50 years from today.\n - Interpret dates with day \"00\" as the last day of the month.\n - Parse variable measurement fields into `Decimal` values.\n - Parse discount percentage into `Decimal` values.\n - Parse amounts into `Decimal` values.\n - Additionally, if py-moneyed is installed,\n parse amounts with currency into `Money` values.\n - Encode as Human Readable Interpretation (HRI),\n e.g. with parenthesis around the AI numbers.\n - Parse Human Readable Interpretation (HRI) strings.\n - Easy lookup of parsed Element Strings by:\n - Application Identifier (AI) prefix\n - Part of AI's data title\n- GLN (Global Location Number)\n - Parse.\n - Extract and validate check digit.\n - Extract GS1 Prefix.\n - Extract GS1 Company Prefix.\n- GTIN (Global Trade Item Number)\n - Parse GTIN-8, e.g. from EAN-8 barcodes.\n - Parse GTIN-12, e.g. from UPC-A and UPC-E barcodes.\n - Parse GTIN-13, e.g. from EAN-13 barcodes.\n - Parse GTIN-14, e.g. from ITF-14 and GS1-128 barcodes.\n - Extract and validate check digit.\n - Extract GS1 Prefix.\n - Extract GS1 Company Prefix.\n - Extract packaging level digit from GTIN-14.\n - Encode GTIN-8 as GTIN-12/13/14.\n - Encode GTIN-12 as GTIN-13/14.\n - Encode GTIN-13 as GTIN-14.\n- RCN (Restricted Circulation Numbers), a subset of GTINs\n - Classification of RCN usage to either a geographical region or a company.\n - Parsing of variable measurements (price/weight) into `Decimal`\n values.\n - Parsing of price values into `Money` values if `py-moneyed` is\n installed and the region's RCN parsing rules specifies a currency.\n - Denmark: Parsing of weight and price.\n - Estland: Parsing of weight.\n - Finland: Parsing of weight.\n - Germany: Parsing of weight, price, and count, including validation of\n measurement check digit.\n - Great Britain: Parsing of price, including validation of measurement check\n digit.\n - Latvia: Parsing of weight.\n - Lithuania: Parsing of weight.\n - Norway: Parsing of weight and price.\n - Sweden: Parsing of weight and price.\n - Encode RCN with the variable measure part zeroed out,\n to help looking up the correct trade item.\n- SSCC (Serial Shipping Container Code)\n - Extract and validate check digit.\n - Extract GS1 Prefix.\n - Extract GS1 Company Prefix.\n - Extract extension digit.\n - Encode for human consumption, with the logical groups separated by whitespace.\n- UPC (Universal Product Code)\n - Parse 12-digit UPC-A.\n - Parse 6-digit UPC-E, with implicit number system 0 and no check digit.\n - Parse 7-digit UPC-E, with explicit number system and no check digit.\n - Parse 8-digit UPC-E, with explicit number system and a check digit.\n - Expand UPC-E to UPC-A.\n - Suppress UPC-A to UPC-E, for the values where it is supported.\n- Symbology Identifiers, e.g. `]EO`\n - Recognize all specified Symbology Identifier code characters.\n - Strip Symbology Identifiers before parsing the remainder.\n - Use Symbology Identifiers when automatically selecting what parser to use.\n\n## License\n\nCopyright 2020-2024 Stein Magnus Jodal and contributors.\nLicensed under the\n[Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0).\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "Biip interprets the data in barcodes.",
"version": "3.5.0",
"project_urls": {
"Documentation": "https://biip.readthedocs.io",
"Homepage": "https://github.com/jodal/biip",
"Repository": "https://github.com/jodal/biip"
},
"split_keywords": [
"barcodes",
" ean",
" isbn",
" gs1",
" gtin",
" upc"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "e77ad433616ff80cf82e6b2a833b615b24b285a72d37c51b1dcb3ceec034b2e6",
"md5": "51148a073e0ab1f3bf8b0d7554fc3068",
"sha256": "ba4b6cfc21c1f941b16444bfff53c5058325cf043a554dba078a2a3fa5c3eb22"
},
"downloads": -1,
"filename": "biip-3.5.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "51148a073e0ab1f3bf8b0d7554fc3068",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0.0,>=3.9.0",
"size": 160482,
"upload_time": "2024-10-03T18:28:39",
"upload_time_iso_8601": "2024-10-03T18:28:39.836405Z",
"url": "https://files.pythonhosted.org/packages/e7/7a/d433616ff80cf82e6b2a833b615b24b285a72d37c51b1dcb3ceec034b2e6/biip-3.5.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "344d91331de46ca55bcc2124fcf7c4203d2581e1ee124da1482767f99b44d478",
"md5": "b9f4596c74cbdf730bcf02c1392946d9",
"sha256": "125c57a59859216d3d097d2e4a4605a4ddf36478108ce091c938fd069ea05407"
},
"downloads": -1,
"filename": "biip-3.5.0.tar.gz",
"has_sig": false,
"md5_digest": "b9f4596c74cbdf730bcf02c1392946d9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0.0,>=3.9.0",
"size": 155705,
"upload_time": "2024-10-03T18:28:41",
"upload_time_iso_8601": "2024-10-03T18:28:41.411102Z",
"url": "https://files.pythonhosted.org/packages/34/4d/91331de46ca55bcc2124fcf7c4203d2581e1ee124da1482767f99b44d478/biip-3.5.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-03 18:28:41",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "jodal",
"github_project": "biip",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "biip"
}