From 622bf1b2085cf78bb4cc33e68067d5fc86edd76e6b63c5c5946e10e6210b1be5 Mon Sep 17 00:00:00 2001 From: Dirk Mueller Date: Tue, 25 Feb 2025 20:23:47 +0000 Subject: [PATCH] - update to 2.2.2: * Bugfix where it was impossible to use a signal as an `ok_code` #699 * Bugfix where `async` and `return_cmd` does not raise exceptions #746 * `return_cmd` with `await` now works correctly #743 * Formal support for Python 3.12 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-sh?expand=0&rev=46 --- .gitattributes | 23 +++ .gitignore | 1 + python-sh.changes | 365 ++++++++++++++++++++++++++++++++++++++++++++++ python-sh.spec | 77 ++++++++++ sh-2.0.7.tar.gz | 3 + sh-2.1.0.tar.gz | 3 + sh-2.2.2.tar.gz | 3 + 7 files changed, 475 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 python-sh.changes create mode 100644 python-sh.spec create mode 100644 sh-2.0.7.tar.gz create mode 100644 sh-2.1.0.tar.gz create mode 100644 sh-2.2.2.tar.gz diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/python-sh.changes b/python-sh.changes new file mode 100644 index 0000000..22455cb --- /dev/null +++ b/python-sh.changes @@ -0,0 +1,365 @@ +------------------------------------------------------------------- +Tue Feb 25 20:17:05 UTC 2025 - Dirk Müller + +- update to 2.2.2: + * Bugfix where it was impossible to use a signal as an + `ok_code` #699 + * Bugfix where `async` and `return_cmd` does not raise + exceptions #746 + * `return_cmd` with `await` now works correctly #743 + * Formal support for Python 3.12 + +------------------------------------------------------------------- +Mon Oct 28 22:44:05 UTC 2024 - Dirk Müller + +- update to 2.1.0: + * Add contrib command `sh.contrib.bash` #736 + +------------------------------------------------------------------- +Mon Jun 10 09:09:25 UTC 2024 - Dirk Müller + +- update to 2.0.7: + * Fix `sh.glob` arguments #708 + * Misc modernizations + +------------------------------------------------------------------- +Tue Oct 17 06:31:32 UTC 2023 - Daniel Garcia Moreno + +- Use pytest for running tests + +------------------------------------------------------------------- +Thu Sep 7 11:16:26 UTC 2023 - Dirk Müller + +- update to 2.0.6: + * Add back appropriate sdist files comment + * Allow nested `with` contexts #690 + * Call correct asyncio function for getting event loop #683 + +------------------------------------------------------------------- +Mon May 22 21:07:07 UTC 2023 - Dirk Müller + +- update to 2.0.4: + * Allow `ok_code` to be used with `fg` #655 + * Make sure `new_group` never creates a new session #675 + +------------------------------------------------------------------- +Sat May 6 20:58:14 UTC 2023 - Matej Cepl + +- Upgrade to 2.0.3: + List of changes is too long to enlist here, CHANGELOG.md is + packaged. + +------------------------------------------------------------------- +Fri Apr 21 12:34:00 UTC 2023 - Dirk Müller + +- add sle15_python_module_pythons (jsc#PED-68) + +------------------------------------------------------------------- +Wed Apr 19 01:02:26 UTC 2023 - Matej Cepl + +- Switch to single spec version build for PSP + +------------------------------------------------------------------- +Thu Apr 13 22:44:49 UTC 2023 - Matej Cepl + +- Make calling of %{sle15modernpython} optional. + +------------------------------------------------------------------- +Sun Jul 24 07:52:44 UTC 2022 - Dirk Müller + +- update to 1.14.3: + * bugfix where `Command` was not aware of default call args when wrapping the + module + +------------------------------------------------------------------- +Sun Jun 6 11:40:10 UTC 2021 - Dirk Müller + +- update to 1.14.2: + * fix documentation link + +------------------------------------------------------------------- +Tue Dec 8 21:25:24 UTC 2020 - Benjamin Greiner + +- Update to 1.14.1: + * bugfix where setting _ok_code to not include 0, but 0 was the + exit code #545 +- Changes for 1.14.0 + * _env now more lenient in accepting dictionary-like objects #527 + * None and False arguments now do not pass through to underlying + command #525 + * Implemented find_spec on the fancy importer, which fixes some + Python3.4+ issues #536 +- Drop all patches: they are no longer applicable + * fix-sleep-path-in-test.patch + * fix-test_general_signal.diff + * fix-test_signal_group.diff + * no-coverage.patch + +------------------------------------------------------------------- +Wed Jun 17 08:14:24 UTC 2020 - Steve Kowalik + +- Update to 1.13.1: + * regression fix if `_fg=False` [#520](https://github.com/amoffat/sh/issues/520) + * minor Travis CI fixes [#492](https://github.com/amoffat/sh/pull/492) + * bugfix for boolean long options not respecting `_long_prefix` [#488](https://github.com/amoffat/sh/pull/488) + * fix deprecation warning on Python 3.6 regexes [#482](https://github.com/amoffat/sh/pull/482) + * `_pass_fds` and `_close_fds` special kwargs for controlling file descriptor inheritance in child. + * more efficiently closing inherited fds [#406](https://github.com/amoffat/sh/issues/406) + * bugfix where passing invalid dictionary to `_env` will cause a mysterious child 255 exit code. [#497](https://github.com/amoffat/sh/pull/497) + * bugfix where `_in` using 0 or `sys.stdin` wasn't behaving like a TTY, if it was in fact a TTY. [#514](https://github.com/amoffat/sh/issues/514) + * bugfix where `help(sh)` raised an exception [#455](https://github.com/amoffat/sh/issues/455) + * bugfix fixing broken interactive ssh tutorial from docs + * change to automatic tty merging into a single pty if `_tty_in=True` and `_tty_out=True` + * introducing `_unify_ttys`, default False, which allows explicit tty merging into single pty + * contrib command for `ssh` connections requiring passwords + * performance fix for polling output too fast when using `_iter` [#462](https://github.com/amoffat/sh/issues/462) + * execution contexts can now be used in python shell [#466](https://github.com/amoffat/sh/pull/466) + * bugfix `ErrorReturnCode` instances can now be pickled + * bugfix passing empty string or `None` for `_in` hanged [#427](https://github.com/amoffat/sh/pull/427) + * bugfix where passing a filename or file-like object to `_out` wasn't using os.dup2 [#449](https://github.com/amoffat/sh/issues/449) + * regression make `_fg` work with `_cwd` again [#330](https://github.com/amoffat/sh/issues/330) + * an invalid `_cwd` now raises a `ForkException` not an `OSError`. + * AIX support [#477](https://github.com/amoffat/sh/issues/477) + * added a `timeout=None` param to `RunningCommand.wait()` [#515](https://github.com/amoffat/sh/issues/515) +- Re-enable tests. +- Refresh no-coverage.patch, fix-test_general_signal.diff and + fix-test_signal_group.diff +- Add fix-sleep-path-in-test.patch to fix a test failure. +- Drop no longer required patches, + 0001-Fix-tests-for-the-drop-the-unversion-python.patch, + always-use-fully-versioned-python-command-in-tests.patch and + pep-0538-test-fix.patch + +------------------------------------------------------------------- +Mon Apr 20 17:27:27 UTC 2020 - Matej Cepl + +- Switch off tests, upstream is dead + +------------------------------------------------------------------- +Mon May 27 11:59:53 UTC 2019 - Alberto Planas Dominguez + +- Add patches to fix some tests: + * fix-test_signal_group.diff + * fix-test_general_signal.diff (bsc#1120329) + +------------------------------------------------------------------- +Fri Feb 1 13:16:33 UTC 2019 - Tomáš Chvátal + +- Add patches from Fedora: + * always-use-fully-versioned-python-command-in-tests.patch + * no-coverage.patch + * 0001-Fix-tests-for-the-drop-the-unversion-python.patch + * pep-0538-test-fix.patch + +------------------------------------------------------------------- +Tue Dec 4 12:54:15 UTC 2018 - Matej Cepl + +- Remove superfluous devel dependency for noarch package + +------------------------------------------------------------------- +Thu Jul 13 15:29:32 UTC 2017 - toddrme2178@gmail.com + +- Implement single-spec version. + +------------------------------------------------------------------- +Mon Jun 12 15:34:12 UTC 2017 - aplanas@suse.com + +- Remove test-huge-piped-data-fix.patch +- Remove test-coding-fix.patch +- Remove test-multiple-pipes-fix.patch +- Update 1.12.14 + * bugfix for poor sleep performance + [#378](https://github.com/amoffat/sh/issues/378) + * allow passing raw integer file descriptors for `_out` and `_err` + handlers + * bugfix for when `_tee` and `_out` are used, and the `_out` is a + tty or pipe [#384](https://github.com/amoffat/sh/issues/384) + * bugfix where python 3.3+ detected different arg counts for bound + method output callbacks + [#380](https://github.com/amoffat/sh/issues/380) +- Update 1.12.12, 1.12.13 + * pypi readme doc bugfix + [PR#377](https://github.com/amoffat/sh/pull/377) +- Update 1.12.11 + * bugfix for relative paths to `sh.Command` not expanding to + absolute paths [#372](https://github.com/amoffat/sh/issues/372) + * updated for python 3.6 + * bugfix for SIGPIPE not being handled correctly on pipelined + processes [#373](https://github.com/amoffat/sh/issues/373) +- Update 1.12.10 + * bugfix for file descriptors over 1024 + [#356](https://github.com/amoffat/sh/issues/356) + * bugfix when `_err_to_out` is True and `_out` is pipe or tty + [#365](https://github.com/amoffat/sh/issues/365) +- Update 1.12.9 + * added `_bg_exc` for silencing exceptions in background threads + [#350](https://github.com/amoffat/sh/pull/350) +- Update 1.12.8 + * bugfix for patched glob.glob on python3.5 + [#341](https://github.com/amoffat/sh/issues/341) +- Update 1.12.7 + * added `_out` and `_out_bufsize` validator + [#346](https://github.com/amoffat/sh/issues/346) + * bugfix for internal stdout thread running when it shouldn't + [#346](https://github.com/amoffat/sh/issues/346) +- Update 1.12.6 + * regression bugfix on timeout + [#344](https://github.com/amoffat/sh/issues/344) + * regression bugfix on `_ok_code=None` +- Update 1.12.5 + * further improvements on cpu usage +- Update 1.12.4 + * regression in cpu usage + [#339](https://github.com/amoffat/sh/issues/339) +- Update 1.12.3 + * fd leak regression and fix for flawed fd leak detection test + [#337](https://github.com/amoffat/sh/pull/337) +- Update 1.12.2 + * support for `io.StringIO` in python2 +- Update 1.12.1 + * added support for using raw file descriptors for `_in`, `_out`, + and `_err` + * removed `.close()`ing `_out` handler if FIFO detected +- Update 1.12.0 + * composed commands no longer propagate `_bg` + * better support for using `sys.stdin` and `sys.stdout` for `_in` + and `_out` + * bugfix where `which()` would not stop searching at the first valid + executable found in PATH + * added `_long_prefix` for programs whose long arguments start with + something other than `--` + [#278](https://github.com/amoffat/sh/pull/278) + * added `_log_msg` for advanced configuration of log message + [#311](https://github.com/amoffat/sh/pull/311) + * added `sh.contrib.sudo` + * added `_arg_preprocess` for advanced command wrapping + * alter callable `_in` arguments to signify completion with falsy + chunk + * bugfix where pipes passed into `_out` or `_err` were not flushed + on process end [#252](https://github.com/amoffat/sh/pull/252) + * deprecated `with sh.args(**kwargs)` in favor of `sh2 = + sh(**kwargs)` + * made `sh.pushd` thread safe + * added `.kill_group()` and `.signal_group()` methods for better + process control [#237](https://github.com/amoffat/sh/pull/237) + * added `new_session` special keyword argument for controlling + spawned process session + [#266](https://github.com/amoffat/sh/issues/266) + * bugfix better handling for EINTR on system calls + [#292](https://github.com/amoffat/sh/pull/292) + * bugfix where with-contexts were not threadsafe + [#247](https://github.com/amoffat/sh/issues/195) + * `_uid` new special keyword param for specifying the user id of the + process [#133](https://github.com/amoffat/sh/issues/133) + * bugfix where exceptions were swallowed by processes that weren't + waited on [#309](https://github.com/amoffat/sh/issues/309) + * bugfix where processes that dupd their stdout/stderr to a long + running child process would cause sh to hang + [#310](https://github.com/amoffat/sh/issues/310) + * improved logging output + [#323](https://github.com/amoffat/sh/issues/323) + * bugfix for python3+ where binary data was passed into a process's + stdin [#325](https://github.com/amoffat/sh/issues/325) + * Introduced execution contexts which allow baking of common special + keyword arguments into all commands + [#269](https://github.com/amoffat/sh/issues/269) + * `Command` and `which` now can take an optional `paths` parameter + which specifies the search paths + [#226](https://github.com/amoffat/sh/issues/226) + * `_preexec_fn` option for executing a function after the child + process forks but before it execs + [#260](https://github.com/amoffat/sh/issues/260) + * `_fg` reintroduced, with limited functionality. hurrah! + [#92](https://github.com/amoffat/sh/issues/92) + * bugfix where a command would block if passed a fd for stdin that + wasn't yet ready to read + [#253](https://github.com/amoffat/sh/issues/253) + * `_long_sep` can now take `None` which splits the long form + arguments into individual arguments + [#258](https://github.com/amoffat/sh/issues/258) + * making `_piped` perform "direct" piping by default (linking fds + together). this fixes memory problems + [#270](https://github.com/amoffat/sh/issues/270) + * bugfix where calling `next()` on an iterable process that has + raised `StopIteration`, hangs + [#273](https://github.com/amoffat/sh/issues/273) + * `sh.cd` called with no arguments no changes into the user's home + directory, like native `cd` + [#275](https://github.com/amoffat/sh/issues/275) + * `sh.glob` removed entirely. the rationale is correctness over + hand-holding. [#279](https://github.com/amoffat/sh/issues/279) + * added `_truncate_exc`, defaulting to `True`, which tells our + exceptions to truncate output. + * bugfix for exceptions whose messages contained unicode + * `_done` callback no longer assumes you want your command put in + the background. + * `_done` callback is now called asynchronously in a separate + thread. + * `_done` callback is called regardless of exception, which is + necessary in order to release held resources, for example a + process pool + +------------------------------------------------------------------- +Fri Apr 10 10:05:57 UTC 2015 - aplanas@suse.com + +- PATCH test-huge-piped-data-fix.patch + Partially disable test case + +------------------------------------------------------------------- +Wed Jan 28 08:57:03 UTC 2015 - aplanas@suse.com + +- Fix %defattr, fixing SLE11SP3 building + +------------------------------------------------------------------- +Fri Jan 2 10:58:53 UTC 2015 - aplanas@suse.com + +- Fix source URL +- Fix setup directory name +- PATCH test-coding-fix.patch + Use utf-8 enconding in the header +- PATCH test-multiple-pipes-fix.patch + Partially disable test case +- Remove BuildRequires python-devel +- Update to 1.11 + * partially applied functions with functools.partial have been fixed for _out and _err callbacks #160 + * _out or _err being callables no longer puts the running command in the background. to achieve the previous behavior, pass _bg=True to your command. + * deprecated _with contexts #195 + * _timeout_signal allows you to specify your own signal to kill a timed-out process with. use a constant from the signal stdlib module. #171 + * signal exceptions can now be caught by number or name. SignalException_9 == SignalException_SIGKILL + * child processes that timeout via _timeout raise sh.TimeoutException instead of sh.SignalExeception_9 #172 + * fixed help(sh) from the python shell and pydoc sh from the command line. #173 + * program names can no longer be shadowed by names that sh.py defines internally. removed the requirement of trailing underscores for programs that could have their names shadowed, like id. + * memory optimization when a child process's stdin is a newline-delimted string and our bufsize is newlines + * feature, _done special keyword argument that accepts a callback to be called when the command completes successfully #185 + * bugfix for being unable to print a baked command in python3+ #176 + * bugfix for cwd not existing and causing the child process to continue running parent process code #202 + * child process is now guaranteed to exit on exception between fork and exec. + * fix python2 deprecation warning when running with -3 PR #165 + * bugfix where sh.py was attempting to execute directories #196, PR #189 + * only backgrounded processes will ignore SIGHUP + * allowed ok_code to take a range object. #PR 210 + * added sh.args with context which allows overriding of all command defaults for the duration of that context. + * added sh.pushd with context which takes a directory name and changes to that directory for the duration of that with context. PR #206 + * tests now include python 3.4 if available. tests also stop on the first python that suite that fails. + * SIGABRT, SIGBUS, SIGFPE, SIGILL, SIGPIPE, SIGSYS have been added to the list of signals that throw an exception PR #201 + * "callable" builtin has been faked for python3.1, which lacks it. + * "direct" option added to _piped special keyword argument, which allows sh to hand off a process's stdout fd directly to another process, instead of buffering its stdout internally, then handing it off. #119 + + +------------------------------------------------------------------- +Fri May 2 12:37:53 UTC 2014 - multyrealm@gmail.com + +- update to 1.09 + * Fixed encoding errors related to a system encoding "ascii". GH #123. + * Added exit_code attribute to SignalException and ErrorReturnCode exception + classes. GH #127. + * Making the default behavior of spawned processes to not be explicitly + killed when the parent python process ends. Also making the spawned process + ignore SIGHUP. GH #139. + * Made OSX sleep hack to apply to PY2 as well as PY3. + +------------------------------------------------------------------- +Mon Jan 20 08:51:22 UTC 2014 - mvyskocil@opensuse.org + +- package python-sh 1.08 for openSUSE + diff --git a/python-sh.spec b/python-sh.spec new file mode 100644 index 0000000..d46bb6b --- /dev/null +++ b/python-sh.spec @@ -0,0 +1,77 @@ +# +# spec file for package python-sh +# +# Copyright (c) 2025 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%{?sle15_python_module_pythons} +Name: python-sh +Version: 2.2.2 +Release: 0 +Summary: Python subprocess interface +License: MIT +URL: https://github.com/amoffat/sh +Source: https://files.pythonhosted.org/packages/source/s/sh/sh-%{version}.tar.gz +BuildRequires: %{python_module pip} +BuildRequires: %{python_module poetry-core} +BuildRequires: %{python_module pytest} +BuildRequires: %{python_module wheel} +BuildRequires: fdupes +BuildRequires: python-rpm-macros +BuildArch: noarch +%{?sle15_python_module_pythons} +%python_subpackages + +%description +sh is a full-fledged subprocess replacement for Python 2.6 - 3.6, PyPy +and PyPy3 that allows you to call any program as if it were a +function: + + from sh import ifconfig + print ifconfig("eth0") + +sh is not a collection of system commands implemented in Python. + +%prep +%autosetup -p1 -n sh-%{version} + +%build +%pyproject_wheel + +%install +%pyproject_install +%python_expand %fdupes %{buildroot}%{$python_sitelib} + +%check +export SH_TESTS_RUNNING=1 +export SH_TESTS_USE_SELECT=0 +export LANG=C +# disable broken tests in obs environment +donttest="test_stringio_output" +donttest+=" or test_environment" +donttest+=" or test_no_interfere1" +donttest+=" or test_set_in_parent_function" +donttest+=" or test_basic" +donttest+=" or test_multiline_defaults" +%pytest -k "not ($donttest)" + +%files %{python_files} +%license LICENSE.txt +%doc CHANGELOG.md README.rst +%{python_sitelib}/sh.py +%pycache_only %{python_sitelib}/__pycache__/sh.*pyc +%{python_sitelib}/sh-%{version}*-info + +%changelog diff --git a/sh-2.0.7.tar.gz b/sh-2.0.7.tar.gz new file mode 100644 index 0000000..8c8f70c --- /dev/null +++ b/sh-2.0.7.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:029d45198902bfb967391eccfd13a88d92f7cebd200411e93f99ebacc6afbb35 +size 345477 diff --git a/sh-2.1.0.tar.gz b/sh-2.1.0.tar.gz new file mode 100644 index 0000000..d35d7da --- /dev/null +++ b/sh-2.1.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e27301c574bec8ca5bf6f211851357526455ee97cd27a7c4c6cc5e2375399cb +size 345525 diff --git a/sh-2.2.2.tar.gz b/sh-2.2.2.tar.gz new file mode 100644 index 0000000..f5d4165 --- /dev/null +++ b/sh-2.2.2.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:653227a7c41a284ec5302173fbc044ee817c7bad5e6e4d8d55741b9aeb9eb65b +size 345866