2026-02-09T22:57:44,538 Created temporary directory: /tmp/pip-ephem-wheel-cache-m9vj0pqx 2026-02-09T22:57:44,540 Created temporary directory: /tmp/pip-build-tracker-vk1k3cru 2026-02-09T22:57:44,540 Initialized build tracking at /tmp/pip-build-tracker-vk1k3cru 2026-02-09T22:57:44,541 Created build tracker: /tmp/pip-build-tracker-vk1k3cru 2026-02-09T22:57:44,541 Entered build tracker: /tmp/pip-build-tracker-vk1k3cru 2026-02-09T22:57:44,542 Created temporary directory: /tmp/pip-wheel-j29wevtm 2026-02-09T22:57:44,545 DEPRECATION: --no-binary currently disables reading from the cache of locally built wheels. In the future --no-binary will not influence the wheel cache. pip 23.1 will enforce this behaviour change. A possible replacement is to use the --no-cache-dir option. You can use the flag --use-feature=no-binary-enable-wheel-cache to test the upcoming behaviour. Discussion can be found at https://github.com/pypa/pip/issues/11453 2026-02-09T22:57:44,547 Created temporary directory: /tmp/pip-ephem-wheel-cache-36262miz 2026-02-09T22:57:44,569 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2026-02-09T22:57:44,573 2 location(s) to search for versions of kontra: 2026-02-09T22:57:44,573 * https://pypi.org/simple/kontra/ 2026-02-09T22:57:44,573 * https://www.piwheels.org/simple/kontra/ 2026-02-09T22:57:44,574 Fetching project page and analyzing links: https://pypi.org/simple/kontra/ 2026-02-09T22:57:44,575 Getting page https://pypi.org/simple/kontra/ 2026-02-09T22:57:44,576 Found index url https://pypi.org/simple 2026-02-09T22:57:44,730 Fetched page https://pypi.org/simple/kontra/ as application/vnd.pypi.simple.v1+json 2026-02-09T22:57:44,734 Skipping link: No binaries permitted for kontra: https://files.pythonhosted.org/packages/0a/07/c8518e168cfba25cb77227929ac1937ec07347b2c886237a5d3c6e6a81b2/kontra-0.0.0-py2.py3-none-any.whl (from https://pypi.org/simple/kontra/) 2026-02-09T22:57:44,735 Found link https://files.pythonhosted.org/packages/9f/98/f7e5fdb8e4d4f60400a937f987c2767e8d6158ae51a44af8df72403ce4e6/kontra-0.0.0.tar.gz (from https://pypi.org/simple/kontra/), version: 0.0.0 2026-02-09T22:57:44,736 Skipping link: No binaries permitted for kontra: https://files.pythonhosted.org/packages/f4/97/a6b39f1beae8011b50dc92ceeb27a7a3ac5e8d36ebbdf9fb7f0767e39f74/kontra-0.5.0-py3-none-any.whl (from https://pypi.org/simple/kontra/) (requires-python:>=3.10) 2026-02-09T22:57:44,737 Found link https://files.pythonhosted.org/packages/bc/e1/a397c38ccac95532804a8804ce069796e04d28f8492998b9d641ec69c9c3/kontra-0.5.0.tar.gz (from https://pypi.org/simple/kontra/) (requires-python:>=3.10), version: 0.5.0 2026-02-09T22:57:44,737 Skipping link: No binaries permitted for kontra: https://files.pythonhosted.org/packages/9c/3f/471896ee5058f91c3299c1699152b6b50ed4cd21fb3090d0294e9e1e46e1/kontra-0.5.1-py3-none-any.whl (from https://pypi.org/simple/kontra/) (requires-python:>=3.10) 2026-02-09T22:57:44,738 Found link https://files.pythonhosted.org/packages/21/59/a06ad9ddc8852579c8bcf86ca17e1c981d6ab91efc26a2ba8e99ab135f3a/kontra-0.5.1.tar.gz (from https://pypi.org/simple/kontra/) (requires-python:>=3.10), version: 0.5.1 2026-02-09T22:57:44,739 Skipping link: No binaries permitted for kontra: https://files.pythonhosted.org/packages/06/09/ae443e085a9d064c8af8fff7961552eef10180e6fda73fb222bddd154829/kontra-0.5.2-py3-none-any.whl (from https://pypi.org/simple/kontra/) (requires-python:>=3.10) 2026-02-09T22:57:44,740 Found link https://files.pythonhosted.org/packages/3f/c0/53ba905d657dcf478ff95a61eab5939cd796819067a8a567c37479acef20/kontra-0.5.2.tar.gz (from https://pypi.org/simple/kontra/) (requires-python:>=3.10), version: 0.5.2 2026-02-09T22:57:44,741 Skipping link: No binaries permitted for kontra: https://files.pythonhosted.org/packages/cf/d5/7fb1ff6d06338d55f99d41dc3e39c1f6752f5dfe61c01ed151773ad564aa/kontra-0.5.3-py3-none-any.whl (from https://pypi.org/simple/kontra/) (requires-python:>=3.10) 2026-02-09T22:57:44,742 Found link https://files.pythonhosted.org/packages/00/4e/3f05ce884f941011b3791e8fd988d031f9d80fbe3cad6d7151bae7b0fc75/kontra-0.5.3.tar.gz (from https://pypi.org/simple/kontra/) (requires-python:>=3.10), version: 0.5.3 2026-02-09T22:57:44,742 Skipping link: No binaries permitted for kontra: https://files.pythonhosted.org/packages/11/29/8118c0e1f5eeffbd561f7b2f6181108f1f2cec0928704f821afeef011064/kontra-0.5.4-py3-none-any.whl (from https://pypi.org/simple/kontra/) (requires-python:>=3.10) 2026-02-09T22:57:44,744 Found link https://files.pythonhosted.org/packages/69/12/03431ed689e71926d1250a8fbda43b99c861e43db472182dfc8b029b0a1d/kontra-0.5.4.tar.gz (from https://pypi.org/simple/kontra/) (requires-python:>=3.10), version: 0.5.4 2026-02-09T22:57:44,745 Skipping link: No binaries permitted for kontra: https://files.pythonhosted.org/packages/0e/27/b0f4951a8e045852f30e70cf386fcb34d26bcdd8a054b409c8542450cc64/kontra-0.6.0-py3-none-any.whl (from https://pypi.org/simple/kontra/) (requires-python:>=3.10) 2026-02-09T22:57:44,745 Found link https://files.pythonhosted.org/packages/f1/ca/d9b1aefc3e817ef55a0d4827adcacc3472f909defb7ea3b3ebceb97952de/kontra-0.6.0.tar.gz (from https://pypi.org/simple/kontra/) (requires-python:>=3.10), version: 0.6.0 2026-02-09T22:57:44,746 Skipping link: No binaries permitted for kontra: https://files.pythonhosted.org/packages/8e/8c/0d51d0b667b61294e343ae37fa0d9e35f4e1242dab5199428c7348f32e88/kontra-0.6.1-py3-none-any.whl (from https://pypi.org/simple/kontra/) (requires-python:>=3.10) 2026-02-09T22:57:44,747 Found link https://files.pythonhosted.org/packages/ff/08/3d83a7271f52e8ef25125502bebebae5939a95789a00b05fe45250c13866/kontra-0.6.1.tar.gz (from https://pypi.org/simple/kontra/) (requires-python:>=3.10), version: 0.6.1 2026-02-09T22:57:44,747 Skipping link: No binaries permitted for kontra: https://files.pythonhosted.org/packages/8f/06/43e7a461597eb31e7d4c1871982d73d5c41c37870135ada96bff429ec46c/kontra-0.6.2-py3-none-any.whl (from https://pypi.org/simple/kontra/) (requires-python:>=3.10) 2026-02-09T22:57:44,748 Found link https://files.pythonhosted.org/packages/c6/09/550250bcf89df425f648005f2a374f49f50359a30f21015e788c58073774/kontra-0.6.2.tar.gz (from https://pypi.org/simple/kontra/) (requires-python:>=3.10), version: 0.6.2 2026-02-09T22:57:44,749 Skipping link: No binaries permitted for kontra: https://files.pythonhosted.org/packages/71/23/55b6fb7ad31c87fdec7cbe6bdc3ad1c77c395d9c78501d6980cfc7370a98/kontra-0.6.3-py3-none-any.whl (from https://pypi.org/simple/kontra/) (requires-python:>=3.10) 2026-02-09T22:57:44,750 Found link https://files.pythonhosted.org/packages/2d/23/676bfc9952b36404e97982740bdf7a23c22b66a9b57c3efb6f850bf1fb3f/kontra-0.6.3.tar.gz (from https://pypi.org/simple/kontra/) (requires-python:>=3.10), version: 0.6.3 2026-02-09T22:57:44,751 Fetching project page and analyzing links: https://www.piwheels.org/simple/kontra/ 2026-02-09T22:57:44,751 Getting page https://www.piwheels.org/simple/kontra/ 2026-02-09T22:57:44,753 Found index url https://www.piwheels.org/simple 2026-02-09T22:57:44,979 Fetched page https://www.piwheels.org/simple/kontra/ as text/html 2026-02-09T22:57:44,981 Skipping link: No binaries permitted for kontra: https://www.piwheels.org/simple/kontra/kontra-0.5.1-py3-none-any.whl#sha256=6b47019a1fccf8a03aaf5d61d983ea150a3a4c81365f7439bcc8f06a8722ffb2 (from https://www.piwheels.org/simple/kontra/) (requires-python:>=3.10) 2026-02-09T22:57:44,982 Skipping link: No binaries permitted for kontra: https://www.piwheels.org/simple/kontra/kontra-0.5.0-py3-none-any.whl#sha256=f10d2677ec7ddb384cf4b635f5e33d540bb5dcd5ae1ebbf108c0c3224ee3b3df (from https://www.piwheels.org/simple/kontra/) (requires-python:>=3.10) 2026-02-09T22:57:44,983 Skipping link: No binaries permitted for kontra: https://archive1.piwheels.org/simple/kontra/kontra-0.0.0-py2.py3-none-any.whl#sha256=e20805ed205f1e629843ad58d8b0fce87be678f08b49d47c00a759e33419256a (from https://www.piwheels.org/simple/kontra/) 2026-02-09T22:57:44,983 Skipping link: not a file: https://www.piwheels.org/simple/kontra/ 2026-02-09T22:57:44,984 Skipping link: not a file: https://pypi.org/simple/kontra/ 2026-02-09T22:57:45,006 Given no hashes to check 1 links for project 'kontra': discarding no candidates 2026-02-09T22:57:45,024 Collecting kontra==0.5.2 2026-02-09T22:57:45,026 Created temporary directory: /tmp/pip-unpack-pp6gpah4 2026-02-09T22:57:45,181 Downloading kontra-0.5.2.tar.gz (325 kB) 2026-02-09T22:57:45,665 Added kontra==0.5.2 from https://files.pythonhosted.org/packages/3f/c0/53ba905d657dcf478ff95a61eab5939cd796819067a8a567c37479acef20/kontra-0.5.2.tar.gz to build tracker '/tmp/pip-build-tracker-vk1k3cru' 2026-02-09T22:57:45,670 Created temporary directory: /tmp/pip-build-env-aqz7ix7y 2026-02-09T22:57:45,675 Installing build dependencies: started 2026-02-09T22:57:45,676 Running command pip subprocess to install build dependencies 2026-02-09T22:57:46,845 Using pip 23.0.1 from /usr/lib/python3/dist-packages/pip (python 3.11) 2026-02-09T22:57:47,392 DEPRECATION: --no-binary currently disables reading from the cache of locally built wheels. In the future --no-binary will not influence the wheel cache. pip 23.1 will enforce this behaviour change. A possible replacement is to use the --no-cache-dir option. You can use the flag --use-feature=no-binary-enable-wheel-cache to test the upcoming behaviour. Discussion can be found at https://github.com/pypa/pip/issues/11453 2026-02-09T22:57:47,415 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2026-02-09T22:57:49,144 Collecting setuptools>=69 2026-02-09T22:57:49,164 Using cached setuptools-82.0.0-py3-none-any.whl (1.0 MB) 2026-02-09T22:57:49,434 Collecting wheel 2026-02-09T22:57:49,449 Using cached https://www.piwheels.org/simple/wheel/wheel-0.46.3-py3-none-any.whl (30 kB) 2026-02-09T22:57:49,631 Collecting packaging>=24.0 2026-02-09T22:57:49,648 Using cached https://www.piwheels.org/simple/packaging/packaging-26.0-py3-none-any.whl (74 kB) 2026-02-09T22:57:52,658 Installing collected packages: setuptools, packaging, wheel 2026-02-09T22:57:56,016 Creating /tmp/pip-build-env-aqz7ix7y/overlay/local/bin 2026-02-09T22:57:56,018 changing mode of /tmp/pip-build-env-aqz7ix7y/overlay/local/bin/wheel to 755 2026-02-09T22:57:56,040 Successfully installed packaging-26.0 setuptools-82.0.0 wheel-0.46.3 2026-02-09T22:57:56,317 Installing build dependencies: finished with status 'done' 2026-02-09T22:57:56,324 Getting requirements to build wheel: started 2026-02-09T22:57:56,325 Running command Getting requirements to build wheel 2026-02-09T22:57:56,964 /tmp/pip-build-env-aqz7ix7y/overlay/local/lib/python3.11/dist-packages/setuptools/config/_apply_pyprojecttoml.py:82: SetuptoolsDeprecationWarning: `project.license` as a TOML table is deprecated 2026-02-09T22:57:56,965 !! 2026-02-09T22:57:56,966 ******************************************************************************** 2026-02-09T22:57:56,966 Please use a simple string containing a SPDX expression for `project.license`. You can also use `project.license-files`. (Both options available on setuptools>=77.0.0). 2026-02-09T22:57:56,967 By 2027-Feb-18, you need to update your project and remove deprecated calls 2026-02-09T22:57:56,968 or your builds will no longer be supported. 2026-02-09T22:57:56,969 See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. 2026-02-09T22:57:56,970 ******************************************************************************** 2026-02-09T22:57:56,971 !! 2026-02-09T22:57:56,971 corresp(dist, value, root_dir) 2026-02-09T22:57:57,046 /tmp/pip-build-env-aqz7ix7y/overlay/local/lib/python3.11/dist-packages/setuptools/config/_apply_pyprojecttoml.py:61: SetuptoolsDeprecationWarning: License classifiers are deprecated. 2026-02-09T22:57:57,046 !! 2026-02-09T22:57:57,048 ******************************************************************************** 2026-02-09T22:57:57,048 Please consider removing the following classifiers in favor of a SPDX license expression: 2026-02-09T22:57:57,050 License :: OSI Approved :: Apache Software License 2026-02-09T22:57:57,051 See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. 2026-02-09T22:57:57,052 ******************************************************************************** 2026-02-09T22:57:57,053 !! 2026-02-09T22:57:57,053 dist._finalize_license_expression() 2026-02-09T22:57:57,054 /tmp/pip-build-env-aqz7ix7y/overlay/local/lib/python3.11/dist-packages/setuptools/dist.py:765: SetuptoolsDeprecationWarning: License classifiers are deprecated. 2026-02-09T22:57:57,054 !! 2026-02-09T22:57:57,055 ******************************************************************************** 2026-02-09T22:57:57,055 Please consider removing the following classifiers in favor of a SPDX license expression: 2026-02-09T22:57:57,056 License :: OSI Approved :: Apache Software License 2026-02-09T22:57:57,057 See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. 2026-02-09T22:57:57,058 ******************************************************************************** 2026-02-09T22:57:57,059 !! 2026-02-09T22:57:57,059 self._finalize_license_expression() 2026-02-09T22:57:57,060 running egg_info 2026-02-09T22:57:57,065 writing src/kontra.egg-info/PKG-INFO 2026-02-09T22:57:57,071 writing dependency_links to src/kontra.egg-info/dependency_links.txt 2026-02-09T22:57:57,073 writing entry points to src/kontra.egg-info/entry_points.txt 2026-02-09T22:57:57,077 writing requirements to src/kontra.egg-info/requires.txt 2026-02-09T22:57:57,078 writing top-level names to src/kontra.egg-info/top_level.txt 2026-02-09T22:57:57,123 reading manifest file 'src/kontra.egg-info/SOURCES.txt' 2026-02-09T22:57:57,133 adding license file 'LICENSE' 2026-02-09T22:57:57,142 writing manifest file 'src/kontra.egg-info/SOURCES.txt' 2026-02-09T22:57:57,240 Getting requirements to build wheel: finished with status 'done' 2026-02-09T22:57:57,244 Created temporary directory: /tmp/pip-modern-metadata-_y81ko06 2026-02-09T22:57:57,246 Preparing metadata (pyproject.toml): started 2026-02-09T22:57:57,248 Running command Preparing metadata (pyproject.toml) 2026-02-09T22:57:57,818 /tmp/pip-build-env-aqz7ix7y/overlay/local/lib/python3.11/dist-packages/setuptools/config/_apply_pyprojecttoml.py:82: SetuptoolsDeprecationWarning: `project.license` as a TOML table is deprecated 2026-02-09T22:57:57,818 !! 2026-02-09T22:57:57,819 ******************************************************************************** 2026-02-09T22:57:57,820 Please use a simple string containing a SPDX expression for `project.license`. You can also use `project.license-files`. (Both options available on setuptools>=77.0.0). 2026-02-09T22:57:57,821 By 2027-Feb-18, you need to update your project and remove deprecated calls 2026-02-09T22:57:57,822 or your builds will no longer be supported. 2026-02-09T22:57:57,823 See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. 2026-02-09T22:57:57,824 ******************************************************************************** 2026-02-09T22:57:57,825 !! 2026-02-09T22:57:57,825 corresp(dist, value, root_dir) 2026-02-09T22:57:57,895 /tmp/pip-build-env-aqz7ix7y/overlay/local/lib/python3.11/dist-packages/setuptools/config/_apply_pyprojecttoml.py:61: SetuptoolsDeprecationWarning: License classifiers are deprecated. 2026-02-09T22:57:57,896 !! 2026-02-09T22:57:57,897 ******************************************************************************** 2026-02-09T22:57:57,897 Please consider removing the following classifiers in favor of a SPDX license expression: 2026-02-09T22:57:57,899 License :: OSI Approved :: Apache Software License 2026-02-09T22:57:57,900 See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. 2026-02-09T22:57:57,900 ******************************************************************************** 2026-02-09T22:57:57,902 !! 2026-02-09T22:57:57,902 dist._finalize_license_expression() 2026-02-09T22:57:57,903 /tmp/pip-build-env-aqz7ix7y/overlay/local/lib/python3.11/dist-packages/setuptools/dist.py:765: SetuptoolsDeprecationWarning: License classifiers are deprecated. 2026-02-09T22:57:57,903 !! 2026-02-09T22:57:57,904 ******************************************************************************** 2026-02-09T22:57:57,905 Please consider removing the following classifiers in favor of a SPDX license expression: 2026-02-09T22:57:57,906 License :: OSI Approved :: Apache Software License 2026-02-09T22:57:57,907 See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. 2026-02-09T22:57:57,907 ******************************************************************************** 2026-02-09T22:57:57,908 !! 2026-02-09T22:57:57,909 self._finalize_license_expression() 2026-02-09T22:57:57,909 running dist_info 2026-02-09T22:57:57,919 creating /tmp/pip-modern-metadata-_y81ko06/kontra.egg-info 2026-02-09T22:57:57,920 writing /tmp/pip-modern-metadata-_y81ko06/kontra.egg-info/PKG-INFO 2026-02-09T22:57:57,927 writing dependency_links to /tmp/pip-modern-metadata-_y81ko06/kontra.egg-info/dependency_links.txt 2026-02-09T22:57:57,928 writing entry points to /tmp/pip-modern-metadata-_y81ko06/kontra.egg-info/entry_points.txt 2026-02-09T22:57:57,932 writing requirements to /tmp/pip-modern-metadata-_y81ko06/kontra.egg-info/requires.txt 2026-02-09T22:57:57,933 writing top-level names to /tmp/pip-modern-metadata-_y81ko06/kontra.egg-info/top_level.txt 2026-02-09T22:57:57,934 writing manifest file '/tmp/pip-modern-metadata-_y81ko06/kontra.egg-info/SOURCES.txt' 2026-02-09T22:57:57,973 reading manifest file '/tmp/pip-modern-metadata-_y81ko06/kontra.egg-info/SOURCES.txt' 2026-02-09T22:57:57,975 adding license file 'LICENSE' 2026-02-09T22:57:57,982 writing manifest file '/tmp/pip-modern-metadata-_y81ko06/kontra.egg-info/SOURCES.txt' 2026-02-09T22:57:57,983 creating '/tmp/pip-modern-metadata-_y81ko06/kontra-0.5.2.dist-info' 2026-02-09T22:57:58,107 Preparing metadata (pyproject.toml): finished with status 'done' 2026-02-09T22:57:58,112 Source in /tmp/pip-wheel-j29wevtm/kontra_f03f6adaebe84ee392ce06ca243bc04f has version 0.5.2, which satisfies requirement kontra==0.5.2 from https://files.pythonhosted.org/packages/3f/c0/53ba905d657dcf478ff95a61eab5939cd796819067a8a567c37479acef20/kontra-0.5.2.tar.gz 2026-02-09T22:57:58,113 Removed kontra==0.5.2 from https://files.pythonhosted.org/packages/3f/c0/53ba905d657dcf478ff95a61eab5939cd796819067a8a567c37479acef20/kontra-0.5.2.tar.gz from build tracker '/tmp/pip-build-tracker-vk1k3cru' 2026-02-09T22:57:58,118 Created temporary directory: /tmp/pip-unpack-416dg35q 2026-02-09T22:57:58,119 Building wheels for collected packages: kontra 2026-02-09T22:57:58,123 Created temporary directory: /tmp/pip-wheel-izc4pgrd 2026-02-09T22:57:58,124 Destination directory: /tmp/pip-wheel-izc4pgrd 2026-02-09T22:57:58,126 Building wheel for kontra (pyproject.toml): started 2026-02-09T22:57:58,127 Running command Building wheel for kontra (pyproject.toml) 2026-02-09T22:57:58,684 /tmp/pip-build-env-aqz7ix7y/overlay/local/lib/python3.11/dist-packages/setuptools/config/_apply_pyprojecttoml.py:82: SetuptoolsDeprecationWarning: `project.license` as a TOML table is deprecated 2026-02-09T22:57:58,684 !! 2026-02-09T22:57:58,686 ******************************************************************************** 2026-02-09T22:57:58,686 Please use a simple string containing a SPDX expression for `project.license`. You can also use `project.license-files`. (Both options available on setuptools>=77.0.0). 2026-02-09T22:57:58,687 By 2027-Feb-18, you need to update your project and remove deprecated calls 2026-02-09T22:57:58,688 or your builds will no longer be supported. 2026-02-09T22:57:58,689 See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. 2026-02-09T22:57:58,690 ******************************************************************************** 2026-02-09T22:57:58,691 !! 2026-02-09T22:57:58,691 corresp(dist, value, root_dir) 2026-02-09T22:57:58,757 /tmp/pip-build-env-aqz7ix7y/overlay/local/lib/python3.11/dist-packages/setuptools/config/_apply_pyprojecttoml.py:61: SetuptoolsDeprecationWarning: License classifiers are deprecated. 2026-02-09T22:57:58,758 !! 2026-02-09T22:57:58,759 ******************************************************************************** 2026-02-09T22:57:58,759 Please consider removing the following classifiers in favor of a SPDX license expression: 2026-02-09T22:57:58,760 License :: OSI Approved :: Apache Software License 2026-02-09T22:57:58,761 See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. 2026-02-09T22:57:58,761 ******************************************************************************** 2026-02-09T22:57:58,762 !! 2026-02-09T22:57:58,763 dist._finalize_license_expression() 2026-02-09T22:57:58,764 /tmp/pip-build-env-aqz7ix7y/overlay/local/lib/python3.11/dist-packages/setuptools/dist.py:765: SetuptoolsDeprecationWarning: License classifiers are deprecated. 2026-02-09T22:57:58,764 !! 2026-02-09T22:57:58,765 ******************************************************************************** 2026-02-09T22:57:58,766 Please consider removing the following classifiers in favor of a SPDX license expression: 2026-02-09T22:57:58,767 License :: OSI Approved :: Apache Software License 2026-02-09T22:57:58,768 See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. 2026-02-09T22:57:58,768 ******************************************************************************** 2026-02-09T22:57:58,769 !! 2026-02-09T22:57:58,770 self._finalize_license_expression() 2026-02-09T22:57:58,770 running bdist_wheel 2026-02-09T22:57:58,785 running build 2026-02-09T22:57:58,785 running build_py 2026-02-09T22:57:58,791 creating build/lib/kontra 2026-02-09T22:57:58,793 copying src/kontra/version.py -> build/lib/kontra 2026-02-09T22:57:58,795 copying src/kontra/__init__.py -> build/lib/kontra 2026-02-09T22:57:58,799 copying src/kontra/errors.py -> build/lib/kontra 2026-02-09T22:57:58,802 copying src/kontra/logging.py -> build/lib/kontra 2026-02-09T22:57:58,804 creating build/lib/kontra/config 2026-02-09T22:57:58,805 copying src/kontra/config/loader.py -> build/lib/kontra/config 2026-02-09T22:57:58,808 copying src/kontra/config/__init__.py -> build/lib/kontra/config 2026-02-09T22:57:58,810 copying src/kontra/config/models.py -> build/lib/kontra/config 2026-02-09T22:57:58,812 copying src/kontra/config/settings.py -> build/lib/kontra/config 2026-02-09T22:57:58,815 creating build/lib/kontra/cli 2026-02-09T22:57:58,816 copying src/kontra/cli/__init__.py -> build/lib/kontra/cli 2026-02-09T22:57:58,818 copying src/kontra/cli/utils.py -> build/lib/kontra/cli 2026-02-09T22:57:58,820 copying src/kontra/cli/main.py -> build/lib/kontra/cli 2026-02-09T22:57:58,822 copying src/kontra/cli/renderers.py -> build/lib/kontra/cli 2026-02-09T22:57:58,824 copying src/kontra/cli/constants.py -> build/lib/kontra/cli 2026-02-09T22:57:58,827 creating build/lib/kontra/api 2026-02-09T22:57:58,828 copying src/kontra/api/__init__.py -> build/lib/kontra/api 2026-02-09T22:57:58,830 copying src/kontra/api/decorators.py -> build/lib/kontra/api 2026-02-09T22:57:58,832 copying src/kontra/api/results.py -> build/lib/kontra/api 2026-02-09T22:57:58,836 copying src/kontra/api/compare.py -> build/lib/kontra/api 2026-02-09T22:57:58,838 copying src/kontra/api/rules.py -> build/lib/kontra/api 2026-02-09T22:57:58,842 creating build/lib/kontra/engine 2026-02-09T22:57:58,843 copying src/kontra/engine/sql_utils.py -> build/lib/kontra/engine 2026-02-09T22:57:58,846 copying src/kontra/engine/stats.py -> build/lib/kontra/engine 2026-02-09T22:57:58,848 copying src/kontra/engine/__init__.py -> build/lib/kontra/engine 2026-02-09T22:57:58,849 copying src/kontra/engine/types.py -> build/lib/kontra/engine 2026-02-09T22:57:58,851 copying src/kontra/engine/sql_validator.py -> build/lib/kontra/engine 2026-02-09T22:57:58,854 copying src/kontra/engine/result.py -> build/lib/kontra/engine 2026-02-09T22:57:58,855 copying src/kontra/engine/engine.py -> build/lib/kontra/engine 2026-02-09T22:57:58,859 creating build/lib/kontra/state 2026-02-09T22:57:58,860 copying src/kontra/state/__init__.py -> build/lib/kontra/state 2026-02-09T22:57:58,862 copying src/kontra/state/fingerprint.py -> build/lib/kontra/state 2026-02-09T22:57:58,864 copying src/kontra/state/types.py -> build/lib/kontra/state 2026-02-09T22:57:58,867 creating build/lib/kontra/probes 2026-02-09T22:57:58,868 copying src/kontra/probes/relationship.py -> build/lib/kontra/probes 2026-02-09T22:57:58,870 copying src/kontra/probes/__init__.py -> build/lib/kontra/probes 2026-02-09T22:57:58,872 copying src/kontra/probes/compare.py -> build/lib/kontra/probes 2026-02-09T22:57:58,875 creating build/lib/kontra/rules 2026-02-09T22:57:58,876 copying src/kontra/rules/execution_plan.py -> build/lib/kontra/rules 2026-02-09T22:57:58,879 copying src/kontra/rules/static_predicates.py -> build/lib/kontra/rules 2026-02-09T22:57:58,881 copying src/kontra/rules/base.py -> build/lib/kontra/rules 2026-02-09T22:57:58,883 copying src/kontra/rules/__init__.py -> build/lib/kontra/rules 2026-02-09T22:57:58,885 copying src/kontra/rules/predicates.py -> build/lib/kontra/rules 2026-02-09T22:57:58,886 copying src/kontra/rules/registry.py -> build/lib/kontra/rules 2026-02-09T22:57:58,888 copying src/kontra/rules/factory.py -> build/lib/kontra/rules 2026-02-09T22:57:58,890 copying src/kontra/rules/condition_parser.py -> build/lib/kontra/rules 2026-02-09T22:57:58,893 creating build/lib/kontra/reporters 2026-02-09T22:57:58,894 copying src/kontra/reporters/__init__.py -> build/lib/kontra/reporters 2026-02-09T22:57:58,895 copying src/kontra/reporters/rich_reporter.py -> build/lib/kontra/reporters 2026-02-09T22:57:58,897 copying src/kontra/reporters/json_reporter.py -> build/lib/kontra/reporters 2026-02-09T22:57:58,900 creating build/lib/kontra/scout 2026-02-09T22:57:58,901 copying src/kontra/scout/suggest.py -> build/lib/kontra/scout 2026-02-09T22:57:58,903 copying src/kontra/scout/patterns.py -> build/lib/kontra/scout 2026-02-09T22:57:58,905 copying src/kontra/scout/__init__.py -> build/lib/kontra/scout 2026-02-09T22:57:58,907 copying src/kontra/scout/types.py -> build/lib/kontra/scout 2026-02-09T22:57:58,910 copying src/kontra/scout/dtype_mapping.py -> build/lib/kontra/scout 2026-02-09T22:57:58,912 copying src/kontra/scout/profiler.py -> build/lib/kontra/scout 2026-02-09T22:57:58,915 copying src/kontra/scout/store.py -> build/lib/kontra/scout 2026-02-09T22:57:58,918 creating build/lib/kontra/connectors 2026-02-09T22:57:58,919 copying src/kontra/connectors/detection.py -> build/lib/kontra/connectors 2026-02-09T22:57:58,921 copying src/kontra/connectors/__init__.py -> build/lib/kontra/connectors 2026-02-09T22:57:58,923 copying src/kontra/connectors/sqlserver.py -> build/lib/kontra/connectors 2026-02-09T22:57:58,925 copying src/kontra/connectors/postgres.py -> build/lib/kontra/connectors 2026-02-09T22:57:58,927 copying src/kontra/connectors/handle.py -> build/lib/kontra/connectors 2026-02-09T22:57:58,929 copying src/kontra/connectors/db_utils.py -> build/lib/kontra/connectors 2026-02-09T22:57:58,932 creating build/lib/kontra/preplan 2026-02-09T22:57:58,933 copying src/kontra/preplan/__init__.py -> build/lib/kontra/preplan 2026-02-09T22:57:58,935 copying src/kontra/preplan/planner.py -> build/lib/kontra/preplan 2026-02-09T22:57:58,938 copying src/kontra/preplan/types.py -> build/lib/kontra/preplan 2026-02-09T22:57:58,939 copying src/kontra/preplan/sqlserver.py -> build/lib/kontra/preplan 2026-02-09T22:57:58,942 copying src/kontra/preplan/postgres.py -> build/lib/kontra/preplan 2026-02-09T22:57:58,944 creating build/lib/kontra/cli/commands 2026-02-09T22:57:58,945 copying src/kontra/cli/commands/__init__.py -> build/lib/kontra/cli/commands 2026-02-09T22:57:58,947 copying src/kontra/cli/commands/history.py -> build/lib/kontra/cli/commands 2026-02-09T22:57:58,949 copying src/kontra/cli/commands/validate.py -> build/lib/kontra/cli/commands 2026-02-09T22:57:58,952 copying src/kontra/cli/commands/profile.py -> build/lib/kontra/cli/commands 2026-02-09T22:57:58,954 copying src/kontra/cli/commands/config.py -> build/lib/kontra/cli/commands 2026-02-09T22:57:58,956 copying src/kontra/cli/commands/diff.py -> build/lib/kontra/cli/commands 2026-02-09T22:57:58,959 creating build/lib/kontra/engine/backends 2026-02-09T22:57:58,960 copying src/kontra/engine/backends/polars_backend.py -> build/lib/kontra/engine/backends 2026-02-09T22:57:58,962 copying src/kontra/engine/backends/duckdb_session.py -> build/lib/kontra/engine/backends 2026-02-09T22:57:58,964 copying src/kontra/engine/backends/duckdb_utils.py -> build/lib/kontra/engine/backends 2026-02-09T22:57:58,966 creating build/lib/kontra/engine/executors 2026-02-09T22:57:58,967 copying src/kontra/engine/executors/sqlserver_sql.py -> build/lib/kontra/engine/executors 2026-02-09T22:57:58,969 copying src/kontra/engine/executors/base.py -> build/lib/kontra/engine/executors 2026-02-09T22:57:58,971 copying src/kontra/engine/executors/__init__.py -> build/lib/kontra/engine/executors 2026-02-09T22:57:58,973 copying src/kontra/engine/executors/database_base.py -> build/lib/kontra/engine/executors 2026-02-09T22:57:58,975 copying src/kontra/engine/executors/registry.py -> build/lib/kontra/engine/executors 2026-02-09T22:57:58,977 copying src/kontra/engine/executors/duckdb_sql.py -> build/lib/kontra/engine/executors 2026-02-09T22:57:58,979 copying src/kontra/engine/executors/postgres_sql.py -> build/lib/kontra/engine/executors 2026-02-09T22:57:58,982 creating build/lib/kontra/engine/materializers 2026-02-09T22:57:58,983 copying src/kontra/engine/materializers/base.py -> build/lib/kontra/engine/materializers 2026-02-09T22:57:58,985 copying src/kontra/engine/materializers/__init__.py -> build/lib/kontra/engine/materializers 2026-02-09T22:57:58,987 copying src/kontra/engine/materializers/duckdb.py -> build/lib/kontra/engine/materializers 2026-02-09T22:57:58,988 copying src/kontra/engine/materializers/registry.py -> build/lib/kontra/engine/materializers 2026-02-09T22:57:58,990 copying src/kontra/engine/materializers/sqlserver.py -> build/lib/kontra/engine/materializers 2026-02-09T22:57:58,993 copying src/kontra/engine/materializers/postgres.py -> build/lib/kontra/engine/materializers 2026-02-09T22:57:58,994 copying src/kontra/engine/materializers/factory.py -> build/lib/kontra/engine/materializers 2026-02-09T22:57:58,996 copying src/kontra/engine/materializers/polars_connector.py -> build/lib/kontra/engine/materializers 2026-02-09T22:57:58,999 creating build/lib/kontra/state/backends 2026-02-09T22:57:59,000 copying src/kontra/state/backends/base.py -> build/lib/kontra/state/backends 2026-02-09T22:57:59,002 copying src/kontra/state/backends/__init__.py -> build/lib/kontra/state/backends 2026-02-09T22:57:59,004 copying src/kontra/state/backends/local.py -> build/lib/kontra/state/backends 2026-02-09T22:57:59,007 copying src/kontra/state/backends/sqlserver.py -> build/lib/kontra/state/backends 2026-02-09T22:57:59,010 copying src/kontra/state/backends/postgres.py -> build/lib/kontra/state/backends 2026-02-09T22:57:59,012 copying src/kontra/state/backends/s3.py -> build/lib/kontra/state/backends 2026-02-09T22:57:59,016 creating build/lib/kontra/rules/builtin 2026-02-09T22:57:59,017 copying src/kontra/rules/builtin/conditional_not_null.py -> build/lib/kontra/rules/builtin 2026-02-09T22:57:59,019 copying src/kontra/rules/builtin/length.py -> build/lib/kontra/rules/builtin 2026-02-09T22:57:59,021 copying src/kontra/rules/builtin/regex.py -> build/lib/kontra/rules/builtin 2026-02-09T22:57:59,023 copying src/kontra/rules/builtin/__init__.py -> build/lib/kontra/rules/builtin 2026-02-09T22:57:59,025 copying src/kontra/rules/builtin/contains.py -> build/lib/kontra/rules/builtin 2026-02-09T22:57:59,027 copying src/kontra/rules/builtin/allowed_values.py -> build/lib/kontra/rules/builtin 2026-02-09T22:57:59,029 copying src/kontra/rules/builtin/range.py -> build/lib/kontra/rules/builtin 2026-02-09T22:57:59,032 copying src/kontra/rules/builtin/starts_with.py -> build/lib/kontra/rules/builtin 2026-02-09T22:57:59,033 copying src/kontra/rules/builtin/disallowed_values.py -> build/lib/kontra/rules/builtin 2026-02-09T22:57:59,035 copying src/kontra/rules/builtin/max_rows.py -> build/lib/kontra/rules/builtin 2026-02-09T22:57:59,037 copying src/kontra/rules/builtin/unique.py -> build/lib/kontra/rules/builtin 2026-02-09T22:57:59,039 copying src/kontra/rules/builtin/conditional_range.py -> build/lib/kontra/rules/builtin 2026-02-09T22:57:59,042 copying src/kontra/rules/builtin/min_rows.py -> build/lib/kontra/rules/builtin 2026-02-09T22:57:59,044 copying src/kontra/rules/builtin/compare.py -> build/lib/kontra/rules/builtin 2026-02-09T22:57:59,046 copying src/kontra/rules/builtin/ends_with.py -> build/lib/kontra/rules/builtin 2026-02-09T22:57:59,048 copying src/kontra/rules/builtin/freshness.py -> build/lib/kontra/rules/builtin 2026-02-09T22:57:59,050 copying src/kontra/rules/builtin/dtype.py -> build/lib/kontra/rules/builtin 2026-02-09T22:57:59,052 copying src/kontra/rules/builtin/not_null.py -> build/lib/kontra/rules/builtin 2026-02-09T22:57:59,055 copying src/kontra/rules/builtin/custom_sql_check.py -> build/lib/kontra/rules/builtin 2026-02-09T22:57:59,057 creating build/lib/kontra/scout/backends 2026-02-09T22:57:59,058 copying src/kontra/scout/backends/base.py -> build/lib/kontra/scout/backends 2026-02-09T22:57:59,060 copying src/kontra/scout/backends/__init__.py -> build/lib/kontra/scout/backends 2026-02-09T22:57:59,062 copying src/kontra/scout/backends/postgres_backend.py -> build/lib/kontra/scout/backends 2026-02-09T22:57:59,064 copying src/kontra/scout/backends/duckdb_backend.py -> build/lib/kontra/scout/backends 2026-02-09T22:57:59,067 copying src/kontra/scout/backends/sqlserver_backend.py -> build/lib/kontra/scout/backends 2026-02-09T22:57:59,070 creating build/lib/kontra/scout/reporters 2026-02-09T22:57:59,070 copying src/kontra/scout/reporters/markdown_reporter.py -> build/lib/kontra/scout/reporters 2026-02-09T22:57:59,073 copying src/kontra/scout/reporters/__init__.py -> build/lib/kontra/scout/reporters 2026-02-09T22:57:59,075 copying src/kontra/scout/reporters/rich_reporter.py -> build/lib/kontra/scout/reporters 2026-02-09T22:57:59,077 copying src/kontra/scout/reporters/json_reporter.py -> build/lib/kontra/scout/reporters 2026-02-09T22:57:59,079 running egg_info 2026-02-09T22:57:59,089 writing src/kontra.egg-info/PKG-INFO 2026-02-09T22:57:59,094 writing dependency_links to src/kontra.egg-info/dependency_links.txt 2026-02-09T22:57:59,096 writing entry points to src/kontra.egg-info/entry_points.txt 2026-02-09T22:57:59,099 writing requirements to src/kontra.egg-info/requires.txt 2026-02-09T22:57:59,100 writing top-level names to src/kontra.egg-info/top_level.txt 2026-02-09T22:57:59,128 reading manifest file 'src/kontra.egg-info/SOURCES.txt' 2026-02-09T22:57:59,137 adding license file 'LICENSE' 2026-02-09T22:57:59,146 writing manifest file 'src/kontra.egg-info/SOURCES.txt' 2026-02-09T22:57:59,175 installing to build/bdist.linux-armv7l/wheel 2026-02-09T22:57:59,175 running install 2026-02-09T22:57:59,198 running install_lib 2026-02-09T22:57:59,204 creating build/bdist.linux-armv7l/wheel 2026-02-09T22:57:59,206 creating build/bdist.linux-armv7l/wheel/kontra 2026-02-09T22:57:59,207 copying build/lib/kontra/version.py -> build/bdist.linux-armv7l/wheel/./kontra 2026-02-09T22:57:59,209 copying build/lib/kontra/__init__.py -> build/bdist.linux-armv7l/wheel/./kontra 2026-02-09T22:57:59,213 copying build/lib/kontra/errors.py -> build/bdist.linux-armv7l/wheel/./kontra 2026-02-09T22:57:59,215 creating build/bdist.linux-armv7l/wheel/kontra/config 2026-02-09T22:57:59,216 copying build/lib/kontra/config/loader.py -> build/bdist.linux-armv7l/wheel/./kontra/config 2026-02-09T22:57:59,219 copying build/lib/kontra/config/__init__.py -> build/bdist.linux-armv7l/wheel/./kontra/config 2026-02-09T22:57:59,220 copying build/lib/kontra/config/models.py -> build/bdist.linux-armv7l/wheel/./kontra/config 2026-02-09T22:57:59,222 copying build/lib/kontra/config/settings.py -> build/bdist.linux-armv7l/wheel/./kontra/config 2026-02-09T22:57:59,225 creating build/bdist.linux-armv7l/wheel/kontra/cli 2026-02-09T22:57:59,226 copying build/lib/kontra/cli/__init__.py -> build/bdist.linux-armv7l/wheel/./kontra/cli 2026-02-09T22:57:59,227 copying build/lib/kontra/cli/utils.py -> build/bdist.linux-armv7l/wheel/./kontra/cli 2026-02-09T22:57:59,229 copying build/lib/kontra/cli/main.py -> build/bdist.linux-armv7l/wheel/./kontra/cli 2026-02-09T22:57:59,231 copying build/lib/kontra/cli/renderers.py -> build/bdist.linux-armv7l/wheel/./kontra/cli 2026-02-09T22:57:59,233 copying build/lib/kontra/cli/constants.py -> build/bdist.linux-armv7l/wheel/./kontra/cli 2026-02-09T22:57:59,235 creating build/bdist.linux-armv7l/wheel/kontra/cli/commands 2026-02-09T22:57:59,236 copying build/lib/kontra/cli/commands/__init__.py -> build/bdist.linux-armv7l/wheel/./kontra/cli/commands 2026-02-09T22:57:59,238 copying build/lib/kontra/cli/commands/history.py -> build/bdist.linux-armv7l/wheel/./kontra/cli/commands 2026-02-09T22:57:59,240 copying build/lib/kontra/cli/commands/validate.py -> build/bdist.linux-armv7l/wheel/./kontra/cli/commands 2026-02-09T22:57:59,243 copying build/lib/kontra/cli/commands/profile.py -> build/bdist.linux-armv7l/wheel/./kontra/cli/commands 2026-02-09T22:57:59,245 copying build/lib/kontra/cli/commands/config.py -> build/bdist.linux-armv7l/wheel/./kontra/cli/commands 2026-02-09T22:57:59,247 copying build/lib/kontra/cli/commands/diff.py -> build/bdist.linux-armv7l/wheel/./kontra/cli/commands 2026-02-09T22:57:59,250 creating build/bdist.linux-armv7l/wheel/kontra/api 2026-02-09T22:57:59,251 copying build/lib/kontra/api/__init__.py -> build/bdist.linux-armv7l/wheel/./kontra/api 2026-02-09T22:57:59,253 copying build/lib/kontra/api/decorators.py -> build/bdist.linux-armv7l/wheel/./kontra/api 2026-02-09T22:57:59,255 copying build/lib/kontra/api/results.py -> build/bdist.linux-armv7l/wheel/./kontra/api 2026-02-09T22:57:59,258 copying build/lib/kontra/api/compare.py -> build/bdist.linux-armv7l/wheel/./kontra/api 2026-02-09T22:57:59,261 copying build/lib/kontra/api/rules.py -> build/bdist.linux-armv7l/wheel/./kontra/api 2026-02-09T22:57:59,264 creating build/bdist.linux-armv7l/wheel/kontra/engine 2026-02-09T22:57:59,265 copying build/lib/kontra/engine/sql_utils.py -> build/bdist.linux-armv7l/wheel/./kontra/engine 2026-02-09T22:57:59,267 copying build/lib/kontra/engine/stats.py -> build/bdist.linux-armv7l/wheel/./kontra/engine 2026-02-09T22:57:59,269 copying build/lib/kontra/engine/__init__.py -> build/bdist.linux-armv7l/wheel/./kontra/engine 2026-02-09T22:57:59,271 copying build/lib/kontra/engine/types.py -> build/bdist.linux-armv7l/wheel/./kontra/engine 2026-02-09T22:57:59,272 copying build/lib/kontra/engine/sql_validator.py -> build/bdist.linux-armv7l/wheel/./kontra/engine 2026-02-09T22:57:59,275 creating build/bdist.linux-armv7l/wheel/kontra/engine/backends 2026-02-09T22:57:59,276 copying build/lib/kontra/engine/backends/polars_backend.py -> build/bdist.linux-armv7l/wheel/./kontra/engine/backends 2026-02-09T22:57:59,278 copying build/lib/kontra/engine/backends/duckdb_session.py -> build/bdist.linux-armv7l/wheel/./kontra/engine/backends 2026-02-09T22:57:59,281 copying build/lib/kontra/engine/backends/duckdb_utils.py -> build/bdist.linux-armv7l/wheel/./kontra/engine/backends 2026-02-09T22:57:59,282 copying build/lib/kontra/engine/result.py -> build/bdist.linux-armv7l/wheel/./kontra/engine 2026-02-09T22:57:59,284 creating build/bdist.linux-armv7l/wheel/kontra/engine/executors 2026-02-09T22:57:59,285 copying build/lib/kontra/engine/executors/sqlserver_sql.py -> build/bdist.linux-armv7l/wheel/./kontra/engine/executors 2026-02-09T22:57:59,288 copying build/lib/kontra/engine/executors/base.py -> build/bdist.linux-armv7l/wheel/./kontra/engine/executors 2026-02-09T22:57:59,290 copying build/lib/kontra/engine/executors/__init__.py -> build/bdist.linux-armv7l/wheel/./kontra/engine/executors 2026-02-09T22:57:59,291 copying build/lib/kontra/engine/executors/database_base.py -> build/bdist.linux-armv7l/wheel/./kontra/engine/executors 2026-02-09T22:57:59,294 copying build/lib/kontra/engine/executors/registry.py -> build/bdist.linux-armv7l/wheel/./kontra/engine/executors 2026-02-09T22:57:59,295 copying build/lib/kontra/engine/executors/duckdb_sql.py -> build/bdist.linux-armv7l/wheel/./kontra/engine/executors 2026-02-09T22:57:59,298 copying build/lib/kontra/engine/executors/postgres_sql.py -> build/bdist.linux-armv7l/wheel/./kontra/engine/executors 2026-02-09T22:57:59,301 creating build/bdist.linux-armv7l/wheel/kontra/engine/materializers 2026-02-09T22:57:59,302 copying build/lib/kontra/engine/materializers/base.py -> build/bdist.linux-armv7l/wheel/./kontra/engine/materializers 2026-02-09T22:57:59,303 copying build/lib/kontra/engine/materializers/__init__.py -> build/bdist.linux-armv7l/wheel/./kontra/engine/materializers 2026-02-09T22:57:59,305 copying build/lib/kontra/engine/materializers/duckdb.py -> build/bdist.linux-armv7l/wheel/./kontra/engine/materializers 2026-02-09T22:57:59,307 copying build/lib/kontra/engine/materializers/registry.py -> build/bdist.linux-armv7l/wheel/./kontra/engine/materializers 2026-02-09T22:57:59,309 copying build/lib/kontra/engine/materializers/sqlserver.py -> build/bdist.linux-armv7l/wheel/./kontra/engine/materializers 2026-02-09T22:57:59,311 copying build/lib/kontra/engine/materializers/postgres.py -> build/bdist.linux-armv7l/wheel/./kontra/engine/materializers 2026-02-09T22:57:59,313 copying build/lib/kontra/engine/materializers/factory.py -> build/bdist.linux-armv7l/wheel/./kontra/engine/materializers 2026-02-09T22:57:59,315 copying build/lib/kontra/engine/materializers/polars_connector.py -> build/bdist.linux-armv7l/wheel/./kontra/engine/materializers 2026-02-09T22:57:59,317 copying build/lib/kontra/engine/engine.py -> build/bdist.linux-armv7l/wheel/./kontra/engine 2026-02-09T22:57:59,320 copying build/lib/kontra/logging.py -> build/bdist.linux-armv7l/wheel/./kontra 2026-02-09T22:57:59,323 creating build/bdist.linux-armv7l/wheel/kontra/state 2026-02-09T22:57:59,324 copying build/lib/kontra/state/__init__.py -> build/bdist.linux-armv7l/wheel/./kontra/state 2026-02-09T22:57:59,326 copying build/lib/kontra/state/fingerprint.py -> build/bdist.linux-armv7l/wheel/./kontra/state 2026-02-09T22:57:59,328 copying build/lib/kontra/state/types.py -> build/bdist.linux-armv7l/wheel/./kontra/state 2026-02-09T22:57:59,332 creating build/bdist.linux-armv7l/wheel/kontra/state/backends 2026-02-09T22:57:59,332 copying build/lib/kontra/state/backends/base.py -> build/bdist.linux-armv7l/wheel/./kontra/state/backends 2026-02-09T22:57:59,335 copying build/lib/kontra/state/backends/__init__.py -> build/bdist.linux-armv7l/wheel/./kontra/state/backends 2026-02-09T22:57:59,337 copying build/lib/kontra/state/backends/local.py -> build/bdist.linux-armv7l/wheel/./kontra/state/backends 2026-02-09T22:57:59,339 copying build/lib/kontra/state/backends/sqlserver.py -> build/bdist.linux-armv7l/wheel/./kontra/state/backends 2026-02-09T22:57:59,342 copying build/lib/kontra/state/backends/postgres.py -> build/bdist.linux-armv7l/wheel/./kontra/state/backends 2026-02-09T22:57:59,345 copying build/lib/kontra/state/backends/s3.py -> build/bdist.linux-armv7l/wheel/./kontra/state/backends 2026-02-09T22:57:59,348 creating build/bdist.linux-armv7l/wheel/kontra/probes 2026-02-09T22:57:59,349 copying build/lib/kontra/probes/relationship.py -> build/bdist.linux-armv7l/wheel/./kontra/probes 2026-02-09T22:57:59,351 copying build/lib/kontra/probes/__init__.py -> build/bdist.linux-armv7l/wheel/./kontra/probes 2026-02-09T22:57:59,353 copying build/lib/kontra/probes/compare.py -> build/bdist.linux-armv7l/wheel/./kontra/probes 2026-02-09T22:57:59,356 creating build/bdist.linux-armv7l/wheel/kontra/rules 2026-02-09T22:57:59,357 copying build/lib/kontra/rules/execution_plan.py -> build/bdist.linux-armv7l/wheel/./kontra/rules 2026-02-09T22:57:59,359 copying build/lib/kontra/rules/static_predicates.py -> build/bdist.linux-armv7l/wheel/./kontra/rules 2026-02-09T22:57:59,361 copying build/lib/kontra/rules/base.py -> build/bdist.linux-armv7l/wheel/./kontra/rules 2026-02-09T22:57:59,363 copying build/lib/kontra/rules/__init__.py -> build/bdist.linux-armv7l/wheel/./kontra/rules 2026-02-09T22:57:59,365 copying build/lib/kontra/rules/predicates.py -> build/bdist.linux-armv7l/wheel/./kontra/rules 2026-02-09T22:57:59,367 copying build/lib/kontra/rules/registry.py -> build/bdist.linux-armv7l/wheel/./kontra/rules 2026-02-09T22:57:59,368 copying build/lib/kontra/rules/factory.py -> build/bdist.linux-armv7l/wheel/./kontra/rules 2026-02-09T22:57:59,371 creating build/bdist.linux-armv7l/wheel/kontra/rules/builtin 2026-02-09T22:57:59,372 copying build/lib/kontra/rules/builtin/conditional_not_null.py -> build/bdist.linux-armv7l/wheel/./kontra/rules/builtin 2026-02-09T22:57:59,374 copying build/lib/kontra/rules/builtin/length.py -> build/bdist.linux-armv7l/wheel/./kontra/rules/builtin 2026-02-09T22:57:59,377 copying build/lib/kontra/rules/builtin/regex.py -> build/bdist.linux-armv7l/wheel/./kontra/rules/builtin 2026-02-09T22:57:59,379 copying build/lib/kontra/rules/builtin/__init__.py -> build/bdist.linux-armv7l/wheel/./kontra/rules/builtin 2026-02-09T22:57:59,380 copying build/lib/kontra/rules/builtin/contains.py -> build/bdist.linux-armv7l/wheel/./kontra/rules/builtin 2026-02-09T22:57:59,382 copying build/lib/kontra/rules/builtin/allowed_values.py -> build/bdist.linux-armv7l/wheel/./kontra/rules/builtin 2026-02-09T22:57:59,385 copying build/lib/kontra/rules/builtin/range.py -> build/bdist.linux-armv7l/wheel/./kontra/rules/builtin 2026-02-09T22:57:59,387 copying build/lib/kontra/rules/builtin/starts_with.py -> build/bdist.linux-armv7l/wheel/./kontra/rules/builtin 2026-02-09T22:57:59,388 copying build/lib/kontra/rules/builtin/disallowed_values.py -> build/bdist.linux-armv7l/wheel/./kontra/rules/builtin 2026-02-09T22:57:59,391 copying build/lib/kontra/rules/builtin/max_rows.py -> build/bdist.linux-armv7l/wheel/./kontra/rules/builtin 2026-02-09T22:57:59,392 copying build/lib/kontra/rules/builtin/unique.py -> build/bdist.linux-armv7l/wheel/./kontra/rules/builtin 2026-02-09T22:57:59,395 copying build/lib/kontra/rules/builtin/conditional_range.py -> build/bdist.linux-armv7l/wheel/./kontra/rules/builtin 2026-02-09T22:57:59,397 copying build/lib/kontra/rules/builtin/min_rows.py -> build/bdist.linux-armv7l/wheel/./kontra/rules/builtin 2026-02-09T22:57:59,399 copying build/lib/kontra/rules/builtin/compare.py -> build/bdist.linux-armv7l/wheel/./kontra/rules/builtin 2026-02-09T22:57:59,401 copying build/lib/kontra/rules/builtin/ends_with.py -> build/bdist.linux-armv7l/wheel/./kontra/rules/builtin 2026-02-09T22:57:59,403 copying build/lib/kontra/rules/builtin/freshness.py -> build/bdist.linux-armv7l/wheel/./kontra/rules/builtin 2026-02-09T22:57:59,405 copying build/lib/kontra/rules/builtin/dtype.py -> build/bdist.linux-armv7l/wheel/./kontra/rules/builtin 2026-02-09T22:57:59,407 copying build/lib/kontra/rules/builtin/not_null.py -> build/bdist.linux-armv7l/wheel/./kontra/rules/builtin 2026-02-09T22:57:59,409 copying build/lib/kontra/rules/builtin/custom_sql_check.py -> build/bdist.linux-armv7l/wheel/./kontra/rules/builtin 2026-02-09T22:57:59,412 copying build/lib/kontra/rules/condition_parser.py -> build/bdist.linux-armv7l/wheel/./kontra/rules 2026-02-09T22:57:59,414 creating build/bdist.linux-armv7l/wheel/kontra/reporters 2026-02-09T22:57:59,415 copying build/lib/kontra/reporters/__init__.py -> build/bdist.linux-armv7l/wheel/./kontra/reporters 2026-02-09T22:57:59,417 copying build/lib/kontra/reporters/rich_reporter.py -> build/bdist.linux-armv7l/wheel/./kontra/reporters 2026-02-09T22:57:59,419 copying build/lib/kontra/reporters/json_reporter.py -> build/bdist.linux-armv7l/wheel/./kontra/reporters 2026-02-09T22:57:59,421 creating build/bdist.linux-armv7l/wheel/kontra/scout 2026-02-09T22:57:59,422 copying build/lib/kontra/scout/suggest.py -> build/bdist.linux-armv7l/wheel/./kontra/scout 2026-02-09T22:57:59,424 copying build/lib/kontra/scout/patterns.py -> build/bdist.linux-armv7l/wheel/./kontra/scout 2026-02-09T22:57:59,426 copying build/lib/kontra/scout/__init__.py -> build/bdist.linux-armv7l/wheel/./kontra/scout 2026-02-09T22:57:59,427 copying build/lib/kontra/scout/types.py -> build/bdist.linux-armv7l/wheel/./kontra/scout 2026-02-09T22:57:59,430 copying build/lib/kontra/scout/dtype_mapping.py -> build/bdist.linux-armv7l/wheel/./kontra/scout 2026-02-09T22:57:59,432 creating build/bdist.linux-armv7l/wheel/kontra/scout/backends 2026-02-09T22:57:59,433 copying build/lib/kontra/scout/backends/base.py -> build/bdist.linux-armv7l/wheel/./kontra/scout/backends 2026-02-09T22:57:59,435 copying build/lib/kontra/scout/backends/__init__.py -> build/bdist.linux-armv7l/wheel/./kontra/scout/backends 2026-02-09T22:57:59,437 copying build/lib/kontra/scout/backends/postgres_backend.py -> build/bdist.linux-armv7l/wheel/./kontra/scout/backends 2026-02-09T22:57:59,439 copying build/lib/kontra/scout/backends/duckdb_backend.py -> build/bdist.linux-armv7l/wheel/./kontra/scout/backends 2026-02-09T22:57:59,441 copying build/lib/kontra/scout/backends/sqlserver_backend.py -> build/bdist.linux-armv7l/wheel/./kontra/scout/backends 2026-02-09T22:57:59,444 copying build/lib/kontra/scout/profiler.py -> build/bdist.linux-armv7l/wheel/./kontra/scout 2026-02-09T22:57:59,447 creating build/bdist.linux-armv7l/wheel/kontra/scout/reporters 2026-02-09T22:57:59,448 copying build/lib/kontra/scout/reporters/markdown_reporter.py -> build/bdist.linux-armv7l/wheel/./kontra/scout/reporters 2026-02-09T22:57:59,450 copying build/lib/kontra/scout/reporters/__init__.py -> build/bdist.linux-armv7l/wheel/./kontra/scout/reporters 2026-02-09T22:57:59,452 copying build/lib/kontra/scout/reporters/rich_reporter.py -> build/bdist.linux-armv7l/wheel/./kontra/scout/reporters 2026-02-09T22:57:59,454 copying build/lib/kontra/scout/reporters/json_reporter.py -> build/bdist.linux-armv7l/wheel/./kontra/scout/reporters 2026-02-09T22:57:59,457 copying build/lib/kontra/scout/store.py -> build/bdist.linux-armv7l/wheel/./kontra/scout 2026-02-09T22:57:59,459 creating build/bdist.linux-armv7l/wheel/kontra/connectors 2026-02-09T22:57:59,460 copying build/lib/kontra/connectors/detection.py -> build/bdist.linux-armv7l/wheel/./kontra/connectors 2026-02-09T22:57:59,463 copying build/lib/kontra/connectors/__init__.py -> build/bdist.linux-armv7l/wheel/./kontra/connectors 2026-02-09T22:57:59,464 copying build/lib/kontra/connectors/sqlserver.py -> build/bdist.linux-armv7l/wheel/./kontra/connectors 2026-02-09T22:57:59,466 copying build/lib/kontra/connectors/postgres.py -> build/bdist.linux-armv7l/wheel/./kontra/connectors 2026-02-09T22:57:59,468 copying build/lib/kontra/connectors/handle.py -> build/bdist.linux-armv7l/wheel/./kontra/connectors 2026-02-09T22:57:59,471 copying build/lib/kontra/connectors/db_utils.py -> build/bdist.linux-armv7l/wheel/./kontra/connectors 2026-02-09T22:57:59,473 creating build/bdist.linux-armv7l/wheel/kontra/preplan 2026-02-09T22:57:59,474 copying build/lib/kontra/preplan/__init__.py -> build/bdist.linux-armv7l/wheel/./kontra/preplan 2026-02-09T22:57:59,476 copying build/lib/kontra/preplan/planner.py -> build/bdist.linux-armv7l/wheel/./kontra/preplan 2026-02-09T22:57:59,479 copying build/lib/kontra/preplan/types.py -> build/bdist.linux-armv7l/wheel/./kontra/preplan 2026-02-09T22:57:59,480 copying build/lib/kontra/preplan/sqlserver.py -> build/bdist.linux-armv7l/wheel/./kontra/preplan 2026-02-09T22:57:59,483 copying build/lib/kontra/preplan/postgres.py -> build/bdist.linux-armv7l/wheel/./kontra/preplan 2026-02-09T22:57:59,485 running install_egg_info 2026-02-09T22:57:59,490 Copying src/kontra.egg-info to build/bdist.linux-armv7l/wheel/./kontra-0.5.2-py3.11.egg-info 2026-02-09T22:57:59,501 running install_scripts 2026-02-09T22:57:59,512 creating build/bdist.linux-armv7l/wheel/kontra-0.5.2.dist-info/WHEEL 2026-02-09T22:57:59,515 creating '/tmp/pip-wheel-izc4pgrd/.tmp-ga0euv4b/kontra-0.5.2-py3-none-any.whl' and adding 'build/bdist.linux-armv7l/wheel' to it 2026-02-09T22:57:59,523 adding 'kontra/__init__.py' 2026-02-09T22:57:59,526 adding 'kontra/errors.py' 2026-02-09T22:57:59,528 adding 'kontra/logging.py' 2026-02-09T22:57:59,529 adding 'kontra/version.py' 2026-02-09T22:57:59,531 adding 'kontra/api/__init__.py' 2026-02-09T22:57:59,533 adding 'kontra/api/compare.py' 2026-02-09T22:57:59,534 adding 'kontra/api/decorators.py' 2026-02-09T22:57:59,543 adding 'kontra/api/results.py' 2026-02-09T22:57:59,546 adding 'kontra/api/rules.py' 2026-02-09T22:57:59,548 adding 'kontra/cli/__init__.py' 2026-02-09T22:57:59,549 adding 'kontra/cli/constants.py' 2026-02-09T22:57:59,550 adding 'kontra/cli/main.py' 2026-02-09T22:57:59,552 adding 'kontra/cli/renderers.py' 2026-02-09T22:57:59,553 adding 'kontra/cli/utils.py' 2026-02-09T22:57:59,555 adding 'kontra/cli/commands/__init__.py' 2026-02-09T22:57:59,556 adding 'kontra/cli/commands/config.py' 2026-02-09T22:57:59,558 adding 'kontra/cli/commands/diff.py' 2026-02-09T22:57:59,560 adding 'kontra/cli/commands/history.py' 2026-02-09T22:57:59,562 adding 'kontra/cli/commands/profile.py' 2026-02-09T22:57:59,564 adding 'kontra/cli/commands/validate.py' 2026-02-09T22:57:59,566 adding 'kontra/config/__init__.py' 2026-02-09T22:57:59,567 adding 'kontra/config/loader.py' 2026-02-09T22:57:59,569 adding 'kontra/config/models.py' 2026-02-09T22:57:59,572 adding 'kontra/config/settings.py' 2026-02-09T22:57:59,574 adding 'kontra/connectors/__init__.py' 2026-02-09T22:57:59,575 adding 'kontra/connectors/db_utils.py' 2026-02-09T22:57:59,577 adding 'kontra/connectors/detection.py' 2026-02-09T22:57:59,579 adding 'kontra/connectors/handle.py' 2026-02-09T22:57:59,581 adding 'kontra/connectors/postgres.py' 2026-02-09T22:57:59,583 adding 'kontra/connectors/sqlserver.py' 2026-02-09T22:57:59,585 adding 'kontra/engine/__init__.py' 2026-02-09T22:57:59,590 adding 'kontra/engine/engine.py' 2026-02-09T22:57:59,592 adding 'kontra/engine/result.py' 2026-02-09T22:57:59,595 adding 'kontra/engine/sql_utils.py' 2026-02-09T22:57:59,599 adding 'kontra/engine/sql_validator.py' 2026-02-09T22:57:59,601 adding 'kontra/engine/stats.py' 2026-02-09T22:57:59,602 adding 'kontra/engine/types.py' 2026-02-09T22:57:59,605 adding 'kontra/engine/backends/duckdb_session.py' 2026-02-09T22:57:59,606 adding 'kontra/engine/backends/duckdb_utils.py' 2026-02-09T22:57:59,608 adding 'kontra/engine/backends/polars_backend.py' 2026-02-09T22:57:59,610 adding 'kontra/engine/executors/__init__.py' 2026-02-09T22:57:59,611 adding 'kontra/engine/executors/base.py' 2026-02-09T22:57:59,614 adding 'kontra/engine/executors/database_base.py' 2026-02-09T22:57:59,619 adding 'kontra/engine/executors/duckdb_sql.py' 2026-02-09T22:57:59,621 adding 'kontra/engine/executors/postgres_sql.py' 2026-02-09T22:57:59,623 adding 'kontra/engine/executors/registry.py' 2026-02-09T22:57:59,626 adding 'kontra/engine/executors/sqlserver_sql.py' 2026-02-09T22:57:59,630 adding 'kontra/engine/materializers/__init__.py' 2026-02-09T22:57:59,632 adding 'kontra/engine/materializers/base.py' 2026-02-09T22:57:59,633 adding 'kontra/engine/materializers/duckdb.py' 2026-02-09T22:57:59,635 adding 'kontra/engine/materializers/factory.py' 2026-02-09T22:57:59,637 adding 'kontra/engine/materializers/polars_connector.py' 2026-02-09T22:57:59,639 adding 'kontra/engine/materializers/postgres.py' 2026-02-09T22:57:59,641 adding 'kontra/engine/materializers/registry.py' 2026-02-09T22:57:59,643 adding 'kontra/engine/materializers/sqlserver.py' 2026-02-09T22:57:59,645 adding 'kontra/preplan/__init__.py' 2026-02-09T22:57:59,648 adding 'kontra/preplan/planner.py' 2026-02-09T22:57:59,650 adding 'kontra/preplan/postgres.py' 2026-02-09T22:57:59,652 adding 'kontra/preplan/sqlserver.py' 2026-02-09T22:57:59,654 adding 'kontra/preplan/types.py' 2026-02-09T22:57:59,656 adding 'kontra/probes/__init__.py' 2026-02-09T22:57:59,659 adding 'kontra/probes/compare.py' 2026-02-09T22:57:59,661 adding 'kontra/probes/relationship.py' 2026-02-09T22:57:59,663 adding 'kontra/reporters/__init__.py' 2026-02-09T22:57:59,665 adding 'kontra/reporters/json_reporter.py' 2026-02-09T22:57:59,667 adding 'kontra/reporters/rich_reporter.py' 2026-02-09T22:57:59,669 adding 'kontra/rules/__init__.py' 2026-02-09T22:57:59,671 adding 'kontra/rules/base.py' 2026-02-09T22:57:59,673 adding 'kontra/rules/condition_parser.py' 2026-02-09T22:57:59,676 adding 'kontra/rules/execution_plan.py' 2026-02-09T22:57:59,678 adding 'kontra/rules/factory.py' 2026-02-09T22:57:59,679 adding 'kontra/rules/predicates.py' 2026-02-09T22:57:59,681 adding 'kontra/rules/registry.py' 2026-02-09T22:57:59,683 adding 'kontra/rules/static_predicates.py' 2026-02-09T22:57:59,686 adding 'kontra/rules/builtin/__init__.py' 2026-02-09T22:57:59,687 adding 'kontra/rules/builtin/allowed_values.py' 2026-02-09T22:57:59,690 adding 'kontra/rules/builtin/compare.py' 2026-02-09T22:57:59,692 adding 'kontra/rules/builtin/conditional_not_null.py' 2026-02-09T22:57:59,694 adding 'kontra/rules/builtin/conditional_range.py' 2026-02-09T22:57:59,696 adding 'kontra/rules/builtin/contains.py' 2026-02-09T22:57:59,698 adding 'kontra/rules/builtin/custom_sql_check.py' 2026-02-09T22:57:59,700 adding 'kontra/rules/builtin/disallowed_values.py' 2026-02-09T22:57:59,702 adding 'kontra/rules/builtin/dtype.py' 2026-02-09T22:57:59,704 adding 'kontra/rules/builtin/ends_with.py' 2026-02-09T22:57:59,706 adding 'kontra/rules/builtin/freshness.py' 2026-02-09T22:57:59,709 adding 'kontra/rules/builtin/length.py' 2026-02-09T22:57:59,710 adding 'kontra/rules/builtin/max_rows.py' 2026-02-09T22:57:59,712 adding 'kontra/rules/builtin/min_rows.py' 2026-02-09T22:57:59,713 adding 'kontra/rules/builtin/not_null.py' 2026-02-09T22:57:59,715 adding 'kontra/rules/builtin/range.py' 2026-02-09T22:57:59,716 adding 'kontra/rules/builtin/regex.py' 2026-02-09T22:57:59,718 adding 'kontra/rules/builtin/starts_with.py' 2026-02-09T22:57:59,719 adding 'kontra/rules/builtin/unique.py' 2026-02-09T22:57:59,721 adding 'kontra/scout/__init__.py' 2026-02-09T22:57:59,723 adding 'kontra/scout/dtype_mapping.py' 2026-02-09T22:57:59,724 adding 'kontra/scout/patterns.py' 2026-02-09T22:57:59,728 adding 'kontra/scout/profiler.py' 2026-02-09T22:57:59,729 adding 'kontra/scout/store.py' 2026-02-09T22:57:59,731 adding 'kontra/scout/suggest.py' 2026-02-09T22:57:59,734 adding 'kontra/scout/types.py' 2026-02-09T22:57:59,735 adding 'kontra/scout/backends/__init__.py' 2026-02-09T22:57:59,737 adding 'kontra/scout/backends/base.py' 2026-02-09T22:57:59,739 adding 'kontra/scout/backends/duckdb_backend.py' 2026-02-09T22:57:59,741 adding 'kontra/scout/backends/postgres_backend.py' 2026-02-09T22:57:59,744 adding 'kontra/scout/backends/sqlserver_backend.py' 2026-02-09T22:57:59,746 adding 'kontra/scout/reporters/__init__.py' 2026-02-09T22:57:59,747 adding 'kontra/scout/reporters/json_reporter.py' 2026-02-09T22:57:59,749 adding 'kontra/scout/reporters/markdown_reporter.py' 2026-02-09T22:57:59,750 adding 'kontra/scout/reporters/rich_reporter.py' 2026-02-09T22:57:59,752 adding 'kontra/state/__init__.py' 2026-02-09T22:57:59,754 adding 'kontra/state/fingerprint.py' 2026-02-09T22:57:59,758 adding 'kontra/state/types.py' 2026-02-09T22:57:59,760 adding 'kontra/state/backends/__init__.py' 2026-02-09T22:57:59,762 adding 'kontra/state/backends/base.py' 2026-02-09T22:57:59,765 adding 'kontra/state/backends/local.py' 2026-02-09T22:57:59,768 adding 'kontra/state/backends/postgres.py' 2026-02-09T22:57:59,771 adding 'kontra/state/backends/s3.py' 2026-02-09T22:57:59,774 adding 'kontra/state/backends/sqlserver.py' 2026-02-09T22:57:59,777 adding 'kontra-0.5.2.dist-info/licenses/LICENSE' 2026-02-09T22:57:59,779 adding 'kontra-0.5.2.dist-info/METADATA' 2026-02-09T22:57:59,780 adding 'kontra-0.5.2.dist-info/WHEEL' 2026-02-09T22:57:59,781 adding 'kontra-0.5.2.dist-info/entry_points.txt' 2026-02-09T22:57:59,782 adding 'kontra-0.5.2.dist-info/top_level.txt' 2026-02-09T22:57:59,784 adding 'kontra-0.5.2.dist-info/RECORD' 2026-02-09T22:57:59,790 removing build/bdist.linux-armv7l/wheel 2026-02-09T22:57:59,936 Building wheel for kontra (pyproject.toml): finished with status 'done' 2026-02-09T22:57:59,949 Created wheel for kontra: filename=kontra-0.5.2-py3-none-any.whl size=293745 sha256=022194aa46e346efdd0d1425a26ca01bb674fcd8f8e60c2522a6fef9bd0981e5 2026-02-09T22:57:59,950 Stored in directory: /tmp/pip-ephem-wheel-cache-36262miz/wheels/fa/a9/55/b86d3fa9c651113ffd688ae271c1143dc3f888f355617bb8d1 2026-02-09T22:57:59,965 Successfully built kontra 2026-02-09T22:57:59,975 Removed build tracker: '/tmp/pip-build-tracker-vk1k3cru'