%global _empty_manifest_terminate_build 0 Name: python-parameter-expansion-patched Version: 0.3.1 Release: 1 Summary: Shell parameter expansion in Python. Patched by co-maintainer for a PyPI release. License: Apache-2.0 URL: https://github.com/nexB/parameter-expansion-patched Source0: https://mirrors.nju.edu.cn/pypi/web/packages/7e/15/0c6fa115b269418a0d53d4564809afb74684d8afa417323b406be26de08b/parameter-expansion-patched-0.3.1.tar.gz BuildArch: noarch %description # POSIX Parameter Expansion ![GitHub](https://img.shields.io/github/license/kojiromike/parameter-expansion) ![PyPI](https://img.shields.io/pypi/v/parameter-expansion) ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/parameter-expansion) ![PyPI - Wheel](https://img.shields.io/pypi/wheel/parameter-expansion) ![PyPI - Downloads](https://img.shields.io/pypi/dm/parameter-expansion) [![Tests](https://github.com/kojiromike/parameter-expansion/actions/workflows/test.yml/badge.svg)](https://github.com/kojiromike/parameter-expansion/actions/workflows/test.yml) [![CodeQL](https://github.com/kojiromike/parameter-expansion/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/kojiromike/parameter-expansion/actions/workflows/codeql-analysis.yml) [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit) This is an experimental Python library to enable [POSIX parameter expansion][1] in a string. It supports also a subset of [Bash parameter expansion][2]. Note that this is a fork from upstream to support proper release on PyPI. This repo https://github.com/nexB/parameter_expansion_patched is released at https://pypi.org/project/parameter-expansion-patched/ on PyPI. Upstream is less active lately at https://github.com/kojiromike/parameter-expansion/ ## Why not spawning a shell directly for this? One reason is that it may be security risk. Another reason is to support lightweight analysis or evaluation of shell parameters with few system dependencies and outside of a running shell. For instance this use in [scancode-toolkit][3] as part of a lightweight shell script parser to extract and expand parameters found in some build scripts. ## Which expansions are supported? All the standard shell expansions are supported, including some level of nested expansion, as long as this is not too complex or ambiguous. In addition, we support Bash substrings and string replacement. There is an extensive test suite listing [all supported substitions][4] ## How does this work? The `expand()` function accepts a string and a dictionary of variables (otherwise it uses the current environmnent variables). The string is parsed with a custom parser and interpreted to perform the various expansion procedures using these variables. ### Obvious Test Cases ```python >>> from parameter_expansion import expand >>> foo = 'abc/123-def.ghi' >>> # Bland Expansion >>> expand('abc $foo abc') 'abc abc/123-def.ghi abc' >>> expand('abc${foo}abc') 'abcabc/123-def.ghiabc' >>> >>> # Default Value Expansion >>> expand('-${foo:-bar}-') '-abc/123-def.ghi-' >>> expand('-${bar:-bar}-') '-bar-' ``` ### Default Value Expansion ```python >>> foo = 'abc/123-def.ghi' >>> expand('abc $foo abc') 'abc abc/123-def.ghi abc' >>> expand('abc${foo}abc') 'abcabc/123-def.ghiabc' ``` ## Any other library doing similar thing? - https://github.com/sayanarijit/expandvars has similar features yet does not cover all the expansions that this library supports (such as %, # and nested variables). - https://github.com/sloria/environs [1]: https://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_06_02 [2]: https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html [3]: https://github.com/nexB/scancode-toolkit/blob/develop/src/packagedcode/bashparse.py [4]: https://github.com/kojiromike/parameter-expansion/blob/main/parameter_expansion/tests/test_pe.py %package -n python3-parameter-expansion-patched Summary: Shell parameter expansion in Python. Patched by co-maintainer for a PyPI release. Provides: python-parameter-expansion-patched BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-parameter-expansion-patched # POSIX Parameter Expansion ![GitHub](https://img.shields.io/github/license/kojiromike/parameter-expansion) ![PyPI](https://img.shields.io/pypi/v/parameter-expansion) ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/parameter-expansion) ![PyPI - Wheel](https://img.shields.io/pypi/wheel/parameter-expansion) ![PyPI - Downloads](https://img.shields.io/pypi/dm/parameter-expansion) [![Tests](https://github.com/kojiromike/parameter-expansion/actions/workflows/test.yml/badge.svg)](https://github.com/kojiromike/parameter-expansion/actions/workflows/test.yml) [![CodeQL](https://github.com/kojiromike/parameter-expansion/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/kojiromike/parameter-expansion/actions/workflows/codeql-analysis.yml) [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit) This is an experimental Python library to enable [POSIX parameter expansion][1] in a string. It supports also a subset of [Bash parameter expansion][2]. Note that this is a fork from upstream to support proper release on PyPI. This repo https://github.com/nexB/parameter_expansion_patched is released at https://pypi.org/project/parameter-expansion-patched/ on PyPI. Upstream is less active lately at https://github.com/kojiromike/parameter-expansion/ ## Why not spawning a shell directly for this? One reason is that it may be security risk. Another reason is to support lightweight analysis or evaluation of shell parameters with few system dependencies and outside of a running shell. For instance this use in [scancode-toolkit][3] as part of a lightweight shell script parser to extract and expand parameters found in some build scripts. ## Which expansions are supported? All the standard shell expansions are supported, including some level of nested expansion, as long as this is not too complex or ambiguous. In addition, we support Bash substrings and string replacement. There is an extensive test suite listing [all supported substitions][4] ## How does this work? The `expand()` function accepts a string and a dictionary of variables (otherwise it uses the current environmnent variables). The string is parsed with a custom parser and interpreted to perform the various expansion procedures using these variables. ### Obvious Test Cases ```python >>> from parameter_expansion import expand >>> foo = 'abc/123-def.ghi' >>> # Bland Expansion >>> expand('abc $foo abc') 'abc abc/123-def.ghi abc' >>> expand('abc${foo}abc') 'abcabc/123-def.ghiabc' >>> >>> # Default Value Expansion >>> expand('-${foo:-bar}-') '-abc/123-def.ghi-' >>> expand('-${bar:-bar}-') '-bar-' ``` ### Default Value Expansion ```python >>> foo = 'abc/123-def.ghi' >>> expand('abc $foo abc') 'abc abc/123-def.ghi abc' >>> expand('abc${foo}abc') 'abcabc/123-def.ghiabc' ``` ## Any other library doing similar thing? - https://github.com/sayanarijit/expandvars has similar features yet does not cover all the expansions that this library supports (such as %, # and nested variables). - https://github.com/sloria/environs [1]: https://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_06_02 [2]: https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html [3]: https://github.com/nexB/scancode-toolkit/blob/develop/src/packagedcode/bashparse.py [4]: https://github.com/kojiromike/parameter-expansion/blob/main/parameter_expansion/tests/test_pe.py %package help Summary: Development documents and examples for parameter-expansion-patched Provides: python3-parameter-expansion-patched-doc %description help # POSIX Parameter Expansion ![GitHub](https://img.shields.io/github/license/kojiromike/parameter-expansion) ![PyPI](https://img.shields.io/pypi/v/parameter-expansion) ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/parameter-expansion) ![PyPI - Wheel](https://img.shields.io/pypi/wheel/parameter-expansion) ![PyPI - Downloads](https://img.shields.io/pypi/dm/parameter-expansion) [![Tests](https://github.com/kojiromike/parameter-expansion/actions/workflows/test.yml/badge.svg)](https://github.com/kojiromike/parameter-expansion/actions/workflows/test.yml) [![CodeQL](https://github.com/kojiromike/parameter-expansion/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/kojiromike/parameter-expansion/actions/workflows/codeql-analysis.yml) [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit) This is an experimental Python library to enable [POSIX parameter expansion][1] in a string. It supports also a subset of [Bash parameter expansion][2]. Note that this is a fork from upstream to support proper release on PyPI. This repo https://github.com/nexB/parameter_expansion_patched is released at https://pypi.org/project/parameter-expansion-patched/ on PyPI. Upstream is less active lately at https://github.com/kojiromike/parameter-expansion/ ## Why not spawning a shell directly for this? One reason is that it may be security risk. Another reason is to support lightweight analysis or evaluation of shell parameters with few system dependencies and outside of a running shell. For instance this use in [scancode-toolkit][3] as part of a lightweight shell script parser to extract and expand parameters found in some build scripts. ## Which expansions are supported? All the standard shell expansions are supported, including some level of nested expansion, as long as this is not too complex or ambiguous. In addition, we support Bash substrings and string replacement. There is an extensive test suite listing [all supported substitions][4] ## How does this work? The `expand()` function accepts a string and a dictionary of variables (otherwise it uses the current environmnent variables). The string is parsed with a custom parser and interpreted to perform the various expansion procedures using these variables. ### Obvious Test Cases ```python >>> from parameter_expansion import expand >>> foo = 'abc/123-def.ghi' >>> # Bland Expansion >>> expand('abc $foo abc') 'abc abc/123-def.ghi abc' >>> expand('abc${foo}abc') 'abcabc/123-def.ghiabc' >>> >>> # Default Value Expansion >>> expand('-${foo:-bar}-') '-abc/123-def.ghi-' >>> expand('-${bar:-bar}-') '-bar-' ``` ### Default Value Expansion ```python >>> foo = 'abc/123-def.ghi' >>> expand('abc $foo abc') 'abc abc/123-def.ghi abc' >>> expand('abc${foo}abc') 'abcabc/123-def.ghiabc' ``` ## Any other library doing similar thing? - https://github.com/sayanarijit/expandvars has similar features yet does not cover all the expansions that this library supports (such as %, # and nested variables). - https://github.com/sloria/environs [1]: https://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_06_02 [2]: https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html [3]: https://github.com/nexB/scancode-toolkit/blob/develop/src/packagedcode/bashparse.py [4]: https://github.com/kojiromike/parameter-expansion/blob/main/parameter_expansion/tests/test_pe.py %prep %autosetup -n parameter-expansion-patched-0.3.1 %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-parameter-expansion-patched -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Tue May 30 2023 Python_Bot - 0.3.1-1 - Package Spec generated