diff options
Diffstat (limited to 'python-aws-error-utils.spec')
-rw-r--r-- | python-aws-error-utils.spec | 784 |
1 files changed, 784 insertions, 0 deletions
diff --git a/python-aws-error-utils.spec b/python-aws-error-utils.spec new file mode 100644 index 0000000..fefa09d --- /dev/null +++ b/python-aws-error-utils.spec @@ -0,0 +1,784 @@ +%global _empty_manifest_terminate_build 0 +Name: python-aws-error-utils +Version: 2.7.0 +Release: 1 +Summary: Error-handling functions for boto3/botocore +License: Apache-2.0 +URL: https://github.com/benkehoe/aws-error-utils +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/2a/fc/2541892cafad6658e9ce5226e54088eff9692cbe4a32cd5a7dfec5846cbf/aws_error_utils-2.7.0.tar.gz +BuildArch: noarch + +Requires: python3-botocore + +%description +# aws-error-utils +**Making botocore.exceptions.ClientError easier to deal with** + +All AWS service exceptions are raised by `boto3` as a `botocore.exceptions.ClientError`, with the contents of the exception indicating what kind of exception happened. +This is not very pythonic, and the contents themselves are rather opaque, most being held in dicts rather than as properties. +The functions in this package help dealing with that, to make your code less verbose and require less memorization of `ClientError` contents. + +## Installation + +[The package is on PyPI](https://pypi.org/project/aws-error-utils/) for pip-installing, but you can also just copy the [`aws_error_utils.py` file](https://raw.githubusercontent.com/benkehoe/aws-error-utils/stable/aws_error_utils/aws_error_utils.py) into your project (note that the standalone file requires Python 3.7 or greater). + +## Usage +If you've got code like this: + +```python +import boto3, botocore.exceptions + +s3 = boto3.client('s3') +try: + s3.get_object(Bucket='my-bucket', Key='example') +except botocore.exceptions.ClientError as error: + if error.response['Error']['Code'] == 'NoSuchBucket': + print(error.response['Error']['Message']) + # error handling + else: + raise +``` + +you can replace it with: + +```python +import boto3 +from aws_error_utils import errors + +s3 = boto3.client('s3') +try: + s3.get_object(Bucket='my-bucket', Key='example') +except errors.NoSuchBucket as error: +# or +# except catch_aws_error('NoSuchBucket') as error: + print(error.message) + # error handling +``` + +If you have trouble remembering where all the contents in `ClientError` are, like these: + +```python +client_error.response['Error']['Code'] +client_error.response['Error']['Message'] +client_error.response['ResponseMetadata']['HTTPStatusCode'] +client_error.operation_name +``` + +you can replace it with: + +```python +import boto3 +from aws_error_utils import get_aws_error_info + +err_info = get_aws_error_info(client_error) + +err_info.code +err_info.message +err_info.http_status_code +err_info.operation_name +``` + +If you're using `errors` or `catch_aws_error()`, you can skip the `get_aws_error_info()` step, because the fields are set directly on the `ClientError` object: + +```python +import boto3 +from aws_error_utils import errors + +s3 = boto3.client('s3') +try: + s3.get_object(Bucket='my-bucket', Key='example') +except errors.NoSuchBucket as error: + error.code + error.message + error.http_status_code + error.operation_name +``` + +Additionally, when you *do* need to use `ClientError`, it's imported by `aws_error_utils` so you can just use `aws_error_utils.ClientError` rather than `botocore.exceptions.ClientError` (the same is true for `BotoCoreError`, the base class of all non-`ClientError` exceptions). + +## `errors` +It's easiest to use the `errors` class if you don't have complex conditions to match. +Using the error code as a field name in an `except` block will match that error code. +Additionally, when you use this style, it sets the fields from `AWSErrorInfo` (see below) directly on the `ClientError` object. +For example: + +```python +import boto3 +from aws_error_utils import errors + +s3 = boto3.client('s3') +try: + s3.get_object(Bucket='my-bucket', Key='example') +except errors.NoSuchBucket as error: + print(error.message) + + # error handling +``` + +You can include multiple error codes in an `except` statement, though this is slower than combining them with a single `catch_aws_error()` call. + +```python +import boto3 +from aws_error_utils import errors + +s3 = boto3.client('s3') +try: + s3.get_object(Bucket='my-bucket', Key='example') +except (errors.NoSuchBucket, errors.NoSuchKey) as error: + print(error.message) + + # error handling +``` + +You can catch all `ClientError`s with `errors.ALL`. + +You can only use this style for error codes that work as Python property names. +For error codes like EC2's `InvalidInstanceID.NotFound`, you have to use `catch_aws_error()` (see below). + +Unfortunately, you cannot get tab completion for error codes on the `errors` class, as a comprehensive list of error codes is not available as a Python package (`botocore` has a small number, but they are few and incomplete). + +Note that the value of `errors.NoSuchBucket` is not an exception class representing the `NoSuchBucket` error, it is an alias for `catch_aws_error('NoSuchBucket')`. +It can only be used in an `except` statement; it will raise `RuntimeError` otherwise. +You also cannot instantiate the `errors` class. + +## `catch_aws_error()` +The function takes as input error code(s), and optionally operation name(s), to match against the current raised exception. If the exception matches, the `except` block is executed. +If your error handling still needs the error object, you can still use an `as` expression, otherwise it can be omitted (just `except catch_aws_error(...):`). +Additionally, `catch_aws_error()` sets the fields from `AWSErrorInfo` (see below) directly on the `ClientError` object. + +```python +import boto3 +from aws_error_utils import catch_aws_error + +s3 = boto3.client('s3') +try: + s3.get_object(Bucket='my-bucket', Key='example') +except catch_aws_error('NoSuchBucket') as error: + print(error.message) + + # error handling +``` + +You can provide error codes either as positional args, or as the `code` keyword argument with either as a single string or a list of strings. + +```python +catch_aws_error('NoSuchBucket') +catch_aws_error(code='NoSuchBucket') + +catch_aws_error('NoSuchBucket', 'NoSuchKey') +catch_aws_error(code=['NoSuchBucket', 'NoSuchKey']) +``` + +If there are multiple API calls in the `try` block, and you want to match against specific ones, the `operation_name` keyword argument can help. +Similar to the `code` keyword argument, the operation name(s) can be provided as either as a single string or a list of strings. + +```python +import boto3 +from aws_error_utils import catch_aws_error + +try: + s3 = boto3.client('s3') + s3.list_objects_v2(Bucket='bucket-1') + s3.get_object(Bucket='bucket-2', Key='example') +except catch_aws_error('NoSuchBucket', operation_name='GetObject') as error: + # This will be executed if the GetObject operation raises NoSuchBucket + # but not if the ListObjects operation raises it +``` + +You must provide an error code. +To match exclusively against operation name, use the `aws_error_utils.ALL_CODES` token. +For completeness, there is also an `ALL_OPERATIONS` token. + +```python +import boto3 +from aws_error_utils import catch_aws_error + +try: + s3 = boto3.client('s3') + s3.list_objects_v2(Bucket='bucket-1') + s3.get_object(Bucket='bucket-1', Key='example') +except catch_aws_error(ALL_CODES, operation_name='ListObjectsV2') as e: + # This will execute for all ClientError exceptions raised by the ListObjectsV2 call +``` + +For more complex conditions, instead of providing error codes and operation names, you can provide a callable to evaluate the exception. +Note that unlike error codes, you can only provide a single callable. + +```python +import re +import boto3 +from aws_error_utils import catch_aws_error, get_aws_error_info + +def matcher(e): + info = get_aws_error_info(e) + return re.search('does not exist', info.message) + +try: + s3 = boto3.client('s3') + s3.list_objects_v2(Bucket='bucket-1') +except catch_aws_error(matcher) as e: + # This will be executed if e is a ClientError and matcher(e) returns True + # Note the callable can assume the exception is a ClientError +``` + +## `get_aws_error_info()` +This function takes a returns an `AWSErrorInfo` object, which is a `collections.NamedTuple` with the following fields: + +* `code` +* `message` +* `http_status_code` +* `operation_name` +* `response` (the raw response dictionary) + +If you're not modifying your `except` statements to use `catch_aws_error()`, this function can be useful instead of remembering exactly how this information is stored in the `ClientError` object. + +If you're using `catch_aws_error()`, this function isn't necessary, because it sets these fields directly on the `ClientError` object. + +## `aws_error_matches()` +This is the matching logic behind `catch_aws_error()`. +It takes a `ClientError`, with the rest of the arguments being error codes and operation names identical to `catch_aws_error()`, except that it does not support providing a callable. + +## `make_aws_error()` +For testing, you can create `ClientError`s with the `make_aws_error()` function, which takes the following arguments: +* `code` (required) +* `message` (required) +* `operation_name` (required) +* `http_status_code` +* `response` + +If a `response` dict is provided, it will be copied rather than modified. + + + +%package -n python3-aws-error-utils +Summary: Error-handling functions for boto3/botocore +Provides: python-aws-error-utils +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-aws-error-utils +# aws-error-utils +**Making botocore.exceptions.ClientError easier to deal with** + +All AWS service exceptions are raised by `boto3` as a `botocore.exceptions.ClientError`, with the contents of the exception indicating what kind of exception happened. +This is not very pythonic, and the contents themselves are rather opaque, most being held in dicts rather than as properties. +The functions in this package help dealing with that, to make your code less verbose and require less memorization of `ClientError` contents. + +## Installation + +[The package is on PyPI](https://pypi.org/project/aws-error-utils/) for pip-installing, but you can also just copy the [`aws_error_utils.py` file](https://raw.githubusercontent.com/benkehoe/aws-error-utils/stable/aws_error_utils/aws_error_utils.py) into your project (note that the standalone file requires Python 3.7 or greater). + +## Usage +If you've got code like this: + +```python +import boto3, botocore.exceptions + +s3 = boto3.client('s3') +try: + s3.get_object(Bucket='my-bucket', Key='example') +except botocore.exceptions.ClientError as error: + if error.response['Error']['Code'] == 'NoSuchBucket': + print(error.response['Error']['Message']) + # error handling + else: + raise +``` + +you can replace it with: + +```python +import boto3 +from aws_error_utils import errors + +s3 = boto3.client('s3') +try: + s3.get_object(Bucket='my-bucket', Key='example') +except errors.NoSuchBucket as error: +# or +# except catch_aws_error('NoSuchBucket') as error: + print(error.message) + # error handling +``` + +If you have trouble remembering where all the contents in `ClientError` are, like these: + +```python +client_error.response['Error']['Code'] +client_error.response['Error']['Message'] +client_error.response['ResponseMetadata']['HTTPStatusCode'] +client_error.operation_name +``` + +you can replace it with: + +```python +import boto3 +from aws_error_utils import get_aws_error_info + +err_info = get_aws_error_info(client_error) + +err_info.code +err_info.message +err_info.http_status_code +err_info.operation_name +``` + +If you're using `errors` or `catch_aws_error()`, you can skip the `get_aws_error_info()` step, because the fields are set directly on the `ClientError` object: + +```python +import boto3 +from aws_error_utils import errors + +s3 = boto3.client('s3') +try: + s3.get_object(Bucket='my-bucket', Key='example') +except errors.NoSuchBucket as error: + error.code + error.message + error.http_status_code + error.operation_name +``` + +Additionally, when you *do* need to use `ClientError`, it's imported by `aws_error_utils` so you can just use `aws_error_utils.ClientError` rather than `botocore.exceptions.ClientError` (the same is true for `BotoCoreError`, the base class of all non-`ClientError` exceptions). + +## `errors` +It's easiest to use the `errors` class if you don't have complex conditions to match. +Using the error code as a field name in an `except` block will match that error code. +Additionally, when you use this style, it sets the fields from `AWSErrorInfo` (see below) directly on the `ClientError` object. +For example: + +```python +import boto3 +from aws_error_utils import errors + +s3 = boto3.client('s3') +try: + s3.get_object(Bucket='my-bucket', Key='example') +except errors.NoSuchBucket as error: + print(error.message) + + # error handling +``` + +You can include multiple error codes in an `except` statement, though this is slower than combining them with a single `catch_aws_error()` call. + +```python +import boto3 +from aws_error_utils import errors + +s3 = boto3.client('s3') +try: + s3.get_object(Bucket='my-bucket', Key='example') +except (errors.NoSuchBucket, errors.NoSuchKey) as error: + print(error.message) + + # error handling +``` + +You can catch all `ClientError`s with `errors.ALL`. + +You can only use this style for error codes that work as Python property names. +For error codes like EC2's `InvalidInstanceID.NotFound`, you have to use `catch_aws_error()` (see below). + +Unfortunately, you cannot get tab completion for error codes on the `errors` class, as a comprehensive list of error codes is not available as a Python package (`botocore` has a small number, but they are few and incomplete). + +Note that the value of `errors.NoSuchBucket` is not an exception class representing the `NoSuchBucket` error, it is an alias for `catch_aws_error('NoSuchBucket')`. +It can only be used in an `except` statement; it will raise `RuntimeError` otherwise. +You also cannot instantiate the `errors` class. + +## `catch_aws_error()` +The function takes as input error code(s), and optionally operation name(s), to match against the current raised exception. If the exception matches, the `except` block is executed. +If your error handling still needs the error object, you can still use an `as` expression, otherwise it can be omitted (just `except catch_aws_error(...):`). +Additionally, `catch_aws_error()` sets the fields from `AWSErrorInfo` (see below) directly on the `ClientError` object. + +```python +import boto3 +from aws_error_utils import catch_aws_error + +s3 = boto3.client('s3') +try: + s3.get_object(Bucket='my-bucket', Key='example') +except catch_aws_error('NoSuchBucket') as error: + print(error.message) + + # error handling +``` + +You can provide error codes either as positional args, or as the `code` keyword argument with either as a single string or a list of strings. + +```python +catch_aws_error('NoSuchBucket') +catch_aws_error(code='NoSuchBucket') + +catch_aws_error('NoSuchBucket', 'NoSuchKey') +catch_aws_error(code=['NoSuchBucket', 'NoSuchKey']) +``` + +If there are multiple API calls in the `try` block, and you want to match against specific ones, the `operation_name` keyword argument can help. +Similar to the `code` keyword argument, the operation name(s) can be provided as either as a single string or a list of strings. + +```python +import boto3 +from aws_error_utils import catch_aws_error + +try: + s3 = boto3.client('s3') + s3.list_objects_v2(Bucket='bucket-1') + s3.get_object(Bucket='bucket-2', Key='example') +except catch_aws_error('NoSuchBucket', operation_name='GetObject') as error: + # This will be executed if the GetObject operation raises NoSuchBucket + # but not if the ListObjects operation raises it +``` + +You must provide an error code. +To match exclusively against operation name, use the `aws_error_utils.ALL_CODES` token. +For completeness, there is also an `ALL_OPERATIONS` token. + +```python +import boto3 +from aws_error_utils import catch_aws_error + +try: + s3 = boto3.client('s3') + s3.list_objects_v2(Bucket='bucket-1') + s3.get_object(Bucket='bucket-1', Key='example') +except catch_aws_error(ALL_CODES, operation_name='ListObjectsV2') as e: + # This will execute for all ClientError exceptions raised by the ListObjectsV2 call +``` + +For more complex conditions, instead of providing error codes and operation names, you can provide a callable to evaluate the exception. +Note that unlike error codes, you can only provide a single callable. + +```python +import re +import boto3 +from aws_error_utils import catch_aws_error, get_aws_error_info + +def matcher(e): + info = get_aws_error_info(e) + return re.search('does not exist', info.message) + +try: + s3 = boto3.client('s3') + s3.list_objects_v2(Bucket='bucket-1') +except catch_aws_error(matcher) as e: + # This will be executed if e is a ClientError and matcher(e) returns True + # Note the callable can assume the exception is a ClientError +``` + +## `get_aws_error_info()` +This function takes a returns an `AWSErrorInfo` object, which is a `collections.NamedTuple` with the following fields: + +* `code` +* `message` +* `http_status_code` +* `operation_name` +* `response` (the raw response dictionary) + +If you're not modifying your `except` statements to use `catch_aws_error()`, this function can be useful instead of remembering exactly how this information is stored in the `ClientError` object. + +If you're using `catch_aws_error()`, this function isn't necessary, because it sets these fields directly on the `ClientError` object. + +## `aws_error_matches()` +This is the matching logic behind `catch_aws_error()`. +It takes a `ClientError`, with the rest of the arguments being error codes and operation names identical to `catch_aws_error()`, except that it does not support providing a callable. + +## `make_aws_error()` +For testing, you can create `ClientError`s with the `make_aws_error()` function, which takes the following arguments: +* `code` (required) +* `message` (required) +* `operation_name` (required) +* `http_status_code` +* `response` + +If a `response` dict is provided, it will be copied rather than modified. + + + +%package help +Summary: Development documents and examples for aws-error-utils +Provides: python3-aws-error-utils-doc +%description help +# aws-error-utils +**Making botocore.exceptions.ClientError easier to deal with** + +All AWS service exceptions are raised by `boto3` as a `botocore.exceptions.ClientError`, with the contents of the exception indicating what kind of exception happened. +This is not very pythonic, and the contents themselves are rather opaque, most being held in dicts rather than as properties. +The functions in this package help dealing with that, to make your code less verbose and require less memorization of `ClientError` contents. + +## Installation + +[The package is on PyPI](https://pypi.org/project/aws-error-utils/) for pip-installing, but you can also just copy the [`aws_error_utils.py` file](https://raw.githubusercontent.com/benkehoe/aws-error-utils/stable/aws_error_utils/aws_error_utils.py) into your project (note that the standalone file requires Python 3.7 or greater). + +## Usage +If you've got code like this: + +```python +import boto3, botocore.exceptions + +s3 = boto3.client('s3') +try: + s3.get_object(Bucket='my-bucket', Key='example') +except botocore.exceptions.ClientError as error: + if error.response['Error']['Code'] == 'NoSuchBucket': + print(error.response['Error']['Message']) + # error handling + else: + raise +``` + +you can replace it with: + +```python +import boto3 +from aws_error_utils import errors + +s3 = boto3.client('s3') +try: + s3.get_object(Bucket='my-bucket', Key='example') +except errors.NoSuchBucket as error: +# or +# except catch_aws_error('NoSuchBucket') as error: + print(error.message) + # error handling +``` + +If you have trouble remembering where all the contents in `ClientError` are, like these: + +```python +client_error.response['Error']['Code'] +client_error.response['Error']['Message'] +client_error.response['ResponseMetadata']['HTTPStatusCode'] +client_error.operation_name +``` + +you can replace it with: + +```python +import boto3 +from aws_error_utils import get_aws_error_info + +err_info = get_aws_error_info(client_error) + +err_info.code +err_info.message +err_info.http_status_code +err_info.operation_name +``` + +If you're using `errors` or `catch_aws_error()`, you can skip the `get_aws_error_info()` step, because the fields are set directly on the `ClientError` object: + +```python +import boto3 +from aws_error_utils import errors + +s3 = boto3.client('s3') +try: + s3.get_object(Bucket='my-bucket', Key='example') +except errors.NoSuchBucket as error: + error.code + error.message + error.http_status_code + error.operation_name +``` + +Additionally, when you *do* need to use `ClientError`, it's imported by `aws_error_utils` so you can just use `aws_error_utils.ClientError` rather than `botocore.exceptions.ClientError` (the same is true for `BotoCoreError`, the base class of all non-`ClientError` exceptions). + +## `errors` +It's easiest to use the `errors` class if you don't have complex conditions to match. +Using the error code as a field name in an `except` block will match that error code. +Additionally, when you use this style, it sets the fields from `AWSErrorInfo` (see below) directly on the `ClientError` object. +For example: + +```python +import boto3 +from aws_error_utils import errors + +s3 = boto3.client('s3') +try: + s3.get_object(Bucket='my-bucket', Key='example') +except errors.NoSuchBucket as error: + print(error.message) + + # error handling +``` + +You can include multiple error codes in an `except` statement, though this is slower than combining them with a single `catch_aws_error()` call. + +```python +import boto3 +from aws_error_utils import errors + +s3 = boto3.client('s3') +try: + s3.get_object(Bucket='my-bucket', Key='example') +except (errors.NoSuchBucket, errors.NoSuchKey) as error: + print(error.message) + + # error handling +``` + +You can catch all `ClientError`s with `errors.ALL`. + +You can only use this style for error codes that work as Python property names. +For error codes like EC2's `InvalidInstanceID.NotFound`, you have to use `catch_aws_error()` (see below). + +Unfortunately, you cannot get tab completion for error codes on the `errors` class, as a comprehensive list of error codes is not available as a Python package (`botocore` has a small number, but they are few and incomplete). + +Note that the value of `errors.NoSuchBucket` is not an exception class representing the `NoSuchBucket` error, it is an alias for `catch_aws_error('NoSuchBucket')`. +It can only be used in an `except` statement; it will raise `RuntimeError` otherwise. +You also cannot instantiate the `errors` class. + +## `catch_aws_error()` +The function takes as input error code(s), and optionally operation name(s), to match against the current raised exception. If the exception matches, the `except` block is executed. +If your error handling still needs the error object, you can still use an `as` expression, otherwise it can be omitted (just `except catch_aws_error(...):`). +Additionally, `catch_aws_error()` sets the fields from `AWSErrorInfo` (see below) directly on the `ClientError` object. + +```python +import boto3 +from aws_error_utils import catch_aws_error + +s3 = boto3.client('s3') +try: + s3.get_object(Bucket='my-bucket', Key='example') +except catch_aws_error('NoSuchBucket') as error: + print(error.message) + + # error handling +``` + +You can provide error codes either as positional args, or as the `code` keyword argument with either as a single string or a list of strings. + +```python +catch_aws_error('NoSuchBucket') +catch_aws_error(code='NoSuchBucket') + +catch_aws_error('NoSuchBucket', 'NoSuchKey') +catch_aws_error(code=['NoSuchBucket', 'NoSuchKey']) +``` + +If there are multiple API calls in the `try` block, and you want to match against specific ones, the `operation_name` keyword argument can help. +Similar to the `code` keyword argument, the operation name(s) can be provided as either as a single string or a list of strings. + +```python +import boto3 +from aws_error_utils import catch_aws_error + +try: + s3 = boto3.client('s3') + s3.list_objects_v2(Bucket='bucket-1') + s3.get_object(Bucket='bucket-2', Key='example') +except catch_aws_error('NoSuchBucket', operation_name='GetObject') as error: + # This will be executed if the GetObject operation raises NoSuchBucket + # but not if the ListObjects operation raises it +``` + +You must provide an error code. +To match exclusively against operation name, use the `aws_error_utils.ALL_CODES` token. +For completeness, there is also an `ALL_OPERATIONS` token. + +```python +import boto3 +from aws_error_utils import catch_aws_error + +try: + s3 = boto3.client('s3') + s3.list_objects_v2(Bucket='bucket-1') + s3.get_object(Bucket='bucket-1', Key='example') +except catch_aws_error(ALL_CODES, operation_name='ListObjectsV2') as e: + # This will execute for all ClientError exceptions raised by the ListObjectsV2 call +``` + +For more complex conditions, instead of providing error codes and operation names, you can provide a callable to evaluate the exception. +Note that unlike error codes, you can only provide a single callable. + +```python +import re +import boto3 +from aws_error_utils import catch_aws_error, get_aws_error_info + +def matcher(e): + info = get_aws_error_info(e) + return re.search('does not exist', info.message) + +try: + s3 = boto3.client('s3') + s3.list_objects_v2(Bucket='bucket-1') +except catch_aws_error(matcher) as e: + # This will be executed if e is a ClientError and matcher(e) returns True + # Note the callable can assume the exception is a ClientError +``` + +## `get_aws_error_info()` +This function takes a returns an `AWSErrorInfo` object, which is a `collections.NamedTuple` with the following fields: + +* `code` +* `message` +* `http_status_code` +* `operation_name` +* `response` (the raw response dictionary) + +If you're not modifying your `except` statements to use `catch_aws_error()`, this function can be useful instead of remembering exactly how this information is stored in the `ClientError` object. + +If you're using `catch_aws_error()`, this function isn't necessary, because it sets these fields directly on the `ClientError` object. + +## `aws_error_matches()` +This is the matching logic behind `catch_aws_error()`. +It takes a `ClientError`, with the rest of the arguments being error codes and operation names identical to `catch_aws_error()`, except that it does not support providing a callable. + +## `make_aws_error()` +For testing, you can create `ClientError`s with the `make_aws_error()` function, which takes the following arguments: +* `code` (required) +* `message` (required) +* `operation_name` (required) +* `http_status_code` +* `response` + +If a `response` dict is provided, it will be copied rather than modified. + + + +%prep +%autosetup -n aws-error-utils-2.7.0 + +%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-aws-error-utils -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Tue Apr 11 2023 Python_Bot <Python_Bot@openeuler.org> - 2.7.0-1 +- Package Spec generated |