%global _empty_manifest_terminate_build 0 Name: python-PySnooper Version: 1.1.1 Release: 1 Summary: A poor man's debugger for Python. License: MIT License URL: https://github.com/cool-RR/PySnooper Source0: https://mirrors.nju.edu.cn/pypi/web/packages/e9/82/3f6d0f73c9fd19bf07953d788e34d1c64c766a03e54625bf9fe98d730822/PySnooper-1.1.1.tar.gz BuildArch: noarch Requires: python3-pytest %description # PySnooper - Never use print for debugging again # **PySnooper** is a poor man's debugger. If you've used Bash, it's like `set -x` for Python, except it's fancier. Your story: You're trying to figure out why your Python code isn't doing what you think it should be doing. You'd love to use a full-fledged debugger with breakpoints and watches, but you can't be bothered to set one up right now. You want to know which lines are running and which aren't, and what the values of the local variables are. Most people would use `print` lines, in strategic locations, some of them showing the values of variables. **PySnooper** lets you do the same, except instead of carefully crafting the right `print` lines, you just add one decorator line to the function you're interested in. You'll get a play-by-play log of your function, including which lines ran and when, and exactly when local variables were changed. What makes **PySnooper** stand out from all other code intelligence tools? You can use it in your shitty, sprawling enterprise codebase without having to do any setup. Just slap the decorator on, as shown below, and redirect the output to a dedicated log file by specifying its path as the first argument. # Example # We're writing a function that converts a number to binary, by returning a list of bits. Let's snoop on it by adding the `@pysnooper.snoop()` decorator: ```python import pysnooper @pysnooper.snoop() def number_to_bits(number): if number: bits = [] while number: number, remainder = divmod(number, 2) bits.insert(0, remainder) return bits else: return [0] number_to_bits(6) ``` The output to stderr is: ![](https://i.imgur.com/TrF3VVj.jpg) Or if you don't want to trace an entire function, you can wrap the relevant part in a `with` block: ```python import pysnooper import random def foo(): lst = [] for i in range(10): lst.append(random.randrange(1, 1000)) with pysnooper.snoop(): lower = min(lst) upper = max(lst) mid = (lower + upper) / 2 print(lower, mid, upper) foo() ``` which outputs something like: ``` New var:....... i = 9 New var:....... lst = [681, 267, 74, 832, 284, 678, ...] 09:37:35.881721 line 10 lower = min(lst) New var:....... lower = 74 09:37:35.882137 line 11 upper = max(lst) New var:....... upper = 832 09:37:35.882304 line 12 mid = (lower + upper) / 2 74 453.0 832 New var:....... mid = 453.0 09:37:35.882486 line 13 print(lower, mid, upper) Elapsed time: 00:00:00.000344 ``` # Features # If stderr is not easily accessible for you, you can redirect the output to a file: ```python @pysnooper.snoop('/my/log/file.log') ``` You can also pass a stream or a callable instead, and they'll be used. See values of some expressions that aren't local variables: ```python @pysnooper.snoop(watch=('foo.bar', 'self.x["whatever"]')) ``` Show snoop lines for functions that your function calls: ```python @pysnooper.snoop(depth=2) ``` **See [Advanced Usage](https://github.com/cool-RR/PySnooper/blob/master/ADVANCED_USAGE.md) for more options.** <------ # Installation with Pip # The best way to install **PySnooper** is with Pip: ```console $ pip install pysnooper ``` # Other installation options # Conda with conda-forge channel: ```console $ conda install -c conda-forge pysnooper ``` Arch Linux: ```console $ yay -S python-pysnooper ``` Fedora Linux: ```console $ dnf install python3-pysnooper ``` # License # Copyright (c) 2019 Ram Rachum and collaborators, released under the MIT license. # Media Coverage # [Hacker News thread](https://news.ycombinator.com/item?id=19717786) and [/r/Python Reddit thread](https://www.reddit.com/r/Python/comments/bg0ida/pysnooper_never_use_print_for_debugging_again/) (22 April 2019) %package -n python3-PySnooper Summary: A poor man's debugger for Python. Provides: python-PySnooper BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-PySnooper # PySnooper - Never use print for debugging again # **PySnooper** is a poor man's debugger. If you've used Bash, it's like `set -x` for Python, except it's fancier. Your story: You're trying to figure out why your Python code isn't doing what you think it should be doing. You'd love to use a full-fledged debugger with breakpoints and watches, but you can't be bothered to set one up right now. You want to know which lines are running and which aren't, and what the values of the local variables are. Most people would use `print` lines, in strategic locations, some of them showing the values of variables. **PySnooper** lets you do the same, except instead of carefully crafting the right `print` lines, you just add one decorator line to the function you're interested in. You'll get a play-by-play log of your function, including which lines ran and when, and exactly when local variables were changed. What makes **PySnooper** stand out from all other code intelligence tools? You can use it in your shitty, sprawling enterprise codebase without having to do any setup. Just slap the decorator on, as shown below, and redirect the output to a dedicated log file by specifying its path as the first argument. # Example # We're writing a function that converts a number to binary, by returning a list of bits. Let's snoop on it by adding the `@pysnooper.snoop()` decorator: ```python import pysnooper @pysnooper.snoop() def number_to_bits(number): if number: bits = [] while number: number, remainder = divmod(number, 2) bits.insert(0, remainder) return bits else: return [0] number_to_bits(6) ``` The output to stderr is: ![](https://i.imgur.com/TrF3VVj.jpg) Or if you don't want to trace an entire function, you can wrap the relevant part in a `with` block: ```python import pysnooper import random def foo(): lst = [] for i in range(10): lst.append(random.randrange(1, 1000)) with pysnooper.snoop(): lower = min(lst) upper = max(lst) mid = (lower + upper) / 2 print(lower, mid, upper) foo() ``` which outputs something like: ``` New var:....... i = 9 New var:....... lst = [681, 267, 74, 832, 284, 678, ...] 09:37:35.881721 line 10 lower = min(lst) New var:....... lower = 74 09:37:35.882137 line 11 upper = max(lst) New var:....... upper = 832 09:37:35.882304 line 12 mid = (lower + upper) / 2 74 453.0 832 New var:....... mid = 453.0 09:37:35.882486 line 13 print(lower, mid, upper) Elapsed time: 00:00:00.000344 ``` # Features # If stderr is not easily accessible for you, you can redirect the output to a file: ```python @pysnooper.snoop('/my/log/file.log') ``` You can also pass a stream or a callable instead, and they'll be used. See values of some expressions that aren't local variables: ```python @pysnooper.snoop(watch=('foo.bar', 'self.x["whatever"]')) ``` Show snoop lines for functions that your function calls: ```python @pysnooper.snoop(depth=2) ``` **See [Advanced Usage](https://github.com/cool-RR/PySnooper/blob/master/ADVANCED_USAGE.md) for more options.** <------ # Installation with Pip # The best way to install **PySnooper** is with Pip: ```console $ pip install pysnooper ``` # Other installation options # Conda with conda-forge channel: ```console $ conda install -c conda-forge pysnooper ``` Arch Linux: ```console $ yay -S python-pysnooper ``` Fedora Linux: ```console $ dnf install python3-pysnooper ``` # License # Copyright (c) 2019 Ram Rachum and collaborators, released under the MIT license. # Media Coverage # [Hacker News thread](https://news.ycombinator.com/item?id=19717786) and [/r/Python Reddit thread](https://www.reddit.com/r/Python/comments/bg0ida/pysnooper_never_use_print_for_debugging_again/) (22 April 2019) %package help Summary: Development documents and examples for PySnooper Provides: python3-PySnooper-doc %description help # PySnooper - Never use print for debugging again # **PySnooper** is a poor man's debugger. If you've used Bash, it's like `set -x` for Python, except it's fancier. Your story: You're trying to figure out why your Python code isn't doing what you think it should be doing. You'd love to use a full-fledged debugger with breakpoints and watches, but you can't be bothered to set one up right now. You want to know which lines are running and which aren't, and what the values of the local variables are. Most people would use `print` lines, in strategic locations, some of them showing the values of variables. **PySnooper** lets you do the same, except instead of carefully crafting the right `print` lines, you just add one decorator line to the function you're interested in. You'll get a play-by-play log of your function, including which lines ran and when, and exactly when local variables were changed. What makes **PySnooper** stand out from all other code intelligence tools? You can use it in your shitty, sprawling enterprise codebase without having to do any setup. Just slap the decorator on, as shown below, and redirect the output to a dedicated log file by specifying its path as the first argument. # Example # We're writing a function that converts a number to binary, by returning a list of bits. Let's snoop on it by adding the `@pysnooper.snoop()` decorator: ```python import pysnooper @pysnooper.snoop() def number_to_bits(number): if number: bits = [] while number: number, remainder = divmod(number, 2) bits.insert(0, remainder) return bits else: return [0] number_to_bits(6) ``` The output to stderr is: ![](https://i.imgur.com/TrF3VVj.jpg) Or if you don't want to trace an entire function, you can wrap the relevant part in a `with` block: ```python import pysnooper import random def foo(): lst = [] for i in range(10): lst.append(random.randrange(1, 1000)) with pysnooper.snoop(): lower = min(lst) upper = max(lst) mid = (lower + upper) / 2 print(lower, mid, upper) foo() ``` which outputs something like: ``` New var:....... i = 9 New var:....... lst = [681, 267, 74, 832, 284, 678, ...] 09:37:35.881721 line 10 lower = min(lst) New var:....... lower = 74 09:37:35.882137 line 11 upper = max(lst) New var:....... upper = 832 09:37:35.882304 line 12 mid = (lower + upper) / 2 74 453.0 832 New var:....... mid = 453.0 09:37:35.882486 line 13 print(lower, mid, upper) Elapsed time: 00:00:00.000344 ``` # Features # If stderr is not easily accessible for you, you can redirect the output to a file: ```python @pysnooper.snoop('/my/log/file.log') ``` You can also pass a stream or a callable instead, and they'll be used. See values of some expressions that aren't local variables: ```python @pysnooper.snoop(watch=('foo.bar', 'self.x["whatever"]')) ``` Show snoop lines for functions that your function calls: ```python @pysnooper.snoop(depth=2) ``` **See [Advanced Usage](https://github.com/cool-RR/PySnooper/blob/master/ADVANCED_USAGE.md) for more options.** <------ # Installation with Pip # The best way to install **PySnooper** is with Pip: ```console $ pip install pysnooper ``` # Other installation options # Conda with conda-forge channel: ```console $ conda install -c conda-forge pysnooper ``` Arch Linux: ```console $ yay -S python-pysnooper ``` Fedora Linux: ```console $ dnf install python3-pysnooper ``` # License # Copyright (c) 2019 Ram Rachum and collaborators, released under the MIT license. # Media Coverage # [Hacker News thread](https://news.ycombinator.com/item?id=19717786) and [/r/Python Reddit thread](https://www.reddit.com/r/Python/comments/bg0ida/pysnooper_never_use_print_for_debugging_again/) (22 April 2019) %prep %autosetup -n PySnooper-1.1.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-PySnooper -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Fri Apr 21 2023 Python_Bot - 1.1.1-1 - Package Spec generated