Mock Version: 1.4.16 ENTER ['do_with_status'](['bash', '--login', '-c', '/usr/bin/rpmbuild -bs --target x86_64 --nodeps /builddir/build/SPECS/pyparsing.spec'], chrootPath='/var/lib/mock/1007694-epel-7-x86_64-1566224156.907617/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': 'en_US.UTF-8'}shell=Falselogger=timeout=0uid=1001gid=135user='mockbuild'nspawn_args=['--capability=cap_ipc_lock', '--bind=/tmp/mock-resolv.d1qwf7f5:/etc/resolv.conf']unshare_net=FalseprintOutput=True) Using nspawn with args ['--capability=cap_ipc_lock', '--bind=/tmp/mock-resolv.d1qwf7f5:/etc/resolv.conf'] Executing command: ['/usr/bin/systemd-nspawn', '-q', '-M', '34f4c324180b4b53b57c944afd703869', '-D', '/var/lib/mock/1007694-epel-7-x86_64-1566224156.907617/root', '-a', '--capability=cap_ipc_lock', '--bind=/tmp/mock-resolv.d1qwf7f5:/etc/resolv.conf', '--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=en_US.UTF-8', '-u', 'mockbuild', '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': 'en_US.UTF-8'} and shell False BUILDSTDERR: sh: /usr/bin/python2: No such file or directory BUILDSTDERR: sh: /usr/bin/python2: No such file or directory BUILDSTDERR: 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.0-1.el7.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/1007694-epel-7-x86_64-1566224156.907617/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': 'en_US.UTF-8'}shell=Falselogger=timeout=0uid=1001gid=135user='mockbuild'nspawn_args=['--capability=cap_ipc_lock', '--bind=/tmp/mock-resolv.d1qwf7f5:/etc/resolv.conf']unshare_net=FalseprintOutput=True) Using nspawn with args ['--capability=cap_ipc_lock', '--bind=/tmp/mock-resolv.d1qwf7f5:/etc/resolv.conf'] Executing command: ['/usr/bin/systemd-nspawn', '-q', '-M', 'b2b16ef2160748919d4c0cd1d702c8aa', '-D', '/var/lib/mock/1007694-epel-7-x86_64-1566224156.907617/root', '-a', '--capability=cap_ipc_lock', '--bind=/tmp/mock-resolv.d1qwf7f5:/etc/resolv.conf', '--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=en_US.UTF-8', '-u', 'mockbuild', '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': 'en_US.UTF-8'} and shell False Building target platforms: x86_64 Building for target x86_64 Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.97F2Yg + umask 022 + cd /builddir/build/BUILD + cd /builddir/build/BUILD + rm -rf pyparsing-pyparsing_2.4.0 + /usr/bin/gzip -dc /builddir/build/SOURCES/pyparsing-2.4.0.tar.gz + /usr/bin/tar -xf - + STATUS=0 + '[' 0 -ne 0 ']' + cd pyparsing-pyparsing_2.4.0 + /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . + dos2unix -k CHANGES LICENSE BUILDSTDERR: dos2unix: converting file CHANGES to Unix format ... BUILDSTDERR: dos2unix: converting file LICENSE to Unix format ... + exit 0 Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.Kwl14W + umask 022 + cd /builddir/build/BUILD + cd pyparsing-pyparsing_2.4.0 + CFLAGS='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic' + /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' BUILDSTDERR: warning: no files found matching 'HowToUsePyparsing.html' BUILDSTDERR: warning: no files found matching 'pyparsingClassDiagram.*' BUILDSTDERR: warning: no files found matching 'README.md' BUILDSTDERR: warning: no files found matching 'CODE_OF_CONDUCT.md' BUILDSTDERR: 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.0-py2.7.egg-info running install_scripts creating build/bdist.linux-x86_64/wheel/pyparsing-2.4.0.dist-info/WHEEL creating 'dist/pyparsing-2.4.0-py2.py3-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it adding 'pyparsing.py' adding 'pyparsing-2.4.0.dist-info/LICENSE' adding 'pyparsing-2.4.0.dist-info/METADATA' adding 'pyparsing-2.4.0.dist-info/WHEEL' adding 'pyparsing-2.4.0.dist-info/top_level.txt' adding 'pyparsing-2.4.0.dist-info/RECORD' removing build/bdist.linux-x86_64/wheel + sleep 1 + CFLAGS='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic' + /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' BUILDSTDERR: warning: no files found matching 'HowToUsePyparsing.html' BUILDSTDERR: warning: no files found matching 'pyparsingClassDiagram.*' BUILDSTDERR: warning: no files found matching 'README.md' BUILDSTDERR: warning: no files found matching 'CODE_OF_CONDUCT.md' BUILDSTDERR: 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.0-py3.6.egg-info running install_scripts creating build/bdist.linux-x86_64/wheel/pyparsing-2.4.0.dist-info/WHEEL creating 'dist/pyparsing-2.4.0-py2.py3-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it adding 'pyparsing.py' adding 'pyparsing-2.4.0.dist-info/LICENSE' adding 'pyparsing-2.4.0.dist-info/METADATA' adding 'pyparsing-2.4.0.dist-info/WHEEL' adding 'pyparsing-2.4.0.dist-info/top_level.txt' adding 'pyparsing-2.4.0.dist-info/RECORD' removing build/bdist.linux-x86_64/wheel + sleep 1 + pushd docs ~/build/BUILD/pyparsing-pyparsing_2.4.0/docs ~/build/BUILD/pyparsing-pyparsing_2.4.0 + sed -i /alabaster/d conf.py + sphinx-build-3.6 -b html . html Making output directory... Running Sphinx v1.2.3 loading pickled environment... failed: [Errno 2] No such file or directory: '/builddir/build/BUILD/pyparsing-pyparsing_2.4.0/docs/html/.doctrees/environment.pickle' 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 BUILDSTDERR: deprecation warning: io.FileInput() argument `handle_io_errors` is ignored since "Docutils 0.10 (2012-12-16)" and will soon be removed.deprecation warning: io.FileInput() argument `handle_io_errors` is ignored since "Docutils 0.10 (2012-12-16)" and will soon be removed.deprecation warning: io.FileInput() argument `handle_io_errors` is ignored since "Docutils 0.10 (2012-12-16)" and will soon be removed.deprecation warning: io.FileInput() argument `handle_io_errors` is ignored since "Docutils 0.10 (2012-12-16)" and will soon be removed.deprecation warning: io.FileInput() argument `handle_io_errors` is ignored since "Docutils 0.10 (2012-12-16)" and will soon be removed./builddir/build/BUILD/pyparsing-pyparsing_2.4.0/docs/index.rst:10: ERROR: Error in "toctree" directive: BUILDSTDERR: unknown option: "caption". BUILDSTDERR: .. toctree:: BUILDSTDERR: :maxdepth: 2 BUILDSTDERR: :caption: Contents: BUILDSTDERR: HowToUsePyparsing BUILDSTDERR: modules BUILDSTDERR: CODE_OF_CONDUCT looking for now-outdated files... none found BUILDSTDERR: pickling environment... /builddir/build/BUILD/pyparsing-pyparsing_2.4.0/docs/pyparsing.rst:4: WARNING: invalid signature for autoclass ('pyparsing::pyparsing_unicode.\u05e2\u05b4\u05d1\u05e8\u05b4\u05d9\u05ea') BUILDSTDERR: /builddir/build/BUILD/pyparsing-pyparsing_2.4.0/docs/pyparsing.rst:4: WARNING: don't know which module to import for autodocumenting 'pyparsing::pyparsing_unicode.\u05e2\u05b4\u05d1\u05e8\u05b4\u05d9\u05ea' (try placing a "module" or "currentmodule" directive in the document, or giving an explicit module name) BUILDSTDERR: /builddir/build/BUILD/pyparsing-pyparsing_2.4.0/docs/pyparsing.rst:4: WARNING: invalid signature for autoclass ('pyparsing::pyparsing_unicode.\u0926\u0947\u0935\u0928\u093e\u0917\u0930\u0940') BUILDSTDERR: /builddir/build/BUILD/pyparsing-pyparsing_2.4.0/docs/pyparsing.rst:4: WARNING: don't know which module to import for autodocumenting 'pyparsing::pyparsing_unicode.\u0926\u0947\u0935\u0928\u093e\u0917\u0930\u0940' (try placing a "module" or "currentmodule" directive in the document, or giving an explicit module name) done checking consistency... done BUILDSTDERR: preparing documents... /builddir/build/BUILD/pyparsing-pyparsing_2.4.0/docs/CODE_OF_CONDUCT.rst:: WARNING: document isn't included in any toctree BUILDSTDERR: /builddir/build/BUILD/pyparsing-pyparsing_2.4.0/docs/HowToUsePyparsing.rst:: WARNING: document isn't included in any toctree BUILDSTDERR: /builddir/build/BUILD/pyparsing-pyparsing_2.4.0/docs/modules.rst:: WARNING: document isn't included in any toctree done writing output... [ 20%] CODE_OF_CONDUCT writing output... [ 40%] HowToUsePyparsing writing output... [ 60%] index writing output... [ 80%] modules writing output... [100%] pyparsing writing additional files... genindex py-modindex search copying static files... done copying extra files... done dumping search index... done dumping object inventory... done build succeeded, 8 warnings. + popd ~/build/BUILD/pyparsing-pyparsing_2.4.0 Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.1jdghT + exit 0 + umask 022 + cd /builddir/build/BUILD + '[' /builddir/build/BUILDROOT/pyparsing-2.4.0-1.el7.x86_64 '!=' / ']' + rm -rf /builddir/build/BUILDROOT/pyparsing-2.4.0-1.el7.x86_64 BUILDSTDERR: ++ dirname /builddir/build/BUILDROOT/pyparsing-2.4.0-1.el7.x86_64 + mkdir -p /builddir/build/BUILDROOT + mkdir /builddir/build/BUILDROOT/pyparsing-2.4.0-1.el7.x86_64 + cd pyparsing-pyparsing_2.4.0 + pip2.7 install -I dist/pyparsing-2.4.0-py2.py3-none-any.whl --root /builddir/build/BUILDROOT/pyparsing-2.4.0-1.el7.x86_64 --strip-file-prefix /builddir/build/BUILDROOT/pyparsing-2.4.0-1.el7.x86_64 --no-deps BUILDSTDERR: DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7. Processing ./dist/pyparsing-2.4.0-py2.py3-none-any.whl Installing collected packages: pyparsing Successfully installed pyparsing-2.4.0 + pip3.6 install -I dist/pyparsing-2.4.0-py2.py3-none-any.whl --root /builddir/build/BUILDROOT/pyparsing-2.4.0-1.el7.x86_64 --strip-file-prefix /builddir/build/BUILDROOT/pyparsing-2.4.0-1.el7.x86_64 --no-deps Processing ./dist/pyparsing-2.4.0-py2.py3-none-any.whl Installing collected packages: pyparsing Successfully installed pyparsing-2.4.0 + /usr/lib/rpm/find-debuginfo.sh --strict-build-id -m --run-dwz --dwz-low-mem-die-limit 10000000 --dwz-max-die-limit 110000000 /builddir/build/BUILD/pyparsing-pyparsing_2.4.0 /usr/lib/rpm/sepdebugcrcfix: Updated 0 CRC32s, 0 CRC32s did match. BUILDSTDERR: find: 'debug': No such file or directory + /usr/lib/rpm/check-buildroot + /usr/lib/rpm/redhat/brp-compress + /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip + /usr/lib/rpm/brp-python-bytecompile /usr/bin/python 1 Bytecompiling .py files below /builddir/build/BUILDROOT/pyparsing-2.4.0-1.el7.x86_64/usr/lib/python3.6 using /usr/bin/python3.6 Bytecompiling .py files below /builddir/build/BUILDROOT/pyparsing-2.4.0-1.el7.x86_64/usr/lib/python2.7 using /usr/bin/python2.7 + /usr/lib/rpm/redhat/brp-python-hardlink + /usr/lib/rpm/redhat/brp-java-repack-jars Executing(%check): /bin/sh -e /var/tmp/rpm-tmp.ahA1PT + umask 022 + cd /builddir/build/BUILD + cd pyparsing-pyparsing_2.4.0 + /usr/bin/python2 unitTests.py BUILDSTDERR: ..................................................................................................................................................................................................... BUILDSTDERR: ---------------------------------------------------------------------- BUILDSTDERR: Ran 197 tests in 4.717s BUILDSTDERR: OK Beginning test of pyparsing, version 2.4.0 Python version 2.7.5 (default, Jun 20 2019, 20:27:34) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] + /usr/bin/python3.6 unitTests.py BUILDSTDERR: ..................................................................................................................................................................................................... BUILDSTDERR: ---------------------------------------------------------------------- BUILDSTDERR: Ran 197 tests in 3.851s BUILDSTDERR: OK Beginning test of pyparsing, version 2.4.0 Python version 3.6.8 (default, Apr 25 2019, 21:02:35) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] + /usr/bin/python3.6 simple_unit_tests.py BUILDSTDERR: ............. BUILDSTDERR: ---------------------------------------------------------------------- BUILDSTDERR: Ran 13 tests in 0.027s BUILDSTDERR: 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" (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" (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" (at char 2), (line:1, col:3) __main__.TestLiteral pyparsing.And - {"x" "y" "z"} pyparsing.Literal - "z" Match colors, converting to consistent case - OneOrMore({{'RED' | 'GREEN' | 'BLUE'}}...) ['RED', 'GREEN', 'BLUE', 'BLUE', 'GREEN', 'GREEN', 'RED'] Simple Word match - Word(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 - OneOrMore({{W:(0123...) "." W:(0123...)}}...) ['1', '.', '2', '2', '.', '3', '3', '.', '1416', '98', '.', '6'] Parsing real numbers - better, use Combine to combine multiple tokens into one - OneOrMore({Combine:({W:(0123...) "." W:(0123...)})}...) ['1.2', '2.3', '3.1416', '98.6'] Match several words - OneOrMore({{W:(x) | W:(y)}}...) ['xx', 'y', 'xx', 'yy', 'xx', 'y', 'x', 'y', 'xxx', 'y'] Match several words, skipping whitespace - 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 - OneOrMore({{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 - OneOrMore({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 - OneOrMore({Combine:({W:(0123...) "." W:(0123...)})}...) [1.2, 2.3, 3.1416, 98.6] Match with numeric string converted to int - Word(W:(0123...)) [12345] Use two parse actions to convert numeric string, then convert to datetime - Word(W:(0123...)) [datetime.datetime(2018, 9, 20, 3, 53, 48)] Use tokenMap for parse actions that operate on a single-length token - Word(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 - OneOrMore({W:(0123...)}...) ['0A:4B:73:21:FE:76'] Using a built-in function that takes a sequence of strs as a parse action - OneOrMore({W:(0123...)}...) ['0A', '21', '4B', '73', '76', 'FE'] A parse action that adds new key-values - OneOrMore({integer}...) [27, 1, 14, 22, 89] - ave: 30.6 - max: 89 - min: 1 - sum: 153 Parsing real numbers - using Regex instead of Combine - OneOrMore({Re:('\\d+\\.\\d+')}...) [1.2, 2.3, 3.1416, 98.6] Define a condition to only match numeric values that are multiples of 7 - OneOrMore({W:(0123...)}...) ['14', '35', '77'] Separate conversion to int and condition into separate parse action/conditions - OneOrMore({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 - OneOrMore({(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')) - OneOrMore({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 + exit 0 Processing files: pyparsing-doc-2.4.0-1.el7.noarch Executing(%doc): /bin/sh -e /var/tmp/rpm-tmp.BBjylk + umask 022 + cd /builddir/build/BUILD + cd pyparsing-pyparsing_2.4.0 + DOCDIR=/builddir/build/BUILDROOT/pyparsing-2.4.0-1.el7.x86_64/usr/share/doc/pyparsing-doc-2.4.0 + export DOCDIR + /usr/bin/mkdir -p /builddir/build/BUILDROOT/pyparsing-2.4.0-1.el7.x86_64/usr/share/doc/pyparsing-doc-2.4.0 + cp -pr CHANGES /builddir/build/BUILDROOT/pyparsing-2.4.0-1.el7.x86_64/usr/share/doc/pyparsing-doc-2.4.0 + cp -pr README.rst /builddir/build/BUILDROOT/pyparsing-2.4.0-1.el7.x86_64/usr/share/doc/pyparsing-doc-2.4.0 + cp -pr docs/html /builddir/build/BUILDROOT/pyparsing-2.4.0-1.el7.x86_64/usr/share/doc/pyparsing-doc-2.4.0 + cp -pr examples /builddir/build/BUILDROOT/pyparsing-2.4.0-1.el7.x86_64/usr/share/doc/pyparsing-doc-2.4.0 + exit 0 Executing(%license): /bin/sh -e /var/tmp/rpm-tmp.T8wSWK + umask 022 + cd /builddir/build/BUILD + cd pyparsing-pyparsing_2.4.0 + LICENSEDIR=/builddir/build/BUILDROOT/pyparsing-2.4.0-1.el7.x86_64/usr/share/licenses/pyparsing-doc-2.4.0 + export LICENSEDIR + /usr/bin/mkdir -p /builddir/build/BUILDROOT/pyparsing-2.4.0-1.el7.x86_64/usr/share/licenses/pyparsing-doc-2.4.0 + cp -pr LICENSE /builddir/build/BUILDROOT/pyparsing-2.4.0-1.el7.x86_64/usr/share/licenses/pyparsing-doc-2.4.0 + exit 0 Provides: pyparsing-doc = 2.4.0-1.el7 Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 Processing files: python2-pyparsing-2.4.0-1.el7.noarch Executing(%doc): /bin/sh -e /var/tmp/rpm-tmp.Lq2vUe + umask 022 + cd /builddir/build/BUILD + cd pyparsing-pyparsing_2.4.0 + DOCDIR=/builddir/build/BUILDROOT/pyparsing-2.4.0-1.el7.x86_64/usr/share/doc/python2-pyparsing-2.4.0 + export DOCDIR + /usr/bin/mkdir -p /builddir/build/BUILDROOT/pyparsing-2.4.0-1.el7.x86_64/usr/share/doc/python2-pyparsing-2.4.0 + cp -pr CHANGES /builddir/build/BUILDROOT/pyparsing-2.4.0-1.el7.x86_64/usr/share/doc/python2-pyparsing-2.4.0 + cp -pr README.rst /builddir/build/BUILDROOT/pyparsing-2.4.0-1.el7.x86_64/usr/share/doc/python2-pyparsing-2.4.0 + exit 0 Executing(%license): /bin/sh -e /var/tmp/rpm-tmp.IfSoTI + umask 022 + cd /builddir/build/BUILD + cd pyparsing-pyparsing_2.4.0 + LICENSEDIR=/builddir/build/BUILDROOT/pyparsing-2.4.0-1.el7.x86_64/usr/share/licenses/python2-pyparsing-2.4.0 + export LICENSEDIR + /usr/bin/mkdir -p /builddir/build/BUILDROOT/pyparsing-2.4.0-1.el7.x86_64/usr/share/licenses/python2-pyparsing-2.4.0 + cp -pr LICENSE /builddir/build/BUILDROOT/pyparsing-2.4.0-1.el7.x86_64/usr/share/licenses/python2-pyparsing-2.4.0 + exit 0 Provides: pyparsing = 2.4.0-1.el7 python-pyparsing = 2.4.0-1.el7 python2-pyparsing = 2.4.0-1.el7 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 Obsoletes: python-pyparsing < 2.4.0-1.el7 pyparsing < 2.1.10-5 Processing files: python3-pyparsing-2.4.0-1.el7.noarch Executing(%doc): /bin/sh -e /var/tmp/rpm-tmp.qHmQ9c + umask 022 + cd /builddir/build/BUILD + cd pyparsing-pyparsing_2.4.0 + DOCDIR=/builddir/build/BUILDROOT/pyparsing-2.4.0-1.el7.x86_64/usr/share/doc/python3-pyparsing-2.4.0 + export DOCDIR + /usr/bin/mkdir -p /builddir/build/BUILDROOT/pyparsing-2.4.0-1.el7.x86_64/usr/share/doc/python3-pyparsing-2.4.0 + cp -pr CHANGES /builddir/build/BUILDROOT/pyparsing-2.4.0-1.el7.x86_64/usr/share/doc/python3-pyparsing-2.4.0 + cp -pr README.rst /builddir/build/BUILDROOT/pyparsing-2.4.0-1.el7.x86_64/usr/share/doc/python3-pyparsing-2.4.0 + exit 0 Executing(%license): /bin/sh -e /var/tmp/rpm-tmp.dW1yrH + umask 022 + cd /builddir/build/BUILD + cd pyparsing-pyparsing_2.4.0 + LICENSEDIR=/builddir/build/BUILDROOT/pyparsing-2.4.0-1.el7.x86_64/usr/share/licenses/python3-pyparsing-2.4.0 + export LICENSEDIR + /usr/bin/mkdir -p /builddir/build/BUILDROOT/pyparsing-2.4.0-1.el7.x86_64/usr/share/licenses/python3-pyparsing-2.4.0 + cp -pr LICENSE /builddir/build/BUILDROOT/pyparsing-2.4.0-1.el7.x86_64/usr/share/licenses/python3-pyparsing-2.4.0 + exit 0 Provides: python3-pyparsing = 2.4.0-1.el7 Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 Requires: python(abi) = 3.6 Checking for unpackaged file(s): /usr/lib/rpm/check-files /builddir/build/BUILDROOT/pyparsing-2.4.0-1.el7.x86_64 Wrote: /builddir/build/RPMS/pyparsing-doc-2.4.0-1.el7.noarch.rpm Wrote: /builddir/build/RPMS/python2-pyparsing-2.4.0-1.el7.noarch.rpm Wrote: /builddir/build/RPMS/python3-pyparsing-2.4.0-1.el7.noarch.rpm Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.Eu0KEM + umask 022 + cd /builddir/build/BUILD + cd pyparsing-pyparsing_2.4.0 + /usr/bin/rm -rf /builddir/build/BUILDROOT/pyparsing-2.4.0-1.el7.x86_64 + exit 0 Child return code was: 0