%global _empty_manifest_terminate_build 0 Name: python-gtin Version: 1.3.1649173518 Release: 1 Summary: Parse GTINs (also known as UPC/EAN/JAN/ISBN) License: MIT URL: https://github.com/enorganic/gtin Source0: https://mirrors.nju.edu.cn/pypi/web/packages/39/50/2c5f7e14b164023d1547df85f4b48c2e33de14cea673f546225269dc54a9/gtin-1.3.1649173518.tar.gz BuildArch: noarch %description # gtin [![tests](https://github.com/enorganic/gtin/actions/workflows/test-distribute.yml/badge.svg?branch=master)](https://github.com/enorganic/gtin/actions/workflows/test-distribute.yml) [![CodeQL](https://github.com/enorganic/gtin/actions/workflows/codeql-analysis.yml/badge.svg?branch=master)](https://github.com/enorganic/gtin/actions/workflows/codeql-analysis.yml) A library and CLI for parsing and validating GTINs ("Global Trade Item Numbers"—also known as UPC/EAN/JAN/ISBN). ## Installation ```shell pip3 install gtin ``` ## Usage This package can be used as a CLI (command-line-interface) or library. Please see the [Notes Concerning GCP](#notes-concerning-gcp) if calculating a correct GCP is important to your usage. ### CLI #### gtin ccd | gtin calculate-check-digit ```shell $ gtin ccd -h usage: gtin calculate-check-digit [-h] GTIN gtin ccd [-h] GTIN positional arguments: GTIN A GTIN without the check-digit optional arguments: -h, --help show this help message and exit ``` #### gtin acd | gtin append-check-digit ```shell $ gtin acd -h usage: gtin append-check-digit [-h] [-l LENGTH] GTIN gtin acd [-h] [-l LENGTH] GTIN positional arguments: GTIN A GTIN without the check-digit optional arguments: -h, --help show this help message and exit -l LENGTH, --length LENGTH The length of GTIN to return ``` #### gtin vcd | gtin validate-check-digit ```shell $ gtin vcd -h usage: gtin validate-check-digit [-h] GTIN gtin vcd [-h] GTIN If the provided GTIN is *invalid*, this command will terminate with a non-zero exit status. positional arguments: GTIN A GTIN *with* check-digit optional arguments: -h, --help show this help message and exit ``` #### gtin hvcd | gtin has-valid-check-digit ```shell $ gtin hvcd -h usage: gtin has-valid-check-digit [-h] GTIN gtin hvcd [-h] GTIN If the provided GTIN is *valid*, this command will return "YES". If the provided GTIN is *invalid*, this command will return "NO". positional arguments: GTIN A GTIN *with* check-digit optional arguments: -h, --help show this help message and exit ``` #### gtin gcp | gtin get-gcp ```shell $ gtin gcp -h usage: gtin get-gcp [-h] GTIN gtin gcp [-h] GTIN positional arguments: GTIN A GTIN *with* check-digit optional arguments: -h, --help show this help message and exit ``` ### Library #### gtin.calculate_check_digit This function accepts a GTIN *without* check-digit and returns the check-digit. Parameters: - unchecked_gtin (str|int): A GTIN *without* check-digit Note: If the provided `unchecked_gtin` is a `str`, the returned value is a `str`. If the provided `unchecked_gtin` is an `int`, the returned value is an `int`. Example: ```python >>> from gtin import calculate_check_digit ... calculate_check_digit("02345678901289") '4' >>> calculate_check_digit(2345678901289) 4 ``` #### gtin.append_check_digit This function accepts a GTIN *without* check-digit and returns the same GTIN with a check-digit appended. Note: If the provided `unchecked_gtin` is a `str`, the returned value is a `str`. If the provided `unchecked_gtin` is an `int`, the returned value is an `int`. Parameters: - unchecked_gtin (str|int): A GTIN *without* check-digit Example: ```python >>> from gtin import append_check_digit ... append_check_digit("02345678901289") '023456789012894' >>> append_check_digit(2345678901289) 23456789012894 ``` #### gtin.has_valid_check_digit This function accepts a GTIN *with* check-digit and returns `True` if the check-digit is valid, or `False` if the check-digit is invalid. ```python >>> from gtin import has_valid_check_digit ... has_valid_check_digit("02345678901289") True >>> has_valid_check_digit(2345678901281) False 23456789012894 ``` #### gtin.validate_check_digit This function accepts a GTIN *with* check-digit and raises a `gtin.CheckDigitError` if the provided GTIN's check-digit is invalid. ```python >>> from gtin import validate_check_digit ... validate_check_digit("02345678901289") >>> validate_check_digit("02345678901281") Traceback (most recent call last): File "", line 1, in File "/Users/David/Code/gtin/gtin/__init__.py", line 159, in validate_check_digit raise CheckDigitError(gtin, check_digit) gtin.CheckDigitError: "02345678901281" is not a valid GTIN, the last digit is "1", whereas the correct check-digit would be "9". ``` #### gtin.get_gcp This function accepts a GTIN *with check-digit* and returns the GCP (GS1 Company Prefix). ```python >>> from gtin import get_gcp ... get_gcp("00332100000001") '033210' >>> get_gcp(332100000001) '033210' ``` #### gtin.GTIN This class represents a Global Trade Item Number, and can be used to: - Identify a trade item's Indicator-Digit, GCP (GS1 Company Prefix), Item Reference, and Check-Digit. - Validate a GTIN's check-digit. - Calculate a check-digit from a raw GTIN. **Parameters**: - **gtin** (str|int): A string or number representing a GTIN, including the check-digit. - When the *gtin* parameter is provided, the last (rightmost) digit is used to validate the GTIN. - **length** (int): The length of the GTIN. - If no value is provided for *length*, and *gtin* is a *str*—*length* is inferred based on the character length of *gtin*. - If no value is passed for *length*, *gtin* is *None*, and *raw* is a *str*—*length* is inferred based on the length of *raw* (adding 1, to account for the absent check-digit). - If no length is passed, and none can be inferred from *gtin* or *raw*, *length* defaults to 14. - **raw** (str|int): A string or number representing the GTIN, excluding the check-digit. - If a value is provided for the parameter *gtin*, this parameter is not used, but is instead derived from *gtin*. An instance of `GTIN` has the following properties: - **indicator_digit** (str): This is the first (leftmost) digit of a GTIN-14. - "0" indicates a base unit. - "1" through "8" are used to define the packaging hierarchy of a product with the same item reference. - "9" indicates a variable-measure trade item. - **gcp** (str): The GCP (GS1 Company Prefix) is a globally unique identifier assigned to an entity (usually a company) by GS1 Member Organizations, in order to create identifiers within the GS1 System. Company Prefixes, which vary in length, are comprised of a GS1 Member Organization Prefix followed by a company/entity-specific number. - **item_reference** (str): The item reference is the part of the GTIN that is allocated by a GS1 entity to identify a trade item. An item reference varies in length as a function of a GTIN's GCP length. - **check_digit** (str): The last digit in the GTIN when cast as a `str`, the check-digit is a mod-10 algorithm digit used to check for input errors. To understand how this digit is calculated, refer to: http://www.gs1.org/how-calculate-check-digit-manually. - **length** (int): The number of characters comprising the GTIN (*including* the check-digit). ##### Examples A *GTIN* initialized without any arguments: ```python >>> from gtin import GTIN ... print(repr(GTIN())) gtin.GTIN("00000000000000") ``` Typical usage will require converting your *GTIN* to a *str* prior to use in your application. ```python >>> from gtin import GTIN ... print(str(GTIN())) 00000000000000 ``` Given a raw GTIN, the check-digit is calculated and appended. ```python >>> from gtin import GTIN ... print(str(GTIN(raw="0978289450809"))) 09782894508091 ``` Given a valid GTIN *str* for *gtin*, the return value of *str(GTIN(gtin))* is equal to *gtin*. ```python >>> from gtin import GTIN ... print(str(GTIN("04000101613600"))) 04000101613600 ``` Non-numeric characters are ignored/discarded. ```python >>> from gtin import GTIN ... print(str(GTIN("0-4000101-6136-00"))) 04000101613600 ``` Given a an *int* for the parameter *raw*, the length defaults to 14. ```python >>> from gtin import GTIN ... print(str(GTIN(raw=7447010150))) 00074470101505 >>> print(str(GTIN(74470101505))) 00074470101505 ``` Given a GTIN, and a length: ```python >>> from gtin import GTIN ... print(str(GTIN(raw=7447010150,length=12))) 074470101505 >>> print(str(GTIN(74470101505,length=12))) 074470101505 >>> from gtin import GTIN ... print(str(GTIN("74470101505",length=14))) 00074470101505 ``` Get the GCP of a GTIN: ```python >>> from gtin import GTIN ... print(GTIN("00041333704647").gcp) 0041333 >>> print(GTIN("00811068011972").gcp) 081106801 >>> from gtin import GTIN ... print(GTIN("00188781000171").gcp) 0188781000 ``` Get the component parts of a *GTIN* instance as a tuple containing *GTIN.indicator_digit*, *GTIN.gcp*, *GTIN.item_reference*, and *GTIN.check_digit*: ```python >>> from gtin import GTIN ... print(tuple(GTIN(raw="0400010161360"))) ("0", "4000101", "61360", "0") ``` ## Notes Concerning GCP If inferring a correct GCP (GS1 Company Prefix) is important for your usage, you should update this package periodically: ```shell pip3 install --upgrade gtin ``` Why? Because GCP allocation is subject to change. When the GS1 (the organization which governs GCP allocation) publishes a new *GCP Prefix Format List* (an XML document specifying GCP lengths according to variable-length prefix blocks), a new distribution of this package is automatically packaged and distributed to [pypi.org](https://pypi.org) *with* the new *GCP Prefix Format List*. If you have the most recent version of this package, you will be calculating GCPs based on the most recent *GCP Prefix Format List*. %package -n python3-gtin Summary: Parse GTINs (also known as UPC/EAN/JAN/ISBN) Provides: python-gtin BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-gtin # gtin [![tests](https://github.com/enorganic/gtin/actions/workflows/test-distribute.yml/badge.svg?branch=master)](https://github.com/enorganic/gtin/actions/workflows/test-distribute.yml) [![CodeQL](https://github.com/enorganic/gtin/actions/workflows/codeql-analysis.yml/badge.svg?branch=master)](https://github.com/enorganic/gtin/actions/workflows/codeql-analysis.yml) A library and CLI for parsing and validating GTINs ("Global Trade Item Numbers"—also known as UPC/EAN/JAN/ISBN). ## Installation ```shell pip3 install gtin ``` ## Usage This package can be used as a CLI (command-line-interface) or library. Please see the [Notes Concerning GCP](#notes-concerning-gcp) if calculating a correct GCP is important to your usage. ### CLI #### gtin ccd | gtin calculate-check-digit ```shell $ gtin ccd -h usage: gtin calculate-check-digit [-h] GTIN gtin ccd [-h] GTIN positional arguments: GTIN A GTIN without the check-digit optional arguments: -h, --help show this help message and exit ``` #### gtin acd | gtin append-check-digit ```shell $ gtin acd -h usage: gtin append-check-digit [-h] [-l LENGTH] GTIN gtin acd [-h] [-l LENGTH] GTIN positional arguments: GTIN A GTIN without the check-digit optional arguments: -h, --help show this help message and exit -l LENGTH, --length LENGTH The length of GTIN to return ``` #### gtin vcd | gtin validate-check-digit ```shell $ gtin vcd -h usage: gtin validate-check-digit [-h] GTIN gtin vcd [-h] GTIN If the provided GTIN is *invalid*, this command will terminate with a non-zero exit status. positional arguments: GTIN A GTIN *with* check-digit optional arguments: -h, --help show this help message and exit ``` #### gtin hvcd | gtin has-valid-check-digit ```shell $ gtin hvcd -h usage: gtin has-valid-check-digit [-h] GTIN gtin hvcd [-h] GTIN If the provided GTIN is *valid*, this command will return "YES". If the provided GTIN is *invalid*, this command will return "NO". positional arguments: GTIN A GTIN *with* check-digit optional arguments: -h, --help show this help message and exit ``` #### gtin gcp | gtin get-gcp ```shell $ gtin gcp -h usage: gtin get-gcp [-h] GTIN gtin gcp [-h] GTIN positional arguments: GTIN A GTIN *with* check-digit optional arguments: -h, --help show this help message and exit ``` ### Library #### gtin.calculate_check_digit This function accepts a GTIN *without* check-digit and returns the check-digit. Parameters: - unchecked_gtin (str|int): A GTIN *without* check-digit Note: If the provided `unchecked_gtin` is a `str`, the returned value is a `str`. If the provided `unchecked_gtin` is an `int`, the returned value is an `int`. Example: ```python >>> from gtin import calculate_check_digit ... calculate_check_digit("02345678901289") '4' >>> calculate_check_digit(2345678901289) 4 ``` #### gtin.append_check_digit This function accepts a GTIN *without* check-digit and returns the same GTIN with a check-digit appended. Note: If the provided `unchecked_gtin` is a `str`, the returned value is a `str`. If the provided `unchecked_gtin` is an `int`, the returned value is an `int`. Parameters: - unchecked_gtin (str|int): A GTIN *without* check-digit Example: ```python >>> from gtin import append_check_digit ... append_check_digit("02345678901289") '023456789012894' >>> append_check_digit(2345678901289) 23456789012894 ``` #### gtin.has_valid_check_digit This function accepts a GTIN *with* check-digit and returns `True` if the check-digit is valid, or `False` if the check-digit is invalid. ```python >>> from gtin import has_valid_check_digit ... has_valid_check_digit("02345678901289") True >>> has_valid_check_digit(2345678901281) False 23456789012894 ``` #### gtin.validate_check_digit This function accepts a GTIN *with* check-digit and raises a `gtin.CheckDigitError` if the provided GTIN's check-digit is invalid. ```python >>> from gtin import validate_check_digit ... validate_check_digit("02345678901289") >>> validate_check_digit("02345678901281") Traceback (most recent call last): File "", line 1, in File "/Users/David/Code/gtin/gtin/__init__.py", line 159, in validate_check_digit raise CheckDigitError(gtin, check_digit) gtin.CheckDigitError: "02345678901281" is not a valid GTIN, the last digit is "1", whereas the correct check-digit would be "9". ``` #### gtin.get_gcp This function accepts a GTIN *with check-digit* and returns the GCP (GS1 Company Prefix). ```python >>> from gtin import get_gcp ... get_gcp("00332100000001") '033210' >>> get_gcp(332100000001) '033210' ``` #### gtin.GTIN This class represents a Global Trade Item Number, and can be used to: - Identify a trade item's Indicator-Digit, GCP (GS1 Company Prefix), Item Reference, and Check-Digit. - Validate a GTIN's check-digit. - Calculate a check-digit from a raw GTIN. **Parameters**: - **gtin** (str|int): A string or number representing a GTIN, including the check-digit. - When the *gtin* parameter is provided, the last (rightmost) digit is used to validate the GTIN. - **length** (int): The length of the GTIN. - If no value is provided for *length*, and *gtin* is a *str*—*length* is inferred based on the character length of *gtin*. - If no value is passed for *length*, *gtin* is *None*, and *raw* is a *str*—*length* is inferred based on the length of *raw* (adding 1, to account for the absent check-digit). - If no length is passed, and none can be inferred from *gtin* or *raw*, *length* defaults to 14. - **raw** (str|int): A string or number representing the GTIN, excluding the check-digit. - If a value is provided for the parameter *gtin*, this parameter is not used, but is instead derived from *gtin*. An instance of `GTIN` has the following properties: - **indicator_digit** (str): This is the first (leftmost) digit of a GTIN-14. - "0" indicates a base unit. - "1" through "8" are used to define the packaging hierarchy of a product with the same item reference. - "9" indicates a variable-measure trade item. - **gcp** (str): The GCP (GS1 Company Prefix) is a globally unique identifier assigned to an entity (usually a company) by GS1 Member Organizations, in order to create identifiers within the GS1 System. Company Prefixes, which vary in length, are comprised of a GS1 Member Organization Prefix followed by a company/entity-specific number. - **item_reference** (str): The item reference is the part of the GTIN that is allocated by a GS1 entity to identify a trade item. An item reference varies in length as a function of a GTIN's GCP length. - **check_digit** (str): The last digit in the GTIN when cast as a `str`, the check-digit is a mod-10 algorithm digit used to check for input errors. To understand how this digit is calculated, refer to: http://www.gs1.org/how-calculate-check-digit-manually. - **length** (int): The number of characters comprising the GTIN (*including* the check-digit). ##### Examples A *GTIN* initialized without any arguments: ```python >>> from gtin import GTIN ... print(repr(GTIN())) gtin.GTIN("00000000000000") ``` Typical usage will require converting your *GTIN* to a *str* prior to use in your application. ```python >>> from gtin import GTIN ... print(str(GTIN())) 00000000000000 ``` Given a raw GTIN, the check-digit is calculated and appended. ```python >>> from gtin import GTIN ... print(str(GTIN(raw="0978289450809"))) 09782894508091 ``` Given a valid GTIN *str* for *gtin*, the return value of *str(GTIN(gtin))* is equal to *gtin*. ```python >>> from gtin import GTIN ... print(str(GTIN("04000101613600"))) 04000101613600 ``` Non-numeric characters are ignored/discarded. ```python >>> from gtin import GTIN ... print(str(GTIN("0-4000101-6136-00"))) 04000101613600 ``` Given a an *int* for the parameter *raw*, the length defaults to 14. ```python >>> from gtin import GTIN ... print(str(GTIN(raw=7447010150))) 00074470101505 >>> print(str(GTIN(74470101505))) 00074470101505 ``` Given a GTIN, and a length: ```python >>> from gtin import GTIN ... print(str(GTIN(raw=7447010150,length=12))) 074470101505 >>> print(str(GTIN(74470101505,length=12))) 074470101505 >>> from gtin import GTIN ... print(str(GTIN("74470101505",length=14))) 00074470101505 ``` Get the GCP of a GTIN: ```python >>> from gtin import GTIN ... print(GTIN("00041333704647").gcp) 0041333 >>> print(GTIN("00811068011972").gcp) 081106801 >>> from gtin import GTIN ... print(GTIN("00188781000171").gcp) 0188781000 ``` Get the component parts of a *GTIN* instance as a tuple containing *GTIN.indicator_digit*, *GTIN.gcp*, *GTIN.item_reference*, and *GTIN.check_digit*: ```python >>> from gtin import GTIN ... print(tuple(GTIN(raw="0400010161360"))) ("0", "4000101", "61360", "0") ``` ## Notes Concerning GCP If inferring a correct GCP (GS1 Company Prefix) is important for your usage, you should update this package periodically: ```shell pip3 install --upgrade gtin ``` Why? Because GCP allocation is subject to change. When the GS1 (the organization which governs GCP allocation) publishes a new *GCP Prefix Format List* (an XML document specifying GCP lengths according to variable-length prefix blocks), a new distribution of this package is automatically packaged and distributed to [pypi.org](https://pypi.org) *with* the new *GCP Prefix Format List*. If you have the most recent version of this package, you will be calculating GCPs based on the most recent *GCP Prefix Format List*. %package help Summary: Development documents and examples for gtin Provides: python3-gtin-doc %description help # gtin [![tests](https://github.com/enorganic/gtin/actions/workflows/test-distribute.yml/badge.svg?branch=master)](https://github.com/enorganic/gtin/actions/workflows/test-distribute.yml) [![CodeQL](https://github.com/enorganic/gtin/actions/workflows/codeql-analysis.yml/badge.svg?branch=master)](https://github.com/enorganic/gtin/actions/workflows/codeql-analysis.yml) A library and CLI for parsing and validating GTINs ("Global Trade Item Numbers"—also known as UPC/EAN/JAN/ISBN). ## Installation ```shell pip3 install gtin ``` ## Usage This package can be used as a CLI (command-line-interface) or library. Please see the [Notes Concerning GCP](#notes-concerning-gcp) if calculating a correct GCP is important to your usage. ### CLI #### gtin ccd | gtin calculate-check-digit ```shell $ gtin ccd -h usage: gtin calculate-check-digit [-h] GTIN gtin ccd [-h] GTIN positional arguments: GTIN A GTIN without the check-digit optional arguments: -h, --help show this help message and exit ``` #### gtin acd | gtin append-check-digit ```shell $ gtin acd -h usage: gtin append-check-digit [-h] [-l LENGTH] GTIN gtin acd [-h] [-l LENGTH] GTIN positional arguments: GTIN A GTIN without the check-digit optional arguments: -h, --help show this help message and exit -l LENGTH, --length LENGTH The length of GTIN to return ``` #### gtin vcd | gtin validate-check-digit ```shell $ gtin vcd -h usage: gtin validate-check-digit [-h] GTIN gtin vcd [-h] GTIN If the provided GTIN is *invalid*, this command will terminate with a non-zero exit status. positional arguments: GTIN A GTIN *with* check-digit optional arguments: -h, --help show this help message and exit ``` #### gtin hvcd | gtin has-valid-check-digit ```shell $ gtin hvcd -h usage: gtin has-valid-check-digit [-h] GTIN gtin hvcd [-h] GTIN If the provided GTIN is *valid*, this command will return "YES". If the provided GTIN is *invalid*, this command will return "NO". positional arguments: GTIN A GTIN *with* check-digit optional arguments: -h, --help show this help message and exit ``` #### gtin gcp | gtin get-gcp ```shell $ gtin gcp -h usage: gtin get-gcp [-h] GTIN gtin gcp [-h] GTIN positional arguments: GTIN A GTIN *with* check-digit optional arguments: -h, --help show this help message and exit ``` ### Library #### gtin.calculate_check_digit This function accepts a GTIN *without* check-digit and returns the check-digit. Parameters: - unchecked_gtin (str|int): A GTIN *without* check-digit Note: If the provided `unchecked_gtin` is a `str`, the returned value is a `str`. If the provided `unchecked_gtin` is an `int`, the returned value is an `int`. Example: ```python >>> from gtin import calculate_check_digit ... calculate_check_digit("02345678901289") '4' >>> calculate_check_digit(2345678901289) 4 ``` #### gtin.append_check_digit This function accepts a GTIN *without* check-digit and returns the same GTIN with a check-digit appended. Note: If the provided `unchecked_gtin` is a `str`, the returned value is a `str`. If the provided `unchecked_gtin` is an `int`, the returned value is an `int`. Parameters: - unchecked_gtin (str|int): A GTIN *without* check-digit Example: ```python >>> from gtin import append_check_digit ... append_check_digit("02345678901289") '023456789012894' >>> append_check_digit(2345678901289) 23456789012894 ``` #### gtin.has_valid_check_digit This function accepts a GTIN *with* check-digit and returns `True` if the check-digit is valid, or `False` if the check-digit is invalid. ```python >>> from gtin import has_valid_check_digit ... has_valid_check_digit("02345678901289") True >>> has_valid_check_digit(2345678901281) False 23456789012894 ``` #### gtin.validate_check_digit This function accepts a GTIN *with* check-digit and raises a `gtin.CheckDigitError` if the provided GTIN's check-digit is invalid. ```python >>> from gtin import validate_check_digit ... validate_check_digit("02345678901289") >>> validate_check_digit("02345678901281") Traceback (most recent call last): File "", line 1, in File "/Users/David/Code/gtin/gtin/__init__.py", line 159, in validate_check_digit raise CheckDigitError(gtin, check_digit) gtin.CheckDigitError: "02345678901281" is not a valid GTIN, the last digit is "1", whereas the correct check-digit would be "9". ``` #### gtin.get_gcp This function accepts a GTIN *with check-digit* and returns the GCP (GS1 Company Prefix). ```python >>> from gtin import get_gcp ... get_gcp("00332100000001") '033210' >>> get_gcp(332100000001) '033210' ``` #### gtin.GTIN This class represents a Global Trade Item Number, and can be used to: - Identify a trade item's Indicator-Digit, GCP (GS1 Company Prefix), Item Reference, and Check-Digit. - Validate a GTIN's check-digit. - Calculate a check-digit from a raw GTIN. **Parameters**: - **gtin** (str|int): A string or number representing a GTIN, including the check-digit. - When the *gtin* parameter is provided, the last (rightmost) digit is used to validate the GTIN. - **length** (int): The length of the GTIN. - If no value is provided for *length*, and *gtin* is a *str*—*length* is inferred based on the character length of *gtin*. - If no value is passed for *length*, *gtin* is *None*, and *raw* is a *str*—*length* is inferred based on the length of *raw* (adding 1, to account for the absent check-digit). - If no length is passed, and none can be inferred from *gtin* or *raw*, *length* defaults to 14. - **raw** (str|int): A string or number representing the GTIN, excluding the check-digit. - If a value is provided for the parameter *gtin*, this parameter is not used, but is instead derived from *gtin*. An instance of `GTIN` has the following properties: - **indicator_digit** (str): This is the first (leftmost) digit of a GTIN-14. - "0" indicates a base unit. - "1" through "8" are used to define the packaging hierarchy of a product with the same item reference. - "9" indicates a variable-measure trade item. - **gcp** (str): The GCP (GS1 Company Prefix) is a globally unique identifier assigned to an entity (usually a company) by GS1 Member Organizations, in order to create identifiers within the GS1 System. Company Prefixes, which vary in length, are comprised of a GS1 Member Organization Prefix followed by a company/entity-specific number. - **item_reference** (str): The item reference is the part of the GTIN that is allocated by a GS1 entity to identify a trade item. An item reference varies in length as a function of a GTIN's GCP length. - **check_digit** (str): The last digit in the GTIN when cast as a `str`, the check-digit is a mod-10 algorithm digit used to check for input errors. To understand how this digit is calculated, refer to: http://www.gs1.org/how-calculate-check-digit-manually. - **length** (int): The number of characters comprising the GTIN (*including* the check-digit). ##### Examples A *GTIN* initialized without any arguments: ```python >>> from gtin import GTIN ... print(repr(GTIN())) gtin.GTIN("00000000000000") ``` Typical usage will require converting your *GTIN* to a *str* prior to use in your application. ```python >>> from gtin import GTIN ... print(str(GTIN())) 00000000000000 ``` Given a raw GTIN, the check-digit is calculated and appended. ```python >>> from gtin import GTIN ... print(str(GTIN(raw="0978289450809"))) 09782894508091 ``` Given a valid GTIN *str* for *gtin*, the return value of *str(GTIN(gtin))* is equal to *gtin*. ```python >>> from gtin import GTIN ... print(str(GTIN("04000101613600"))) 04000101613600 ``` Non-numeric characters are ignored/discarded. ```python >>> from gtin import GTIN ... print(str(GTIN("0-4000101-6136-00"))) 04000101613600 ``` Given a an *int* for the parameter *raw*, the length defaults to 14. ```python >>> from gtin import GTIN ... print(str(GTIN(raw=7447010150))) 00074470101505 >>> print(str(GTIN(74470101505))) 00074470101505 ``` Given a GTIN, and a length: ```python >>> from gtin import GTIN ... print(str(GTIN(raw=7447010150,length=12))) 074470101505 >>> print(str(GTIN(74470101505,length=12))) 074470101505 >>> from gtin import GTIN ... print(str(GTIN("74470101505",length=14))) 00074470101505 ``` Get the GCP of a GTIN: ```python >>> from gtin import GTIN ... print(GTIN("00041333704647").gcp) 0041333 >>> print(GTIN("00811068011972").gcp) 081106801 >>> from gtin import GTIN ... print(GTIN("00188781000171").gcp) 0188781000 ``` Get the component parts of a *GTIN* instance as a tuple containing *GTIN.indicator_digit*, *GTIN.gcp*, *GTIN.item_reference*, and *GTIN.check_digit*: ```python >>> from gtin import GTIN ... print(tuple(GTIN(raw="0400010161360"))) ("0", "4000101", "61360", "0") ``` ## Notes Concerning GCP If inferring a correct GCP (GS1 Company Prefix) is important for your usage, you should update this package periodically: ```shell pip3 install --upgrade gtin ``` Why? Because GCP allocation is subject to change. When the GS1 (the organization which governs GCP allocation) publishes a new *GCP Prefix Format List* (an XML document specifying GCP lengths according to variable-length prefix blocks), a new distribution of this package is automatically packaged and distributed to [pypi.org](https://pypi.org) *with* the new *GCP Prefix Format List*. If you have the most recent version of this package, you will be calculating GCPs based on the most recent *GCP Prefix Format List*. %prep %autosetup -n gtin-1.3.1649173518 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-gtin -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Fri May 05 2023 Python_Bot - 1.3.1649173518-1 - Package Spec generated