%global _empty_manifest_terminate_build 0 Name: python-shellescape Version: 3.8.1 Release: 1 Summary: Shell escape a string to safely use it as a token in a shell command (backport of cPython shlex.quote for Python versions 2.x & < 3.3) License: MIT license URL: https://github.com/chrissimpkins/shellescape Source0: https://mirrors.nju.edu.cn/pypi/web/packages/19/40/13b9e84bf04774365830cbed1bd95a989d5324a99d207bcb1619a6c517f2/shellescape-3.8.1.tar.gz BuildArch: noarch %description # shellescape ## Description The shellescape Python module defines the `shellescape.quote()` function that returns a shell-escaped version of a Python string. This is a backport of the `shlex.quote()` function from Python 3.8 that makes it accessible to users of Python 3 versions < 3.3 and all Python 2.x versions. ### quote(s) *From the Python documentation*: Return a shell-escaped version of the string s. The returned value is a string that can safely be used as one token in a shell command line, for cases where you cannot use a list. This idiom would be unsafe: ```python >>> filename = 'somefile; rm -rf ~' >>> command = 'ls -l {}'.format(filename) >>> print(command) # executed by a shell: boom! ls -l somefile; rm -rf ~ ``` `quote()` lets you plug the security hole: ```python >>> command = 'ls -l {}'.format(quote(filename)) >>> print(command) ls -l 'somefile; rm -rf ~' >>> remote_command = 'ssh home {}'.format(quote(command)) >>> print(remote_command) ssh home 'ls -l '"'"'somefile; rm -rf ~'"'"'' ``` The quoting is compatible with UNIX shells and with `shlex.split()`: ```python >>> remote_command = split(remote_command) >>> remote_command ['ssh', 'home', "ls -l 'somefile; rm -rf ~'"] >>> command = split(remote_command[-1]) >>> command ['ls', '-l', 'somefile; rm -rf ~'] ``` ## Usage Include `shellescape` in your project setup.py file `install_requires` dependency definition list: ```python setup( ... install_requires=['shellescape'], ... ) ``` Then import the `quote` function into your module(s) and use it as needed: ```python #!/usr/bin/env python # -*- coding: utf-8 -*- from shellescape import quote filename = "somefile; rm -rf ~" escaped_shell_command = 'ls -l {}'.format(quote(filename)) ``` ## License [LICENSE](https://github.com/chrissimpkins/shellescape/blob/master/docs/LICENSE) %package -n python3-shellescape Summary: Shell escape a string to safely use it as a token in a shell command (backport of cPython shlex.quote for Python versions 2.x & < 3.3) Provides: python-shellescape BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-shellescape # shellescape ## Description The shellescape Python module defines the `shellescape.quote()` function that returns a shell-escaped version of a Python string. This is a backport of the `shlex.quote()` function from Python 3.8 that makes it accessible to users of Python 3 versions < 3.3 and all Python 2.x versions. ### quote(s) *From the Python documentation*: Return a shell-escaped version of the string s. The returned value is a string that can safely be used as one token in a shell command line, for cases where you cannot use a list. This idiom would be unsafe: ```python >>> filename = 'somefile; rm -rf ~' >>> command = 'ls -l {}'.format(filename) >>> print(command) # executed by a shell: boom! ls -l somefile; rm -rf ~ ``` `quote()` lets you plug the security hole: ```python >>> command = 'ls -l {}'.format(quote(filename)) >>> print(command) ls -l 'somefile; rm -rf ~' >>> remote_command = 'ssh home {}'.format(quote(command)) >>> print(remote_command) ssh home 'ls -l '"'"'somefile; rm -rf ~'"'"'' ``` The quoting is compatible with UNIX shells and with `shlex.split()`: ```python >>> remote_command = split(remote_command) >>> remote_command ['ssh', 'home', "ls -l 'somefile; rm -rf ~'"] >>> command = split(remote_command[-1]) >>> command ['ls', '-l', 'somefile; rm -rf ~'] ``` ## Usage Include `shellescape` in your project setup.py file `install_requires` dependency definition list: ```python setup( ... install_requires=['shellescape'], ... ) ``` Then import the `quote` function into your module(s) and use it as needed: ```python #!/usr/bin/env python # -*- coding: utf-8 -*- from shellescape import quote filename = "somefile; rm -rf ~" escaped_shell_command = 'ls -l {}'.format(quote(filename)) ``` ## License [LICENSE](https://github.com/chrissimpkins/shellescape/blob/master/docs/LICENSE) %package help Summary: Development documents and examples for shellescape Provides: python3-shellescape-doc %description help # shellescape ## Description The shellescape Python module defines the `shellescape.quote()` function that returns a shell-escaped version of a Python string. This is a backport of the `shlex.quote()` function from Python 3.8 that makes it accessible to users of Python 3 versions < 3.3 and all Python 2.x versions. ### quote(s) *From the Python documentation*: Return a shell-escaped version of the string s. The returned value is a string that can safely be used as one token in a shell command line, for cases where you cannot use a list. This idiom would be unsafe: ```python >>> filename = 'somefile; rm -rf ~' >>> command = 'ls -l {}'.format(filename) >>> print(command) # executed by a shell: boom! ls -l somefile; rm -rf ~ ``` `quote()` lets you plug the security hole: ```python >>> command = 'ls -l {}'.format(quote(filename)) >>> print(command) ls -l 'somefile; rm -rf ~' >>> remote_command = 'ssh home {}'.format(quote(command)) >>> print(remote_command) ssh home 'ls -l '"'"'somefile; rm -rf ~'"'"'' ``` The quoting is compatible with UNIX shells and with `shlex.split()`: ```python >>> remote_command = split(remote_command) >>> remote_command ['ssh', 'home', "ls -l 'somefile; rm -rf ~'"] >>> command = split(remote_command[-1]) >>> command ['ls', '-l', 'somefile; rm -rf ~'] ``` ## Usage Include `shellescape` in your project setup.py file `install_requires` dependency definition list: ```python setup( ... install_requires=['shellescape'], ... ) ``` Then import the `quote` function into your module(s) and use it as needed: ```python #!/usr/bin/env python # -*- coding: utf-8 -*- from shellescape import quote filename = "somefile; rm -rf ~" escaped_shell_command = 'ls -l {}'.format(quote(filename)) ``` ## License [LICENSE](https://github.com/chrissimpkins/shellescape/blob/master/docs/LICENSE) %prep %autosetup -n shellescape-3.8.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-shellescape -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Mon Apr 10 2023 Python_Bot - 3.8.1-1 - Package Spec generated