%global _empty_manifest_terminate_build 0 Name: python-list-methods Version: 0.1.3 Release: 1 Summary: Add .map, .filter and .reduce as list methods License: GNU General Public License v3 or later (GPLv3+) URL: https://github.com/theodorrene/list_methods Source0: https://mirrors.aliyun.com/pypi/web/packages/7c/1f/2f6eb2022a2d95bbf99e2462c6a55eafda2c57144b3b82d563619ce5f920/list_methods-0.1.3.tar.gz BuildArch: noarch %description # list_methods [Experimental] Tired of not having map, filter and reduce easily available like in Javascript, Java, Kotlin, etc? Fear not, this is the package for you(sort of). Experimental package adding .map(), .filter() and .reduce() as list methods. Made mostly as PoC showing how the Python language can be extended in some way. # Installation [![PyPI version](https://badge.fury.io/py/list-methods.svg)](https://badge.fury.io/py/list-methods) ``` pip install list_methods ``` # Use ``` >>> from list_methods import L >>> l = L([1,2,3]) >>> plus_one = lambda x : x+1 >>> greater_than_one = lamda x : x > 1 >>> l.map(plus_one).c() L([2,3,4]) >>> l.filter(greater_than_one).c() L([2,3]) >>> l.map(plus_one).map(plus_one).filter(greater_than_one).c() L([3,4,5]) >>> agg_plus = lambda x,y: x+y >>> l.reduce(agg_plus) 6 ``` # Gotchas Remember to call the .c() method since this resets the object so it can be used further. This is not necessary when ending the chain of operations with .reduce() ## Javascript ``` > l = [1,2,3] > l.map(x => x +1) [2,3,4] > l.map(x => x +1) [2,3,4] ``` ## list_methods - Python ``` >>> l.map(plus_one) L([2,3,4]) >>> l.map(plus_one) L([3,4,5]) ``` ## Gotcha #2 * The list needs to be copied when instantiating the object so it can be reset for other use. In the future one should maybe add a flag to skip this list copy if the list is only used in one place. # TODO * Write tests * Write benchmarks * Test a implementation where a new instance of the class is returned instead of self %package -n python3-list-methods Summary: Add .map, .filter and .reduce as list methods Provides: python-list-methods BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-list-methods # list_methods [Experimental] Tired of not having map, filter and reduce easily available like in Javascript, Java, Kotlin, etc? Fear not, this is the package for you(sort of). Experimental package adding .map(), .filter() and .reduce() as list methods. Made mostly as PoC showing how the Python language can be extended in some way. # Installation [![PyPI version](https://badge.fury.io/py/list-methods.svg)](https://badge.fury.io/py/list-methods) ``` pip install list_methods ``` # Use ``` >>> from list_methods import L >>> l = L([1,2,3]) >>> plus_one = lambda x : x+1 >>> greater_than_one = lamda x : x > 1 >>> l.map(plus_one).c() L([2,3,4]) >>> l.filter(greater_than_one).c() L([2,3]) >>> l.map(plus_one).map(plus_one).filter(greater_than_one).c() L([3,4,5]) >>> agg_plus = lambda x,y: x+y >>> l.reduce(agg_plus) 6 ``` # Gotchas Remember to call the .c() method since this resets the object so it can be used further. This is not necessary when ending the chain of operations with .reduce() ## Javascript ``` > l = [1,2,3] > l.map(x => x +1) [2,3,4] > l.map(x => x +1) [2,3,4] ``` ## list_methods - Python ``` >>> l.map(plus_one) L([2,3,4]) >>> l.map(plus_one) L([3,4,5]) ``` ## Gotcha #2 * The list needs to be copied when instantiating the object so it can be reset for other use. In the future one should maybe add a flag to skip this list copy if the list is only used in one place. # TODO * Write tests * Write benchmarks * Test a implementation where a new instance of the class is returned instead of self %package help Summary: Development documents and examples for list-methods Provides: python3-list-methods-doc %description help # list_methods [Experimental] Tired of not having map, filter and reduce easily available like in Javascript, Java, Kotlin, etc? Fear not, this is the package for you(sort of). Experimental package adding .map(), .filter() and .reduce() as list methods. Made mostly as PoC showing how the Python language can be extended in some way. # Installation [![PyPI version](https://badge.fury.io/py/list-methods.svg)](https://badge.fury.io/py/list-methods) ``` pip install list_methods ``` # Use ``` >>> from list_methods import L >>> l = L([1,2,3]) >>> plus_one = lambda x : x+1 >>> greater_than_one = lamda x : x > 1 >>> l.map(plus_one).c() L([2,3,4]) >>> l.filter(greater_than_one).c() L([2,3]) >>> l.map(plus_one).map(plus_one).filter(greater_than_one).c() L([3,4,5]) >>> agg_plus = lambda x,y: x+y >>> l.reduce(agg_plus) 6 ``` # Gotchas Remember to call the .c() method since this resets the object so it can be used further. This is not necessary when ending the chain of operations with .reduce() ## Javascript ``` > l = [1,2,3] > l.map(x => x +1) [2,3,4] > l.map(x => x +1) [2,3,4] ``` ## list_methods - Python ``` >>> l.map(plus_one) L([2,3,4]) >>> l.map(plus_one) L([3,4,5]) ``` ## Gotcha #2 * The list needs to be copied when instantiating the object so it can be reset for other use. In the future one should maybe add a flag to skip this list copy if the list is only used in one place. # TODO * Write tests * Write benchmarks * Test a implementation where a new instance of the class is returned instead of self %prep %autosetup -n list_methods-0.1.3 %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-list-methods -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Tue Jun 20 2023 Python_Bot - 0.1.3-1 - Package Spec generated