Mock Version: 2.3 ENTER ['do_with_status'](['bash', '--login', '-c', '/usr/bin/rpmbuild -bs --target x86_64 --nodeps /builddir/build/SPECS/pyparsing.spec'], chrootPath='/var/lib/mock/epel-8-x86_64-1593721700.065505/root'env={'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'C.UTF-8'}shell=Falselogger=timeout=0uid=1001gid=135user='mockbuild'nspawn_args=['--capability=cap_ipc_lock', '--rlimit=RLIMIT_NOFILE=10240', '--capability=cap_ipc_lock', '--bind=/tmp/mock-resolv.8v5_1f8o:/etc/resolv.conf', '--bind=/dev/loop-control', '--bind=/dev/loop0', '--bind=/dev/loop1', '--bind=/dev/loop2', '--bind=/dev/loop3', '--bind=/dev/loop4', '--bind=/dev/loop5', '--bind=/dev/loop6', '--bind=/dev/loop7', '--bind=/dev/loop8', '--bind=/dev/loop9', '--bind=/dev/loop10', '--bind=/dev/loop11']unshare_net=FalseprintOutput=True) Using nspawn with args ['--capability=cap_ipc_lock', '--rlimit=RLIMIT_NOFILE=10240', '--capability=cap_ipc_lock', '--bind=/tmp/mock-resolv.8v5_1f8o:/etc/resolv.conf', '--bind=/dev/loop-control', '--bind=/dev/loop0', '--bind=/dev/loop1', '--bind=/dev/loop2', '--bind=/dev/loop3', '--bind=/dev/loop4', '--bind=/dev/loop5', '--bind=/dev/loop6', '--bind=/dev/loop7', '--bind=/dev/loop8', '--bind=/dev/loop9', '--bind=/dev/loop10', '--bind=/dev/loop11'] Executing command: ['/usr/bin/systemd-nspawn', '-q', '-M', '015b144c311444989d9c01a6000a794e', '-D', '/var/lib/mock/epel-8-x86_64-1593721700.065505/root', '-a', '-u', 'mockbuild', '--capability=cap_ipc_lock', '--rlimit=RLIMIT_NOFILE=10240', '--capability=cap_ipc_lock', '--bind=/tmp/mock-resolv.8v5_1f8o:/etc/resolv.conf', '--bind=/dev/loop-control', '--bind=/dev/loop0', '--bind=/dev/loop1', '--bind=/dev/loop2', '--bind=/dev/loop3', '--bind=/dev/loop4', '--bind=/dev/loop5', '--bind=/dev/loop6', '--bind=/dev/loop7', '--bind=/dev/loop8', '--bind=/dev/loop9', '--bind=/dev/loop10', '--bind=/dev/loop11', '--console=pipe', '--setenv=TERM=vt100', '--setenv=SHELL=/bin/bash', '--setenv=HOME=/builddir', '--setenv=HOSTNAME=mock', '--setenv=PATH=/usr/bin:/bin:/usr/sbin:/sbin', '--setenv=PROMPT_COMMAND=printf "\\033]0;\\007"', '--setenv=PS1= \\s-\\v\\$ ', '--setenv=LANG=C.UTF-8', 'bash', '--login', '-c', '/usr/bin/rpmbuild -bs --target x86_64 --nodeps /builddir/build/SPECS/pyparsing.spec'] with env {'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'C.UTF-8', 'SYSTEMD_NSPAWN_TMPFS_TMP': '0'} and shell False sh: /usr/bin/python2: No such file or directory sh: /usr/bin/python2: No such file or directory sh: /usr/bin/python2: No such file or directory sh: /usr/bin/python2: No such file or directory warning: Macro expanded in comment on line 129: %{python2_sitelib}/__pycache__/* sh: /usr/bin/python2: No such file or directory Building target platforms: x86_64 Building for target x86_64 Wrote: /builddir/build/SRPMS/pyparsing-2.4.7-1.el8.src.rpm Child return code was: 0 ENTER ['do_with_status'](['bash', '--login', '-c', '/usr/bin/rpmbuild -bb --target x86_64 --nodeps /builddir/build/SPECS/pyparsing.spec'], chrootPath='/var/lib/mock/epel-8-x86_64-1593721700.065505/root'env={'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'C.UTF-8'}shell=Falselogger=timeout=0uid=1001gid=135user='mockbuild'nspawn_args=['--capability=cap_ipc_lock', '--rlimit=RLIMIT_NOFILE=10240', '--capability=cap_ipc_lock', '--bind=/tmp/mock-resolv.8v5_1f8o:/etc/resolv.conf', '--bind=/dev/loop-control', '--bind=/dev/loop0', '--bind=/dev/loop1', '--bind=/dev/loop2', '--bind=/dev/loop3', '--bind=/dev/loop4', '--bind=/dev/loop5', '--bind=/dev/loop6', '--bind=/dev/loop7', '--bind=/dev/loop8', '--bind=/dev/loop9', '--bind=/dev/loop10', '--bind=/dev/loop11']unshare_net=FalseprintOutput=True) Using nspawn with args ['--capability=cap_ipc_lock', '--rlimit=RLIMIT_NOFILE=10240', '--capability=cap_ipc_lock', '--bind=/tmp/mock-resolv.8v5_1f8o:/etc/resolv.conf', '--bind=/dev/loop-control', '--bind=/dev/loop0', '--bind=/dev/loop1', '--bind=/dev/loop2', '--bind=/dev/loop3', '--bind=/dev/loop4', '--bind=/dev/loop5', '--bind=/dev/loop6', '--bind=/dev/loop7', '--bind=/dev/loop8', '--bind=/dev/loop9', '--bind=/dev/loop10', '--bind=/dev/loop11'] Executing command: ['/usr/bin/systemd-nspawn', '-q', '-M', 'bcd20a9e9ff44ff796f17e7b6d693a66', '-D', '/var/lib/mock/epel-8-x86_64-1593721700.065505/root', '-a', '-u', 'mockbuild', '--capability=cap_ipc_lock', '--rlimit=RLIMIT_NOFILE=10240', '--capability=cap_ipc_lock', '--bind=/tmp/mock-resolv.8v5_1f8o:/etc/resolv.conf', '--bind=/dev/loop-control', '--bind=/dev/loop0', '--bind=/dev/loop1', '--bind=/dev/loop2', '--bind=/dev/loop3', '--bind=/dev/loop4', '--bind=/dev/loop5', '--bind=/dev/loop6', '--bind=/dev/loop7', '--bind=/dev/loop8', '--bind=/dev/loop9', '--bind=/dev/loop10', '--bind=/dev/loop11', '--console=pipe', '--setenv=TERM=vt100', '--setenv=SHELL=/bin/bash', '--setenv=HOME=/builddir', '--setenv=HOSTNAME=mock', '--setenv=PATH=/usr/bin:/bin:/usr/sbin:/sbin', '--setenv=PROMPT_COMMAND=printf "\\033]0;\\007"', '--setenv=PS1= \\s-\\v\\$ ', '--setenv=LANG=C.UTF-8', 'bash', '--login', '-c', '/usr/bin/rpmbuild -bb --target x86_64 --nodeps /builddir/build/SPECS/pyparsing.spec'] with env {'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'C.UTF-8', 'SYSTEMD_NSPAWN_TMPFS_TMP': '0'} and shell False warning: Macro expanded in comment on line 129: %{python2_sitelib}/__pycache__/* Building target platforms: x86_64 Building for target x86_64 Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.UUFzaR + umask 022 + cd /builddir/build/BUILD + cd /builddir/build/BUILD + rm -rf pyparsing-pyparsing_2.4.7 + /usr/bin/gzip -dc /builddir/build/SOURCES/pyparsing-2.4.7.tar.gz + /usr/bin/tar -xof - + STATUS=0 + '[' 0 -ne 0 ']' + cd pyparsing-pyparsing_2.4.7 + /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . + dos2unix -k CHANGES LICENSE dos2unix: converting file CHANGES to Unix format... dos2unix: converting file LICENSE to Unix format... + exit 0 Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.sFIJrb + umask 022 + cd /builddir/build/BUILD + cd pyparsing-pyparsing_2.4.7 + CFLAGS='-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection' + LDFLAGS='-Wl,-z,relro -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld' + /usr/bin/python2 setup.py bdist_wheel running bdist_wheel running build running build_py creating build creating build/lib copying pyparsing.py -> build/lib installing to build/bdist.linux-x86_64/wheel running install running install_lib creating build/bdist.linux-x86_64 creating build/bdist.linux-x86_64/wheel copying build/lib/pyparsing.py -> build/bdist.linux-x86_64/wheel running install_egg_info running egg_info creating pyparsing.egg-info writing pyparsing.egg-info/PKG-INFO writing top-level names to pyparsing.egg-info/top_level.txt writing dependency_links to pyparsing.egg-info/dependency_links.txt writing manifest file 'pyparsing.egg-info/SOURCES.txt' reading manifest file 'pyparsing.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' warning: no files found matching 'HowToUsePyparsing.rst' warning: no files found matching 'pyparsingClassDiagram.*' warning: no files found matching 'README.md' warning: no files found matching 'modules.rst' no previously-included directories found matching 'docs/_build/*' writing manifest file 'pyparsing.egg-info/SOURCES.txt' Copying pyparsing.egg-info to build/bdist.linux-x86_64/wheel/pyparsing-2.4.7-py2.7.egg-info running install_scripts creating build/bdist.linux-x86_64/wheel/pyparsing-2.4.7.dist-info/WHEEL creating '/builddir/build/BUILD/pyparsing-pyparsing_2.4.7/dist/pyparsing-2.4.7-py2.py3-none-any.whl' and adding '.' to it adding 'pyparsing.py' adding 'pyparsing-2.4.7.dist-info/LICENSE.txt' adding 'pyparsing-2.4.7.dist-info/top_level.txt' adding 'pyparsing-2.4.7.dist-info/WHEEL' adding 'pyparsing-2.4.7.dist-info/METADATA' adding 'pyparsing-2.4.7.dist-info/RECORD' removing build/bdist.linux-x86_64/wheel + sleep 1 + CFLAGS='-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection' + LDFLAGS='-Wl,-z,relro -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld' + /usr/bin/python3.6 setup.py bdist_wheel running bdist_wheel running build running build_py installing to build/bdist.linux-x86_64/wheel running install running install_lib creating build/bdist.linux-x86_64/wheel copying build/lib/pyparsing.py -> build/bdist.linux-x86_64/wheel running install_egg_info running egg_info writing pyparsing.egg-info/PKG-INFO writing dependency_links to pyparsing.egg-info/dependency_links.txt writing top-level names to pyparsing.egg-info/top_level.txt reading manifest file 'pyparsing.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' warning: no files found matching 'HowToUsePyparsing.rst' warning: no files found matching 'pyparsingClassDiagram.*' warning: no files found matching 'README.md' warning: no files found matching 'modules.rst' no previously-included directories found matching 'docs/_build/*' writing manifest file 'pyparsing.egg-info/SOURCES.txt' Copying pyparsing.egg-info to build/bdist.linux-x86_64/wheel/pyparsing-2.4.7-py3.6.egg-info running install_scripts creating build/bdist.linux-x86_64/wheel/pyparsing-2.4.7.dist-info/WHEEL creating '/builddir/build/BUILD/pyparsing-pyparsing_2.4.7/dist/pyparsing-2.4.7-py2.py3-none-any.whl' and adding '.' to it adding 'pyparsing.py' adding 'pyparsing-2.4.7.dist-info/LICENSE.txt' adding 'pyparsing-2.4.7.dist-info/top_level.txt' adding 'pyparsing-2.4.7.dist-info/WHEEL' adding 'pyparsing-2.4.7.dist-info/METADATA' adding 'pyparsing-2.4.7.dist-info/RECORD' removing build/bdist.linux-x86_64/wheel + sleep 1 + pushd docs ~/build/BUILD/pyparsing-pyparsing_2.4.7/docs ~/build/BUILD/pyparsing-pyparsing_2.4.7 + sed -i /alabaster/d conf.py + sphinx-build -b html . html Running Sphinx v1.7.6 making output directory... loading pickled environment... not yet created building [mo]: targets for 0 po files that are out of date building [html]: targets for 5 source files that are out of date updating environment: 5 added, 0 changed, 0 removed reading sources... [ 20%] CODE_OF_CONDUCT reading sources... [ 40%] HowToUsePyparsing reading sources... [ 60%] index reading sources... [ 80%] modules reading sources... [100%] pyparsing WARNING: invalid signature for autoclass ('pyparsing::pyparsing_unicode.עִברִית') WARNING: don't know which module to import for autodocumenting 'pyparsing::pyparsing_unicode.עִברִית' (try placing a "module" or "currentmodule" directive in the document, or giving an explicit module name) WARNING: invalid signature for autoclass ('pyparsing::pyparsing_unicode.देवनागरी') WARNING: don't know which module to import for autodocumenting 'pyparsing::pyparsing_unicode.देवनागरी' (try placing a "module" or "currentmodule" directive in the document, or giving an explicit module name) looking for now-outdated files... none found pickling environment... done checking consistency... done preparing documents... done writing output... [ 20%] CODE_OF_CONDUCT writing output... [ 40%] HowToUsePyparsing writing output... [ 60%] index writing output... [ 80%] modules writing output... [100%] pyparsing generating indices... genindex py-modindex writing additional pages... search copying static files... done copying extra files... done dumping search index in English (code: en) ... done dumping object inventory... done build succeeded, 4 warnings. The HTML pages are in html. + popd ~/build/BUILD/pyparsing-pyparsing_2.4.7 + exit 0 Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.GDLlUO + umask 022 + cd /builddir/build/BUILD + '[' /builddir/build/BUILDROOT/pyparsing-2.4.7-1.el8.x86_64 '!=' / ']' + rm -rf /builddir/build/BUILDROOT/pyparsing-2.4.7-1.el8.x86_64 ++ dirname /builddir/build/BUILDROOT/pyparsing-2.4.7-1.el8.x86_64 + mkdir -p /builddir/build/BUILDROOT + mkdir /builddir/build/BUILDROOT/pyparsing-2.4.7-1.el8.x86_64 + cd pyparsing-pyparsing_2.4.7 + pip2.7 install -I dist/pyparsing-2.4.7-py2.py3-none-any.whl --root /builddir/build/BUILDROOT/pyparsing-2.4.7-1.el8.x86_64 --strip-file-prefix /builddir/build/BUILDROOT/pyparsing-2.4.7-1.el8.x86_64 --no-deps Processing ./dist/pyparsing-2.4.7-py2.py3-none-any.whl Installing collected packages: pyparsing Successfully installed pyparsing-2.4.7 + CFLAGS='-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection' + /usr/bin/python3.6 -m pip install -I dist/pyparsing-2.4.7-py2.py3-none-any.whl --root /builddir/build/BUILDROOT/pyparsing-2.4.7-1.el8.x86_64 --strip-file-prefix /builddir/build/BUILDROOT/pyparsing-2.4.7-1.el8.x86_64 --no-deps Processing ./dist/pyparsing-2.4.7-py2.py3-none-any.whl Installing collected packages: pyparsing Successfully installed pyparsing-2.4.7 + /usr/lib/rpm/find-debuginfo.sh -j2 --strict-build-id -m -i --build-id-seed 2.4.7-1.el8 --unique-debug-suffix -2.4.7-1.el8.x86_64 --unique-debug-src-base pyparsing-2.4.7-1.el8.x86_64 --run-dwz --dwz-low-mem-die-limit 10000000 --dwz-max-die-limit 110000000 -S debugsourcefiles.list /builddir/build/BUILD/pyparsing-pyparsing_2.4.7 find: 'debug': No such file or directory + /usr/lib/rpm/check-buildroot + /usr/lib/rpm/redhat/brp-ldconfig /sbin/ldconfig: Warning: ignoring configuration file that cannot be opened: /etc/ld.so.conf: No such file or directory + /usr/lib/rpm/brp-compress + /usr/lib/rpm/brp-strip-static-archive /usr/bin/strip + /usr/lib/rpm/brp-python-bytecompile '' 1 Bytecompiling .py files below /builddir/build/BUILDROOT/pyparsing-2.4.7-1.el8.x86_64/usr/lib/python3.6 using /usr/libexec/platform-python Bytecompiling .py files below /builddir/build/BUILDROOT/pyparsing-2.4.7-1.el8.x86_64/usr/lib/python2.7 using /usr/bin/python2.7 + /usr/lib/rpm/brp-python-hardlink + PYTHON3=/usr/bin/python3.6 + /usr/lib/rpm/redhat/brp-mangle-shebangs Executing(%check): /bin/sh -e /var/tmp/rpm-tmp.yYfiYv + umask 022 + cd /builddir/build/BUILD + cd pyparsing-pyparsing_2.4.7 + export LANG=en_US.utf8 + LANG=en_US.utf8 + /usr/bin/python2 unitTests.py ...........................................................................................................................................................................................................................Beginning test of pyparsing, version 2.4.7 30 Mar 2020 00:43 UTC Python version 2.7.17 (default, Jun 5 2020, 03:38:32) [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)] ---------------------------------------------------------------------- Ran 219 tests in 5.254s OK + /usr/bin/python2 simple_unit_tests.py simple_unit_tests.py requires Python 3.x - exiting... + /usr/bin/python3.6 unitTests.py ...........................................................................................................................................................................................................................Beginning test of pyparsing, version 2.4.7 30 Mar 2020 00:43 UTC Python version 3.6.8 (default, Apr 16 2020, 01:36:27) [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)] ---------------------------------------------------------------------- Ran 219 tests in 4.977s OK + /usr/bin/python3.6 simple_unit_tests.py ............. ---------------------------------------------------------------------- Ran 13 tests in 0.020s OK Simple match - Literal("xyz") ['xyz'] Simple match after skipping whitespace - Literal("xyz") ['xyz'] Simple fail - parse an empty string - Literal("xyz") ^ ParseException: Expected "xyz" (at char 0), (line:1, col:1) __main__.TestLiteral pyparsing.Literal - "xyz" Simple fail - parse a mismatching string - Literal("xyz") xyu ^ ParseException: Expected "xyz", found 'x' (at char 0), (line:1, col:1) __main__.TestLiteral pyparsing.Literal - "xyz" Simple fail - parse a partially matching string - Literal("xyz") xy ^ ParseException: Expected "xyz", found 'x' (at char 0), (line:1, col:1) __main__.TestLiteral pyparsing.Literal - "xyz" Fail - parse a partially matching string by matching individual letters - And({"x" "y" "z"}) xy ^ ParseException: Expected "z", found end of text (at char 2), (line:1, col:3) __main__.TestLiteral pyparsing._SingleCharLiteral - "z" Match colors, converting to consistent case - ZeroOrMore([{'RED' | 'GREEN' | 'BLUE'}]...) ['RED', 'GREEN', 'BLUE', 'BLUE', 'GREEN', 'GREEN', 'RED'] Simple Word match - _WordRegex(W:(xy)) ['xxyxxyy'] Simple Word match of two separate Words - And({W:(x) W:(y)}) ['xxxxx', 'yy'] Simple Word match of two separate Words - implicitly skips whitespace - And({W:(x) W:(y)}) ['xxxxx', 'yy'] Parsing real numbers - fail, parsed numbers are in pieces - ZeroOrMore([{W:(0123...) "." W:(0123...)}]...) ['1', '.', '2', '2', '.', '3', '3', '.', '1416', '98', '.', '6'] Parsing real numbers - better, use Combine to combine multiple tokens into one - ZeroOrMore([Combine:({W:(0123...) "." W:(0123...)})]...) ['1.2', '2.3', '3.1416', '98.6'] Match several words - ZeroOrMore([{W:(x) | W:(y)}]...) ['xx', 'y', 'xx', 'yy', 'xx', 'y', 'x', 'y', 'xxx', 'y'] Match several words, skipping whitespace - ZeroOrMore([{W:(x) | W:(y)}]...) ['x', 'x', 'y', 'xx', 'y', 'y', 'xx', 'y', 'x', 'y', 'x', 'xx', 'y'] Match several words, skipping whitespace (old style) - OneOrMore({{W:(x) | W:(y)}}...) ['x', 'x', 'y', 'xx', 'y', 'y', 'xx', 'y', 'x', 'y', 'x', 'xx', 'y'] Match words and numbers - show use of results names to collect types of tokens - ZeroOrMore([{W:(ABCD...) | integer}]...) ['sdlfj', 23084, 'ksdfs', 8234, 'kjsdlfkjd', 934] - alpha: ['sdlfj', 'ksdfs', 'kjsdlfkjd'] - int: [23084, 8234, 934] Using delimitedList (comma is the default delimiter) - And(W:(ABCD...) [, W:(ABCD...)]...) ['xxyx', 'xy', 'y', 'xxyx', 'yxx', 'xy'] Using delimitedList, with ':' delimiter - Combine(W:(0123...) [: W:(0123...)]...) ['0A:4B:73:21:FE:76'] Match with results name - Literal("xyz") ['xyz'] - value: 'xyz' Match with results name - using naming short-cut - Literal("xyz") ['xyz'] - value: 'xyz' Define multiple results names - And({W:(ABCD..., ABCD...) "=" integer}) ['range', '=', 5280] - key: 'range' - value: 5280 Define multiple results names in groups - ZeroOrMore([Group:({W:(ABCD...) Suppress:("=") {real number with scientific notation | real number | signed integer}})]...) [['range', 5280], ['long', -138.52], ['lat', 46.91]] [0]: ['range', 5280] - key: 'range' - value: 5280 [1]: ['long', -138.52] - key: 'long' - value: -138.52 [2]: ['lat', 46.91] - key: 'lat' - value: 46.91 Define multiple results names in groups - use Dict to define results names using parsed keys - Dict(Dict:([Group:({W:(ABCD...) Suppress:("=") {real number with scientific notation | real number | signed integer}})]...)) [['range', 5280], ['long', -138.52], ['lat', 46.91]] - lat: 46.91 - long: -138.52 - range: 5280 Define multiple value types - Dict(Dict:([Group:({W:(ABCD...) Suppress:("=") {real number with scientific notation | real number | signed integer | True | False | quoted string, starting with ' ending with '}})]...)) [['long', -122.47], ['lat', 37.82], ['public', 'True'], ['name', 'Golden Gate Bridge']] - lat: 37.82 - long: -122.47 - name: 'Golden Gate Bridge' - public: 'True' Parsing real numbers - use parse action to convert to float at parse time - ZeroOrMore([Combine:({W:(0123...) "." W:(0123...)})]...) [1.2, 2.3, 3.1416, 98.6] Match with numeric string converted to int - _WordRegex(W:(0123...)) [12345] Use two parse actions to convert numeric string, then convert to datetime - _WordRegex(W:(0123...)) [datetime.datetime(2018, 9, 20, 3, 53, 48)] Use tokenMap for parse actions that operate on a single-length token - _WordRegex(W:(0123...)) [datetime.datetime(2018, 9, 20, 3, 53, 48)] Using a built-in function that takes a sequence of strs as a parse action - ZeroOrMore([W:(0123...)]...) ['0A:4B:73:21:FE:76'] Using a built-in function that takes a sequence of strs as a parse action - ZeroOrMore([W:(0123...)]...) ['0A', '21', '4B', '73', '76', 'FE'] A parse action that adds new key-values - ZeroOrMore([integer]...) [27, 1, 14, 22, 89] - ave: 30.6 - max: 89 - min: 1 - sum: 153 Parsing real numbers - using Regex instead of Combine - ZeroOrMore([Re:('\\d+\\.\\d+')]...) [1.2, 2.3, 3.1416, 98.6] Define a condition to only match numeric values that are multiples of 7 - ZeroOrMore([W:(0123...)]...) ['14', '35', '77'] Separate conversion to int and condition into separate parse action/conditions - ZeroOrMore([W:(0123...)]...) [14, 35, 77] Use transformString to convert simple markup to HTML - And({* | _ | / "(" !W:()) ")"}) Show in bold, underscore, or italic type A comma-delimited list of words - And(W:(ABCD...) [, W:(ABCD...)]...) ['this', 'that', 'blah', 'foo', 'bar'] A counted array of words - ZeroOrMore([(len) W:(ab)...]...) [['aaa', 'bbb'], [], ['abab', 'bbaa', 'abbab']] [0]: ['aaa', 'bbb'] [1]: [] [2]: ['abab', 'bbaa', 'abbab'] skipping comments with ignore - And({identifier "=" fnumber}) ['abc_100', '=', 3.1416] - lhs: 'abc_100' - rhs: 3.1416 some pre-defined expressions in pyparsing_common, and building a dotted identifier with delimted_list - And({{real number with scientific notation | real number | signed integer} identifier [. identifier]... IPv4 address}) [1001, 'www.google.com', '192.168.10.199'] - id_num: 1001 - ip_address: '192.168.10.199' - name: 'www.google.com' using oneOf (shortcut for Literal('a') | Literal('b') | Literal('c')) - ZeroOrMore([a | b | c]...) ['a', 'b', 'a', 'b', 'b', 'a', 'c', 'c', 'a', 'b', 'b'] parsing nested parentheses - Forward(nested () expression) [['a', 'b', ['c'], 'd', ['e', 'f', 'g', []]]] [0]: ['a', 'b', ['c'], 'd', ['e', 'f', 'g', []]] [0]: a [1]: b [2]: ['c'] [3]: d [4]: ['e', 'f', 'g', []] [0]: e [1]: f [2]: g [3]: [] parsing nested braces - And({"if" nested () expression nested {} expression}) ['if', [['x', '==', 'y'], '||', '!z'], ['printf(', '"{}"', ');']] - body: [['printf(', '"{}"', ');']] [0]: ['printf(', '"{}"', ');'] - condition: [[['x', '==', 'y'], '||', '!z']] [0]: [['x', '==', 'y'], '||', '!z'] [0]: ['x', '==', 'y'] [1]: || [2]: !z Processing files: python2-pyparsing-2.4.7-1.el8.noarch Executing(%doc): /bin/sh -e /var/tmp/rpm-tmp.P632DF Executing(%license): /bin/sh -e /var/tmp/rpm-tmp.jTsXlP + exit 0 + umask 022 + cd /builddir/build/BUILD + cd pyparsing-pyparsing_2.4.7 + DOCDIR=/builddir/build/BUILDROOT/pyparsing-2.4.7-1.el8.x86_64/usr/share/doc/python2-pyparsing + export LC_ALL=C + LC_ALL=C + export DOCDIR + /usr/bin/mkdir -p /builddir/build/BUILDROOT/pyparsing-2.4.7-1.el8.x86_64/usr/share/doc/python2-pyparsing + cp -pr CHANGES /builddir/build/BUILDROOT/pyparsing-2.4.7-1.el8.x86_64/usr/share/doc/python2-pyparsing + cp -pr README.rst /builddir/build/BUILDROOT/pyparsing-2.4.7-1.el8.x86_64/usr/share/doc/python2-pyparsing + exit 0 + umask 022 + cd /builddir/build/BUILD + cd pyparsing-pyparsing_2.4.7 + LICENSEDIR=/builddir/build/BUILDROOT/pyparsing-2.4.7-1.el8.x86_64/usr/share/licenses/python2-pyparsing + export LC_ALL=C + LC_ALL=C + export LICENSEDIR + /usr/bin/mkdir -p /builddir/build/BUILDROOT/pyparsing-2.4.7-1.el8.x86_64/usr/share/licenses/python2-pyparsing + cp -pr LICENSE /builddir/build/BUILDROOT/pyparsing-2.4.7-1.el8.x86_64/usr/share/licenses/python2-pyparsing + exit 0 warning: File listed twice: /usr/lib/python2.7/site-packages/pyparsing.py Provides: python2-pyparsing = 2.4.7-1.el8 python2.7dist(pyparsing) = 2.4.7 python2dist(pyparsing) = 2.4.7 Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PartialHardlinkSets) <= 4.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 Requires: python(abi) = 2.7 Processing files: python3-pyparsing-2.4.7-1.el8.noarch Executing(%doc): /bin/sh -e /var/tmp/rpm-tmp.9CEox3 + umask 022 + cd /builddir/build/BUILD + cd pyparsing-pyparsing_2.4.7 + DOCDIR=/builddir/build/BUILDROOT/pyparsing-2.4.7-1.el8.x86_64/usr/share/doc/python3-pyparsing + export LC_ALL=C + LC_ALL=C + export DOCDIR + /usr/bin/mkdir -p /builddir/build/BUILDROOT/pyparsing-2.4.7-1.el8.x86_64/usr/share/doc/python3-pyparsing + cp -pr CHANGES /builddir/build/BUILDROOT/pyparsing-2.4.7-1.el8.x86_64/usr/share/doc/python3-pyparsing + cp -pr README.rst /builddir/build/BUILDROOT/pyparsing-2.4.7-1.el8.x86_64/usr/share/doc/python3-pyparsing + exit 0 Executing(%license): /bin/sh -e /var/tmp/rpm-tmp.qtPrKh + umask 022 + cd /builddir/build/BUILD + cd pyparsing-pyparsing_2.4.7 + LICENSEDIR=/builddir/build/BUILDROOT/pyparsing-2.4.7-1.el8.x86_64/usr/share/licenses/python3-pyparsing + export LC_ALL=C + LC_ALL=C + export LICENSEDIR + /usr/bin/mkdir -p /builddir/build/BUILDROOT/pyparsing-2.4.7-1.el8.x86_64/usr/share/licenses/python3-pyparsing + cp -pr LICENSE /builddir/build/BUILDROOT/pyparsing-2.4.7-1.el8.x86_64/usr/share/licenses/python3-pyparsing + exit 0 Provides: python3-pyparsing = 2.4.7-1.el8 python3.6dist(pyparsing) = 2.4.7 python3dist(pyparsing) = 2.4.7 Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PartialHardlinkSets) <= 4.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 Requires: python(abi) = 3.6 Processing files: pyparsing-doc-2.4.7-1.el8.noarch Executing(%doc): /bin/sh -e /var/tmp/rpm-tmp.o5KUqA + umask 022 + cd /builddir/build/BUILD + cd pyparsing-pyparsing_2.4.7 + DOCDIR=/builddir/build/BUILDROOT/pyparsing-2.4.7-1.el8.x86_64/usr/share/doc/pyparsing-doc + export LC_ALL=C + LC_ALL=C + export DOCDIR + /usr/bin/mkdir -p /builddir/build/BUILDROOT/pyparsing-2.4.7-1.el8.x86_64/usr/share/doc/pyparsing-doc + cp -pr CHANGES /builddir/build/BUILDROOT/pyparsing-2.4.7-1.el8.x86_64/usr/share/doc/pyparsing-doc + cp -pr README.rst /builddir/build/BUILDROOT/pyparsing-2.4.7-1.el8.x86_64/usr/share/doc/pyparsing-doc + cp -pr docs/html /builddir/build/BUILDROOT/pyparsing-2.4.7-1.el8.x86_64/usr/share/doc/pyparsing-doc + cp -pr examples /builddir/build/BUILDROOT/pyparsing-2.4.7-1.el8.x86_64/usr/share/doc/pyparsing-doc + exit 0 Executing(%license): /bin/sh -e /var/tmp/rpm-tmp.apfWaT + umask 022 + cd /builddir/build/BUILD + cd pyparsing-pyparsing_2.4.7 + LICENSEDIR=/builddir/build/BUILDROOT/pyparsing-2.4.7-1.el8.x86_64/usr/share/licenses/pyparsing-doc + export LC_ALL=C + LC_ALL=C + export LICENSEDIR + /usr/bin/mkdir -p /builddir/build/BUILDROOT/pyparsing-2.4.7-1.el8.x86_64/usr/share/licenses/pyparsing-doc + cp -pr LICENSE /builddir/build/BUILDROOT/pyparsing-2.4.7-1.el8.x86_64/usr/share/licenses/pyparsing-doc + exit 0 Provides: pyparsing-doc = 2.4.7-1.el8 Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 Checking for unpackaged file(s): /usr/lib/rpm/check-files /builddir/build/BUILDROOT/pyparsing-2.4.7-1.el8.x86_64 Wrote: /builddir/build/RPMS/python2-pyparsing-2.4.7-1.el8.noarch.rpm Wrote: /builddir/build/RPMS/python3-pyparsing-2.4.7-1.el8.noarch.rpm Wrote: /builddir/build/RPMS/pyparsing-doc-2.4.7-1.el8.noarch.rpm Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.Ob2Vae + umask 022 + cd /builddir/build/BUILD + cd pyparsing-pyparsing_2.4.7 + /usr/bin/rm -rf /builddir/build/BUILDROOT/pyparsing-2.4.7-1.el8.x86_64 + exit 0 Child return code was: 0