summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-06-20 07:37:55 +0000
committerCoprDistGit <infra@openeuler.org>2023-06-20 07:37:55 +0000
commit900230cdb18a8d359561cf1eeb4aa846ebf2813c (patch)
tree75fe821ec5ec792755fb3d5e86e812774f5491e3
parent3588191afc7791860765c683577e6927e5a26a5d (diff)
automatic import of python-FINQopeneuler20.03
-rw-r--r--.gitignore1
-rw-r--r--python-finq.spec282
-rw-r--r--sources1
3 files changed, 284 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..c1da13d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/FINQ-1.1.4.tar.gz
diff --git a/python-finq.spec b/python-finq.spec
new file mode 100644
index 0000000..6650b24
--- /dev/null
+++ b/python-finq.spec
@@ -0,0 +1,282 @@
+%global _empty_manifest_terminate_build 0
+Name: python-FINQ
+Version: 1.1.4
+Release: 1
+Summary: Lightweight conveyor data processing python framework
+License: Apache Software License
+URL: https://github.com/FacelessLord/FINQ
+Source0: https://mirrors.aliyun.com/pypi/web/packages/8a/2b/4a12fd9db5dea836c9d7c3318e647992d1f6e5e641306fe78171a163b6d7/FINQ-1.1.4.tar.gz
+BuildArch: noarch
+
+
+%description
+# FINQ
+Lightweight conveyor data processing python framework, which allows to quickly write long queries without a fear that it'll become unreadable,
+because FINQ as opposed to standard library allows you to write each logical part of query at next line without tearing it and expanding logical block over whole function
+
+## Start
+To start conveyor processing of your iterable you need to wrap it with `FINQ()` object which then allows you to call Basic methods
+
+## Basic methods
+| Method | IsTerminal | Description |
+|--------------------------------------------------|------------|---------------------------------------------------------------------------------------------------------------------------|
+| `concat(b:Iterable[T])` | - | Concatenates two sequences, creating sequence that contains items of the first iterable then of second iterable. |
+| `map(*f:T -> T2)` | - | Applies given function to every element of sequence. |
+| `zip(b:Iterable[T])` | - | Pairs corresponding elements of two sequences in pairs. |
+| `flat_map(f:T -> Collection[T2] = Identity)` | - | Applies given function to every element to get collection, then glues these collections. |
+| `flatten(f:T -> Collection[T] = Identity)` | - | Applies given function to every element to get collection, then glues these collections. Repeats until all elements are non iterable. |
+| `filter(f:T -> bool)` | - | Removes elements that doesn't satisfy predicate from sequence. |
+| `distinct(f:T -> T2)` | - | Skips elements which `f(element)` repeated. |
+| `sort(f:T -> int)` | - | Sorts sequence elements by key given by `f`. |
+| `skip(count:int)` | - | Skips `count` elements from sequence. |
+| `take(count:int)` | - | Limits sequence by `count` elements, dropping others. |
+| `cartesian_product(b:Iterable[T1], mapping:TxT1 -> T2)` | - | Returns Cartesian product of two sequences after application of mapping if specified. |
+| `cartesian_power(pow:int, mapping:T^pow -> T2)` | - | Returns Cartesian power of sequence after application of mapping if specified. |
+| `pairs()` | - | Returns Cartesian square of sequence. Equivalent to Cartesian square with Identity mapping. |
+| `enumerate(start=0)` | - | Maps sequence elements to pair which first value is index in sequence starting by `start`. |
+| `peek(f:T -> ())` | - | Applies function to each element in sequence leaving sequence unchanged. |
+| `group_by(mapping:T -> T2 = Identity)` | - | Splits sequence into sequence of lists of elements which `f(x)` is the same. |
+| `random(precentage:float)` | - | Takes roughly `percentage*100%` of random elements of sequence. |
+| `sort_randomly()` | - | Shuffles sequence. |
+| `join_str(delimiter:str)` | + | Joins sequence by `delimiter`. |
+| `join(seq:Iterable[T2], cond: :TxT2 -> bool, aggr:TxT2 -> T3)`| + | Joins two sequences. Two values are aggregated if `condition` is true. |
+| `for_each(f:T -> () = Consumer)` | + | Calls `f` for every element of a sequence. Equivalent to:<br> <code>for e in collection:</code><br><code> f(e)</code>. |
+| `all(f:T -> bool = IdentityTrue)` | + | Checks if all elements in sequence satisfy predicate. |
+| `any(f:T -> bool = IdentityTrue)` | + | Checks if there exist element in sequence that satisfies predicate. |
+| `none(f:T -> bool = IdentityTrue)` | + | Checks if there no element in sequence that satisfies predicate. |
+| `first()` | + | Takes first element of sequence. |
+| `to_list()` | + | Creates default python-list containing all sequence elements. |
+| `to_set()` | + | Creates default python-set containing all distinct sequence elements. |
+| `to_counter()` | + | Creates Counter containing all sequence elements. |
+| `to_dict(key:T -> TKey = First, value:T -> TValue = Second)` | + | Creates default python-dict containing mapping `(key(x), value(x))` for every `x` in sequence. |
+| `count()` | + | Returns count of elements in sequence. |
+| `min()` | + | Finds minimal element in sequence. |
+| `max()` | + | Finds maximal element in sequence. |
+| `sum()` | + | Sums all elements of sequence. Works only for summable types. |
+| `max_diff()` | + | Counts maximal difference between elements. Equal to difference between max and min for sequence. |
+| `reduce(f:TxT -> T, /, first:T)` | + | Applies function to first two elements, then to result and next element until elements end. Allows to specify first element. |
+| `fold(m:T -> T2, g:T2xT2 -> T2)` | + | Applies mapper to each element, then aggregates pairs of T2 into single T2 until elements end. Equivalent to `finq.map(mapper).reduce(aggregator)` |
+
+## Constant functions
+These functions aren't intended to be called manually. Instead you have to pass them as an arguments to FINQ methods as mappings, reducers, predicates.
+Ordered Collection here is any collection which provides `__get_item__` based on index (Tuple, List)
+
+| Method | | Returns |
+|-----------------|---------------|-------------|
+| `Identity` | `T -> T` | Given argument |
+| `Consumer` | `T -> None` | None |
+| `IdentityTrue` | `T -> bool` | True for any argument |
+| `IdentityFalse` | `T -> bool` | False for any value |
+| `Sum` | `TxT -> T` | Sum of two given values |
+| `PairSum` | `T^2 -> T` | Sum of first two values of Ordered Collection |
+| `First` | `T^n -> T` | First value of Ordered Collection |
+| `Second` | `T^n -> T` | Second value of Ordered Collection |
+| `Multiply` | `TxT -> T` | Product of two given value |
+| `Square` | `T -> T` | Square of given value |
+| `OneArgRandom` | `T -> float` | Random value independent of given value |
+| `TupleSum` | `T^n -> T` | Sum of given Ordered Collection |
+| `PairWith` | `F^n -> (T -> T^2)` | Function that, when applied to value `e` returns `e, f1(f2(...fn(e)...))` |
+| `RPairWith` | `F^n -> (T -> T^2)` | Function that, when applied to value `e` returns `f1(f2(...fn(e)...)), e` |
+| `Compose` | `F^n -> F` | Function that, when applied to value `e` returns `f1(f2(...fn(e)...))` |
+
+
+
+
+%package -n python3-FINQ
+Summary: Lightweight conveyor data processing python framework
+Provides: python-FINQ
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-FINQ
+# FINQ
+Lightweight conveyor data processing python framework, which allows to quickly write long queries without a fear that it'll become unreadable,
+because FINQ as opposed to standard library allows you to write each logical part of query at next line without tearing it and expanding logical block over whole function
+
+## Start
+To start conveyor processing of your iterable you need to wrap it with `FINQ()` object which then allows you to call Basic methods
+
+## Basic methods
+| Method | IsTerminal | Description |
+|--------------------------------------------------|------------|---------------------------------------------------------------------------------------------------------------------------|
+| `concat(b:Iterable[T])` | - | Concatenates two sequences, creating sequence that contains items of the first iterable then of second iterable. |
+| `map(*f:T -> T2)` | - | Applies given function to every element of sequence. |
+| `zip(b:Iterable[T])` | - | Pairs corresponding elements of two sequences in pairs. |
+| `flat_map(f:T -> Collection[T2] = Identity)` | - | Applies given function to every element to get collection, then glues these collections. |
+| `flatten(f:T -> Collection[T] = Identity)` | - | Applies given function to every element to get collection, then glues these collections. Repeats until all elements are non iterable. |
+| `filter(f:T -> bool)` | - | Removes elements that doesn't satisfy predicate from sequence. |
+| `distinct(f:T -> T2)` | - | Skips elements which `f(element)` repeated. |
+| `sort(f:T -> int)` | - | Sorts sequence elements by key given by `f`. |
+| `skip(count:int)` | - | Skips `count` elements from sequence. |
+| `take(count:int)` | - | Limits sequence by `count` elements, dropping others. |
+| `cartesian_product(b:Iterable[T1], mapping:TxT1 -> T2)` | - | Returns Cartesian product of two sequences after application of mapping if specified. |
+| `cartesian_power(pow:int, mapping:T^pow -> T2)` | - | Returns Cartesian power of sequence after application of mapping if specified. |
+| `pairs()` | - | Returns Cartesian square of sequence. Equivalent to Cartesian square with Identity mapping. |
+| `enumerate(start=0)` | - | Maps sequence elements to pair which first value is index in sequence starting by `start`. |
+| `peek(f:T -> ())` | - | Applies function to each element in sequence leaving sequence unchanged. |
+| `group_by(mapping:T -> T2 = Identity)` | - | Splits sequence into sequence of lists of elements which `f(x)` is the same. |
+| `random(precentage:float)` | - | Takes roughly `percentage*100%` of random elements of sequence. |
+| `sort_randomly()` | - | Shuffles sequence. |
+| `join_str(delimiter:str)` | + | Joins sequence by `delimiter`. |
+| `join(seq:Iterable[T2], cond: :TxT2 -> bool, aggr:TxT2 -> T3)`| + | Joins two sequences. Two values are aggregated if `condition` is true. |
+| `for_each(f:T -> () = Consumer)` | + | Calls `f` for every element of a sequence. Equivalent to:<br> <code>for e in collection:</code><br><code> f(e)</code>. |
+| `all(f:T -> bool = IdentityTrue)` | + | Checks if all elements in sequence satisfy predicate. |
+| `any(f:T -> bool = IdentityTrue)` | + | Checks if there exist element in sequence that satisfies predicate. |
+| `none(f:T -> bool = IdentityTrue)` | + | Checks if there no element in sequence that satisfies predicate. |
+| `first()` | + | Takes first element of sequence. |
+| `to_list()` | + | Creates default python-list containing all sequence elements. |
+| `to_set()` | + | Creates default python-set containing all distinct sequence elements. |
+| `to_counter()` | + | Creates Counter containing all sequence elements. |
+| `to_dict(key:T -> TKey = First, value:T -> TValue = Second)` | + | Creates default python-dict containing mapping `(key(x), value(x))` for every `x` in sequence. |
+| `count()` | + | Returns count of elements in sequence. |
+| `min()` | + | Finds minimal element in sequence. |
+| `max()` | + | Finds maximal element in sequence. |
+| `sum()` | + | Sums all elements of sequence. Works only for summable types. |
+| `max_diff()` | + | Counts maximal difference between elements. Equal to difference between max and min for sequence. |
+| `reduce(f:TxT -> T, /, first:T)` | + | Applies function to first two elements, then to result and next element until elements end. Allows to specify first element. |
+| `fold(m:T -> T2, g:T2xT2 -> T2)` | + | Applies mapper to each element, then aggregates pairs of T2 into single T2 until elements end. Equivalent to `finq.map(mapper).reduce(aggregator)` |
+
+## Constant functions
+These functions aren't intended to be called manually. Instead you have to pass them as an arguments to FINQ methods as mappings, reducers, predicates.
+Ordered Collection here is any collection which provides `__get_item__` based on index (Tuple, List)
+
+| Method | | Returns |
+|-----------------|---------------|-------------|
+| `Identity` | `T -> T` | Given argument |
+| `Consumer` | `T -> None` | None |
+| `IdentityTrue` | `T -> bool` | True for any argument |
+| `IdentityFalse` | `T -> bool` | False for any value |
+| `Sum` | `TxT -> T` | Sum of two given values |
+| `PairSum` | `T^2 -> T` | Sum of first two values of Ordered Collection |
+| `First` | `T^n -> T` | First value of Ordered Collection |
+| `Second` | `T^n -> T` | Second value of Ordered Collection |
+| `Multiply` | `TxT -> T` | Product of two given value |
+| `Square` | `T -> T` | Square of given value |
+| `OneArgRandom` | `T -> float` | Random value independent of given value |
+| `TupleSum` | `T^n -> T` | Sum of given Ordered Collection |
+| `PairWith` | `F^n -> (T -> T^2)` | Function that, when applied to value `e` returns `e, f1(f2(...fn(e)...))` |
+| `RPairWith` | `F^n -> (T -> T^2)` | Function that, when applied to value `e` returns `f1(f2(...fn(e)...)), e` |
+| `Compose` | `F^n -> F` | Function that, when applied to value `e` returns `f1(f2(...fn(e)...))` |
+
+
+
+
+%package help
+Summary: Development documents and examples for FINQ
+Provides: python3-FINQ-doc
+%description help
+# FINQ
+Lightweight conveyor data processing python framework, which allows to quickly write long queries without a fear that it'll become unreadable,
+because FINQ as opposed to standard library allows you to write each logical part of query at next line without tearing it and expanding logical block over whole function
+
+## Start
+To start conveyor processing of your iterable you need to wrap it with `FINQ()` object which then allows you to call Basic methods
+
+## Basic methods
+| Method | IsTerminal | Description |
+|--------------------------------------------------|------------|---------------------------------------------------------------------------------------------------------------------------|
+| `concat(b:Iterable[T])` | - | Concatenates two sequences, creating sequence that contains items of the first iterable then of second iterable. |
+| `map(*f:T -> T2)` | - | Applies given function to every element of sequence. |
+| `zip(b:Iterable[T])` | - | Pairs corresponding elements of two sequences in pairs. |
+| `flat_map(f:T -> Collection[T2] = Identity)` | - | Applies given function to every element to get collection, then glues these collections. |
+| `flatten(f:T -> Collection[T] = Identity)` | - | Applies given function to every element to get collection, then glues these collections. Repeats until all elements are non iterable. |
+| `filter(f:T -> bool)` | - | Removes elements that doesn't satisfy predicate from sequence. |
+| `distinct(f:T -> T2)` | - | Skips elements which `f(element)` repeated. |
+| `sort(f:T -> int)` | - | Sorts sequence elements by key given by `f`. |
+| `skip(count:int)` | - | Skips `count` elements from sequence. |
+| `take(count:int)` | - | Limits sequence by `count` elements, dropping others. |
+| `cartesian_product(b:Iterable[T1], mapping:TxT1 -> T2)` | - | Returns Cartesian product of two sequences after application of mapping if specified. |
+| `cartesian_power(pow:int, mapping:T^pow -> T2)` | - | Returns Cartesian power of sequence after application of mapping if specified. |
+| `pairs()` | - | Returns Cartesian square of sequence. Equivalent to Cartesian square with Identity mapping. |
+| `enumerate(start=0)` | - | Maps sequence elements to pair which first value is index in sequence starting by `start`. |
+| `peek(f:T -> ())` | - | Applies function to each element in sequence leaving sequence unchanged. |
+| `group_by(mapping:T -> T2 = Identity)` | - | Splits sequence into sequence of lists of elements which `f(x)` is the same. |
+| `random(precentage:float)` | - | Takes roughly `percentage*100%` of random elements of sequence. |
+| `sort_randomly()` | - | Shuffles sequence. |
+| `join_str(delimiter:str)` | + | Joins sequence by `delimiter`. |
+| `join(seq:Iterable[T2], cond: :TxT2 -> bool, aggr:TxT2 -> T3)`| + | Joins two sequences. Two values are aggregated if `condition` is true. |
+| `for_each(f:T -> () = Consumer)` | + | Calls `f` for every element of a sequence. Equivalent to:<br> <code>for e in collection:</code><br><code> f(e)</code>. |
+| `all(f:T -> bool = IdentityTrue)` | + | Checks if all elements in sequence satisfy predicate. |
+| `any(f:T -> bool = IdentityTrue)` | + | Checks if there exist element in sequence that satisfies predicate. |
+| `none(f:T -> bool = IdentityTrue)` | + | Checks if there no element in sequence that satisfies predicate. |
+| `first()` | + | Takes first element of sequence. |
+| `to_list()` | + | Creates default python-list containing all sequence elements. |
+| `to_set()` | + | Creates default python-set containing all distinct sequence elements. |
+| `to_counter()` | + | Creates Counter containing all sequence elements. |
+| `to_dict(key:T -> TKey = First, value:T -> TValue = Second)` | + | Creates default python-dict containing mapping `(key(x), value(x))` for every `x` in sequence. |
+| `count()` | + | Returns count of elements in sequence. |
+| `min()` | + | Finds minimal element in sequence. |
+| `max()` | + | Finds maximal element in sequence. |
+| `sum()` | + | Sums all elements of sequence. Works only for summable types. |
+| `max_diff()` | + | Counts maximal difference between elements. Equal to difference between max and min for sequence. |
+| `reduce(f:TxT -> T, /, first:T)` | + | Applies function to first two elements, then to result and next element until elements end. Allows to specify first element. |
+| `fold(m:T -> T2, g:T2xT2 -> T2)` | + | Applies mapper to each element, then aggregates pairs of T2 into single T2 until elements end. Equivalent to `finq.map(mapper).reduce(aggregator)` |
+
+## Constant functions
+These functions aren't intended to be called manually. Instead you have to pass them as an arguments to FINQ methods as mappings, reducers, predicates.
+Ordered Collection here is any collection which provides `__get_item__` based on index (Tuple, List)
+
+| Method | | Returns |
+|-----------------|---------------|-------------|
+| `Identity` | `T -> T` | Given argument |
+| `Consumer` | `T -> None` | None |
+| `IdentityTrue` | `T -> bool` | True for any argument |
+| `IdentityFalse` | `T -> bool` | False for any value |
+| `Sum` | `TxT -> T` | Sum of two given values |
+| `PairSum` | `T^2 -> T` | Sum of first two values of Ordered Collection |
+| `First` | `T^n -> T` | First value of Ordered Collection |
+| `Second` | `T^n -> T` | Second value of Ordered Collection |
+| `Multiply` | `TxT -> T` | Product of two given value |
+| `Square` | `T -> T` | Square of given value |
+| `OneArgRandom` | `T -> float` | Random value independent of given value |
+| `TupleSum` | `T^n -> T` | Sum of given Ordered Collection |
+| `PairWith` | `F^n -> (T -> T^2)` | Function that, when applied to value `e` returns `e, f1(f2(...fn(e)...))` |
+| `RPairWith` | `F^n -> (T -> T^2)` | Function that, when applied to value `e` returns `f1(f2(...fn(e)...)), e` |
+| `Compose` | `F^n -> F` | Function that, when applied to value `e` returns `f1(f2(...fn(e)...))` |
+
+
+
+
+%prep
+%autosetup -n FINQ-1.1.4
+
+%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-FINQ -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Tue Jun 20 2023 Python_Bot <Python_Bot@openeuler.org> - 1.1.4-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..5fffad7
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+8b879b8affaa35636ab52cf1e3b7f772 FINQ-1.1.4.tar.gz