summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-05-05 11:05:55 +0000
committerCoprDistGit <infra@openeuler.org>2023-05-05 11:05:55 +0000
commit971dd602ce97ff51b44d6e40ce7d5efd556e954b (patch)
tree7c275d7437110a4846d4fa6f09541102e4d65ebf
parent79031903b2fd4162989a5c73ae7d9b6aaa898d07 (diff)
automatic import of python-gtinopeneuler20.03
-rw-r--r--.gitignore1
-rw-r--r--python-gtin.spec1176
-rw-r--r--sources1
3 files changed, 1178 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..8f52dfc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/gtin-1.3.1649173518.tar.gz
diff --git a/python-gtin.spec b/python-gtin.spec
new file mode 100644
index 0000000..01b5d13
--- /dev/null
+++ b/python-gtin.spec
@@ -0,0 +1,1176 @@
+%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 "<stdin>", line 1, in <module>
+ 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 "<stdin>", line 1, in <module>
+ 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 "<stdin>", line 1, in <module>
+ 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 <Python_Bot@openeuler.org> - 1.3.1649173518-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..11a5388
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+ad7b12adadecf6798435dbbf2b9f32e7 gtin-1.3.1649173518.tar.gz