%global _empty_manifest_terminate_build 0 Name: python-plusminus Version: 0.7.0 Release: 1 Summary: +/- plusminus is a module that builds on the pyparsing infixNotation helper method to build easy-to-code and License: MIT License URL: https://github.com/pyparsing/plusminus Source0: https://mirrors.nju.edu.cn/pypi/web/packages/61/d3/f9a96cd35a04ccdc9dea30d766ac66cb7ff9f66eff722f977a786bf2a1e6/plusminus-0.7.0.tar.gz BuildArch: noarch Requires: python3-pyparsing %description # plusminus The **plusminus** package provides a ready-to-run arithmetic parser and evaluator, based on [`pyparsing`](https://pyparsing-docs.readthedocs.io/en/latest/index.html)'s [`infix_notation`](https://pyparsing-docs.readthedocs.io/en/latest/pyparsing.html#pyparsing.infixNotation) helper method. Strings containing 6-function arithmetic expressions can be parsed and evaluated using the [`ArithmeticParser`](https://github.com/pyparsing/plusminus/blob/master/doc/arithmetic_parser.md#the-core-basicarithmeticparser): ```python from plusminus import BaseArithmeticParser parser = BaseArithmeticParser() print(parser.evaluate("2+3/10")) ``` The parser can also return an Abstract Syntax Tree of `ArithNode` objects: ```python parsed_elements = parser.parse("2+3/10") ``` Arithmetic expressions are evaluated following standard rules for operator precedence, allowing for use of parentheses to override: () |x| ∩ & ∪ | - ^ ∆ (set operations) ** - * / // × ÷ mod + - < > <= >= == != ≠ ≤ ≥ in ∈ ∉ (element in/not in set) not and ∧ or ∨ ? : (ternary) Functions can be called: abs ceil max round floor str trunc min bool The `BaseArithmeticParser` also supports assignment of variables: r = 5 area = π × r² This last expression could be assigned using `@=` formula assignment: area @= π × r² As `r` is updated, evaluating `area` will be reevaluated using the new value. An `ArithmeticParser` class is also defined, with more extensive operators, including: ! - factorial ° - degree-radian conversion √ ⁿ√ - square root and n'th root (2-9) ⁻¹ ⁰ ¹ ² ³ - common exponents as superscripts and additional pre-defined functions: sin asin rad gcd cos acos deg lcm tan atan ln rnd sgn sinh log randint gamma cosh log2 hypot tanh log10 This parser class can be used in applications using algebra or trigonometry expressions. Custom expressions can be defined using a simple [`API`](https://github.com/pyparsing/plusminus/blob/master/doc/developer_api.md). Example parsers are included for other specialized applications and domains: - dice rolling (`"3d6 + d20"`) - time delta expressions (`"today() + 2d + 12h"`) - retail and business expressions (`"20% off of 19.99"`) - combinatoric expressions (`"6C2"` or `"5P3"` ) These parsers can be incorporated into other applications to support the safe evaluation of user-defined domain-specific expressions. %package -n python3-plusminus Summary: +/- plusminus is a module that builds on the pyparsing infixNotation helper method to build easy-to-code and Provides: python-plusminus BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-plusminus # plusminus The **plusminus** package provides a ready-to-run arithmetic parser and evaluator, based on [`pyparsing`](https://pyparsing-docs.readthedocs.io/en/latest/index.html)'s [`infix_notation`](https://pyparsing-docs.readthedocs.io/en/latest/pyparsing.html#pyparsing.infixNotation) helper method. Strings containing 6-function arithmetic expressions can be parsed and evaluated using the [`ArithmeticParser`](https://github.com/pyparsing/plusminus/blob/master/doc/arithmetic_parser.md#the-core-basicarithmeticparser): ```python from plusminus import BaseArithmeticParser parser = BaseArithmeticParser() print(parser.evaluate("2+3/10")) ``` The parser can also return an Abstract Syntax Tree of `ArithNode` objects: ```python parsed_elements = parser.parse("2+3/10") ``` Arithmetic expressions are evaluated following standard rules for operator precedence, allowing for use of parentheses to override: () |x| ∩ & ∪ | - ^ ∆ (set operations) ** - * / // × ÷ mod + - < > <= >= == != ≠ ≤ ≥ in ∈ ∉ (element in/not in set) not and ∧ or ∨ ? : (ternary) Functions can be called: abs ceil max round floor str trunc min bool The `BaseArithmeticParser` also supports assignment of variables: r = 5 area = π × r² This last expression could be assigned using `@=` formula assignment: area @= π × r² As `r` is updated, evaluating `area` will be reevaluated using the new value. An `ArithmeticParser` class is also defined, with more extensive operators, including: ! - factorial ° - degree-radian conversion √ ⁿ√ - square root and n'th root (2-9) ⁻¹ ⁰ ¹ ² ³ - common exponents as superscripts and additional pre-defined functions: sin asin rad gcd cos acos deg lcm tan atan ln rnd sgn sinh log randint gamma cosh log2 hypot tanh log10 This parser class can be used in applications using algebra or trigonometry expressions. Custom expressions can be defined using a simple [`API`](https://github.com/pyparsing/plusminus/blob/master/doc/developer_api.md). Example parsers are included for other specialized applications and domains: - dice rolling (`"3d6 + d20"`) - time delta expressions (`"today() + 2d + 12h"`) - retail and business expressions (`"20% off of 19.99"`) - combinatoric expressions (`"6C2"` or `"5P3"` ) These parsers can be incorporated into other applications to support the safe evaluation of user-defined domain-specific expressions. %package help Summary: Development documents and examples for plusminus Provides: python3-plusminus-doc %description help # plusminus The **plusminus** package provides a ready-to-run arithmetic parser and evaluator, based on [`pyparsing`](https://pyparsing-docs.readthedocs.io/en/latest/index.html)'s [`infix_notation`](https://pyparsing-docs.readthedocs.io/en/latest/pyparsing.html#pyparsing.infixNotation) helper method. Strings containing 6-function arithmetic expressions can be parsed and evaluated using the [`ArithmeticParser`](https://github.com/pyparsing/plusminus/blob/master/doc/arithmetic_parser.md#the-core-basicarithmeticparser): ```python from plusminus import BaseArithmeticParser parser = BaseArithmeticParser() print(parser.evaluate("2+3/10")) ``` The parser can also return an Abstract Syntax Tree of `ArithNode` objects: ```python parsed_elements = parser.parse("2+3/10") ``` Arithmetic expressions are evaluated following standard rules for operator precedence, allowing for use of parentheses to override: () |x| ∩ & ∪ | - ^ ∆ (set operations) ** - * / // × ÷ mod + - < > <= >= == != ≠ ≤ ≥ in ∈ ∉ (element in/not in set) not and ∧ or ∨ ? : (ternary) Functions can be called: abs ceil max round floor str trunc min bool The `BaseArithmeticParser` also supports assignment of variables: r = 5 area = π × r² This last expression could be assigned using `@=` formula assignment: area @= π × r² As `r` is updated, evaluating `area` will be reevaluated using the new value. An `ArithmeticParser` class is also defined, with more extensive operators, including: ! - factorial ° - degree-radian conversion √ ⁿ√ - square root and n'th root (2-9) ⁻¹ ⁰ ¹ ² ³ - common exponents as superscripts and additional pre-defined functions: sin asin rad gcd cos acos deg lcm tan atan ln rnd sgn sinh log randint gamma cosh log2 hypot tanh log10 This parser class can be used in applications using algebra or trigonometry expressions. Custom expressions can be defined using a simple [`API`](https://github.com/pyparsing/plusminus/blob/master/doc/developer_api.md). Example parsers are included for other specialized applications and domains: - dice rolling (`"3d6 + d20"`) - time delta expressions (`"today() + 2d + 12h"`) - retail and business expressions (`"20% off of 19.99"`) - combinatoric expressions (`"6C2"` or `"5P3"` ) These parsers can be incorporated into other applications to support the safe evaluation of user-defined domain-specific expressions. %prep %autosetup -n plusminus-0.7.0 %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-plusminus -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Thu Jun 08 2023 Python_Bot - 0.7.0-1 - Package Spec generated