2025-09-10T09:54:50,888 Created temporary directory: /tmp/pip-build-tracker-wyg6ts1y 2025-09-10T09:54:50,889 Initialized build tracking at /tmp/pip-build-tracker-wyg6ts1y 2025-09-10T09:54:50,889 Created build tracker: /tmp/pip-build-tracker-wyg6ts1y 2025-09-10T09:54:50,889 Entered build tracker: /tmp/pip-build-tracker-wyg6ts1y 2025-09-10T09:54:50,889 Created temporary directory: /tmp/pip-wheel-o2q68_jl 2025-09-10T09:54:50,892 Created temporary directory: /tmp/pip-ephem-wheel-cache-w22pbkmu 2025-09-10T09:54:50,954 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2025-09-10T09:54:50,957 2 location(s) to search for versions of mjml: 2025-09-10T09:54:50,957 * https://pypi.org/simple/mjml/ 2025-09-10T09:54:50,957 * https://www.piwheels.org/simple/mjml/ 2025-09-10T09:54:50,957 Fetching project page and analyzing links: https://pypi.org/simple/mjml/ 2025-09-10T09:54:50,957 Getting page https://pypi.org/simple/mjml/ 2025-09-10T09:54:50,958 Found index url https://pypi.org/simple/ 2025-09-10T09:54:51,111 Fetched page https://pypi.org/simple/mjml/ as application/vnd.pypi.simple.v1+json 2025-09-10T09:54:51,120 Skipping link: No binaries permitted for mjml: https://files.pythonhosted.org/packages/07/5f/e0c810469120c13d524c8c89c85255d1cff7d94312f67eb0d66d644c0fd1/mjml-0.5-py3-none-any.whl (from https://pypi.org/simple/mjml/) (requires-python:>=3.6) 2025-09-10T09:54:51,121 Found link https://files.pythonhosted.org/packages/b4/7d/2aae17e835a34b94d2987fb57196ffbf291ff592d7c7b9f66cd73cb67678/mjml-0.5.tar.gz (from https://pypi.org/simple/mjml/) (requires-python:>=3.6), version: 0.5 2025-09-10T09:54:51,122 Skipping link: No binaries permitted for mjml: https://files.pythonhosted.org/packages/09/d6/03adf41449e00deedcaa5f25e4d98c8ff66a3069018ab48ae177e8f56966/mjml-0.5.1-py3-none-any.whl (from https://pypi.org/simple/mjml/) (requires-python:>=3.6) 2025-09-10T09:54:51,122 Found link https://files.pythonhosted.org/packages/5e/f2/cca1bde54c9e0ac68ee673822d4d9c813dd8edcd47c1d89a3dd51facca26/mjml-0.5.1.tar.gz (from https://pypi.org/simple/mjml/) (requires-python:>=3.6), version: 0.5.1 2025-09-10T09:54:51,123 Skipping link: No binaries permitted for mjml: https://files.pythonhosted.org/packages/f4/71/a7cadb894b4a82bac323e9ab4a892c4b75f3e571b6ecbad5666399890750/mjml-0.5.2-py3-none-any.whl (from https://pypi.org/simple/mjml/) (requires-python:>=3.6) 2025-09-10T09:54:51,123 Found link https://files.pythonhosted.org/packages/b7/07/bd402ed5184955aca72770221837153ce7aa17de57ef3cad903f69068cde/mjml-0.5.2.tar.gz (from https://pypi.org/simple/mjml/) (requires-python:>=3.6), version: 0.5.2 2025-09-10T09:54:51,123 Skipping link: No binaries permitted for mjml: https://files.pythonhosted.org/packages/65/fa/9264c5050b4eaed34500b4b94771f7bb91b80588c2bc607f8ba7fcee77bd/mjml-0.5.3-py3-none-any.whl (from https://pypi.org/simple/mjml/) (requires-python:>=3.6) 2025-09-10T09:54:51,124 Found link https://files.pythonhosted.org/packages/b4/27/3f62fccb974ca299b08495da436c6e82198229c9b16ab82a75e80638bf75/mjml-0.5.3.tar.gz (from https://pypi.org/simple/mjml/) (requires-python:>=3.6), version: 0.5.3 2025-09-10T09:54:51,124 Skipping link: No binaries permitted for mjml: https://files.pythonhosted.org/packages/f5/45/16c81c12538389aa1d7025d4224416f95a473fa181c33d631ce7bb45c2dd/mjml-0.5.4-py3-none-any.whl (from https://pypi.org/simple/mjml/) (requires-python:>=3.6) 2025-09-10T09:54:51,125 Found link https://files.pythonhosted.org/packages/38/93/4d1f3a3e9ff52bc3f958d0ea830e4c69f2feb6d65e1a0342279550811d8d/mjml-0.5.4.tar.gz (from https://pypi.org/simple/mjml/) (requires-python:>=3.6), version: 0.5.4 2025-09-10T09:54:51,125 Skipping link: No binaries permitted for mjml: https://files.pythonhosted.org/packages/2b/55/f3b35adf2a9a677a0e8839f69a5e8cbf9a7645fae520c65aea36fa5bb6de/mjml-0.6.0-py3-none-any.whl (from https://pypi.org/simple/mjml/) (requires-python:>=3.6) 2025-09-10T09:54:51,125 Found link https://files.pythonhosted.org/packages/99/a8/14a5c494254294943fb2bc0c9fefb20be80806e14aca6c3d328b01e4bdd9/mjml-0.6.0.tar.gz (from https://pypi.org/simple/mjml/) (requires-python:>=3.6), version: 0.6.0 2025-09-10T09:54:51,126 Skipping link: No binaries permitted for mjml: https://files.pythonhosted.org/packages/c3/13/1b6355ea364e50deded22ca0dd7a41af4a12792ec9bb2e57eff520645bf2/mjml-0.6.1-py3-none-any.whl (from https://pypi.org/simple/mjml/) (requires-python:>=3.6) 2025-09-10T09:54:51,126 Found link https://files.pythonhosted.org/packages/0f/73/fbbda6dcf93d6d0557d9cfa302dcdd66bd3e2342cbf2f28b330a38d867b6/mjml-0.6.1.tar.gz (from https://pypi.org/simple/mjml/) (requires-python:>=3.6), version: 0.6.1 2025-09-10T09:54:51,127 Skipping link: No binaries permitted for mjml: https://files.pythonhosted.org/packages/1f/b8/bb9e504f8c31f4d32b9a3cca55af35d3364a0e63826e0f9a5ef998d658d6/mjml-0.6.2-py3-none-any.whl (from https://pypi.org/simple/mjml/) (requires-python:>=3.6) 2025-09-10T09:54:51,127 Found link https://files.pythonhosted.org/packages/6b/b7/68f0915a1dab3e7ada9585199f52ff36d7848959cbef8c53dc4efc859851/mjml-0.6.2.tar.gz (from https://pypi.org/simple/mjml/) (requires-python:>=3.6), version: 0.6.2 2025-09-10T09:54:51,127 Skipping link: No binaries permitted for mjml: https://files.pythonhosted.org/packages/d3/e0/9a8da14408312dc0c3b08d5a5c9cab5c09652ca8644bd4cb201a4f55c531/mjml-0.7.0-py3-none-any.whl (from https://pypi.org/simple/mjml/) (requires-python:>=3.6) 2025-09-10T09:54:51,128 Found link https://files.pythonhosted.org/packages/c4/b6/117f3774e8fbdca4bbe05dc1397242f431bf36f57cd14a62f0a8567253b6/mjml-0.7.0.tar.gz (from https://pypi.org/simple/mjml/) (requires-python:>=3.6), version: 0.7.0 2025-09-10T09:54:51,128 Skipping link: No binaries permitted for mjml: https://files.pythonhosted.org/packages/e3/79/37b069bd166c333bba2e588d0809e47d7a95832797c702d311a5df8f641e/mjml-0.8.0-py3-none-any.whl (from https://pypi.org/simple/mjml/) (requires-python:>=3.6) 2025-09-10T09:54:51,129 Found link https://files.pythonhosted.org/packages/6e/77/626770d560f73aa9027d6afea72af2f67d3dd68af257e175b8db6b47603a/mjml-0.8.0.tar.gz (from https://pypi.org/simple/mjml/) (requires-python:>=3.6), version: 0.8.0 2025-09-10T09:54:51,129 Skipping link: No binaries permitted for mjml: https://files.pythonhosted.org/packages/83/7a/01505b41f0fe788f3ef26172cdd6bfcc6e75d8ba488058cb6bbf584650b4/mjml-0.9.0-py3-none-any.whl (from https://pypi.org/simple/mjml/) (requires-python:>=3.6) 2025-09-10T09:54:51,129 Found link https://files.pythonhosted.org/packages/92/9c/a71319b195c211a1f4db4f7c2dfadce49443960f6dc8629dded4a1718090/mjml-0.9.0.tar.gz (from https://pypi.org/simple/mjml/) (requires-python:>=3.6), version: 0.9.0 2025-09-10T09:54:51,130 Skipping link: No binaries permitted for mjml: https://files.pythonhosted.org/packages/b1/ab/302bfddb293b10892c80a2393fccb0e37c7bf4e18a71c551c13798e3d9ec/mjml-0.9.1-py3-none-any.whl (from https://pypi.org/simple/mjml/) (requires-python:>=3.6) 2025-09-10T09:54:51,130 Found link https://files.pythonhosted.org/packages/e7/eb/31c7b506374518ea04adca0a5c13949177535f9503487780f5c4f5c64dc7/mjml-0.9.1.tar.gz (from https://pypi.org/simple/mjml/) (requires-python:>=3.6), version: 0.9.1 2025-09-10T09:54:51,131 Skipping link: No binaries permitted for mjml: https://files.pythonhosted.org/packages/e6/27/a1810d01258429da16450ce6edfa005fc526af2d924d75fc236611acd03b/mjml-0.10.0-py3-none-any.whl (from https://pypi.org/simple/mjml/) (requires-python:>=3.6) 2025-09-10T09:54:51,131 Found link https://files.pythonhosted.org/packages/99/f5/099aa9a37dc89e0c97e672161844ededa882435d035eb18fc921b915cd7c/mjml-0.10.0.tar.gz (from https://pypi.org/simple/mjml/) (requires-python:>=3.6), version: 0.10.0 2025-09-10T09:54:51,131 Skipping link: No binaries permitted for mjml: https://files.pythonhosted.org/packages/62/ff/90cd7decb346b3a6e400565271e6eabb6dba3231c24bbd16f03492e4078a/mjml-0.11.0-py3-none-any.whl (from https://pypi.org/simple/mjml/) (requires-python:>=3.6) 2025-09-10T09:54:51,132 Found link https://files.pythonhosted.org/packages/b4/79/71174e3c278cd49c3ee1f1c308aafe13e76dc9b2dcbb3e36e1e8818313a6/mjml-0.11.0.tar.gz (from https://pypi.org/simple/mjml/) (requires-python:>=3.6), version: 0.11.0 2025-09-10T09:54:51,132 Skipping link: No binaries permitted for mjml: https://files.pythonhosted.org/packages/85/a6/7ed27888adbf8cbdd734e298691004918ec0ef5f40e6bc1329ed97da2273/mjml-0.11.1-py3-none-any.whl (from https://pypi.org/simple/mjml/) (requires-python:>=3.6) 2025-09-10T09:54:51,133 Found link https://files.pythonhosted.org/packages/2a/68/4e0e1b0bc64f0d3afac2fb8a4fb35f2a4e9a0521ae1c777c0e29e21b27fa/mjml-0.11.1.tar.gz (from https://pypi.org/simple/mjml/) (requires-python:>=3.6), version: 0.11.1 2025-09-10T09:54:51,133 Fetching project page and analyzing links: https://www.piwheels.org/simple/mjml/ 2025-09-10T09:54:51,134 Getting page https://www.piwheels.org/simple/mjml/ 2025-09-10T09:54:51,135 Found index url https://www.piwheels.org/simple/ 2025-09-10T09:54:51,245 Fetched page https://www.piwheels.org/simple/mjml/ as text/html 2025-09-10T09:54:51,249 Skipping link: No binaries permitted for mjml: https://archive1.piwheels.org/simple/mjml/mjml-0.11.1-py3-none-any.whl#sha256=411f1cc2852ce1e925a48553cf377e3c0f13bbc387fb54f55915266a7b92dac8 (from https://www.piwheels.org/simple/mjml/) (requires-python:>=3.6) 2025-09-10T09:54:51,249 Skipping link: No binaries permitted for mjml: https://archive1.piwheels.org/simple/mjml/mjml-0.11.0-py3-none-any.whl#sha256=659c3aac314fc9f9d6113208d84f26af92df66d02b7ea4981414827effc603a1 (from https://www.piwheels.org/simple/mjml/) (requires-python:>=3.6) 2025-09-10T09:54:51,250 Skipping link: No binaries permitted for mjml: https://archive1.piwheels.org/simple/mjml/mjml-0.10.0-py3-none-any.whl#sha256=d718f0461ec5b1f6b6783c3b4899945d45bb690394950d36a30ecc0ebb41b04e (from https://www.piwheels.org/simple/mjml/) (requires-python:>=3.6) 2025-09-10T09:54:51,250 Skipping link: No binaries permitted for mjml: https://archive1.piwheels.org/simple/mjml/mjml-0.9.1-py3-none-any.whl#sha256=641db801f393f2e36875d780d5554e472c24283de434ac72fba047db40f48ef9 (from https://www.piwheels.org/simple/mjml/) (requires-python:>=3.6) 2025-09-10T09:54:51,250 Skipping link: No binaries permitted for mjml: https://archive1.piwheels.org/simple/mjml/mjml-0.9.0-py3-none-any.whl#sha256=3720b5b7c9a65fef5b8387c0e17c90008a6875c81736367b8a86580f7162150c (from https://www.piwheels.org/simple/mjml/) (requires-python:>=3.6) 2025-09-10T09:54:51,250 Skipping link: No binaries permitted for mjml: https://archive1.piwheels.org/simple/mjml/mjml-0.8.0-py3-none-any.whl#sha256=da222ce85defc6064e298fbcafdecb6581e880cb1bc01f6360e869babc37afe9 (from https://www.piwheels.org/simple/mjml/) (requires-python:>=3.6) 2025-09-10T09:54:51,250 Skipping link: No binaries permitted for mjml: https://archive1.piwheels.org/simple/mjml/mjml-0.6.2-py3-none-any.whl#sha256=c1891f3151023c8edc59d60e574c94a1845836f3408b0ef8b8f68e84ec7d8048 (from https://www.piwheels.org/simple/mjml/) (requires-python:>=3.6) 2025-09-10T09:54:51,250 Skipping link: No binaries permitted for mjml: https://archive1.piwheels.org/simple/mjml/mjml-0.6.1-py3-none-any.whl#sha256=60260b5773cfa5e866d140b175e58e7e000dfb036090e7c04be397a191fc71dd (from https://www.piwheels.org/simple/mjml/) (requires-python:>=3.6) 2025-09-10T09:54:51,250 Skipping link: No binaries permitted for mjml: https://archive1.piwheels.org/simple/mjml/mjml-0.6.0-py3-none-any.whl#sha256=d93c6979f3166967f5bb75cb2814b36f67691179e6aa064d172859b8e736fa2f (from https://www.piwheels.org/simple/mjml/) (requires-python:>=3.6) 2025-09-10T09:54:51,251 Skipping link: No binaries permitted for mjml: https://archive1.piwheels.org/simple/mjml/mjml-0.5.4-py3-none-any.whl#sha256=76f89455c3ab34806fff832570ba4eaf55dcb9fb83a04bc128644c571bd8aff2 (from https://www.piwheels.org/simple/mjml/) (requires-python:>=3.6) 2025-09-10T09:54:51,251 Skipping link: No binaries permitted for mjml: https://archive1.piwheels.org/simple/mjml/mjml-0.5.3-py3-none-any.whl#sha256=04e81ecf4d76c6ad456da5ae0b48a72eb4849acd843a50c0c8ba02d74f7dd91e (from https://www.piwheels.org/simple/mjml/) (requires-python:>=3.6) 2025-09-10T09:54:51,251 Skipping link: No binaries permitted for mjml: https://archive1.piwheels.org/simple/mjml/mjml-0.5.2-py3-none-any.whl#sha256=ca1ef5766bd82321d39748d03f09fdb3fed6b5d5cb65edbe4f1bd83daa6b8213 (from https://www.piwheels.org/simple/mjml/) (requires-python:>=3.6) 2025-09-10T09:54:51,251 Skipping link: No binaries permitted for mjml: https://archive1.piwheels.org/simple/mjml/mjml-0.5.1-py3-none-any.whl#sha256=4b2ee9004eae13ce79ddd863b5e4ddcff142b10e5d4e107ae1cee399d83769db (from https://www.piwheels.org/simple/mjml/) (requires-python:>=3.6) 2025-09-10T09:54:51,251 Skipping link: No binaries permitted for mjml: https://archive1.piwheels.org/simple/mjml/mjml-0.5-py3-none-any.whl#sha256=65d13c8f08f071303146fae113fa73d835c5d594cfd6d3f7902006cad66dab90 (from https://www.piwheels.org/simple/mjml/) (requires-python:>=3.6) 2025-09-10T09:54:51,251 Skipping link: not a file: https://www.piwheels.org/simple/mjml/ 2025-09-10T09:54:51,252 Skipping link: not a file: https://pypi.org/simple/mjml/ 2025-09-10T09:54:51,276 Given no hashes to check 1 links for project 'mjml': discarding no candidates 2025-09-10T09:54:51,277 Collecting mjml==0.7.0 2025-09-10T09:54:51,279 Created temporary directory: /tmp/pip-unpack-lfuz5g45 2025-09-10T09:54:51,437 Downloading mjml-0.7.0.tar.gz (38 kB) 2025-09-10T09:54:51,530 Added mjml==0.7.0 from https://files.pythonhosted.org/packages/c4/b6/117f3774e8fbdca4bbe05dc1397242f431bf36f57cd14a62f0a8567253b6/mjml-0.7.0.tar.gz to build tracker '/tmp/pip-build-tracker-wyg6ts1y' 2025-09-10T09:54:51,532 Running setup.py (path:/tmp/pip-wheel-o2q68_jl/mjml_0f900111a563491f977af0e1207134cd/setup.py) egg_info for package mjml 2025-09-10T09:54:51,532 Created temporary directory: /tmp/pip-pip-egg-info-_qlywy3w 2025-09-10T09:54:51,533 Preparing metadata (setup.py): started 2025-09-10T09:54:51,533 Running command python setup.py egg_info 2025-09-10T09:54:52,158 /usr/local/lib/python3.13/dist-packages/setuptools/config/expand.py:128: SetuptoolsWarning: File '/tmp/pip-wheel-o2q68_jl/mjml_0f900111a563491f977af0e1207134cd/VERSION.txt' cannot be found 2025-09-10T09:54:52,158 for path in _filter_existing_files(_filepaths) 2025-09-10T09:54:52,164 /usr/local/lib/python3.13/dist-packages/setuptools/dist.py:759: SetuptoolsDeprecationWarning: License classifiers are deprecated. 2025-09-10T09:54:52,164 !! 2025-09-10T09:54:52,164 ******************************************************************************** 2025-09-10T09:54:52,164 Please consider removing the following classifiers in favor of a SPDX license expression: 2025-09-10T09:54:52,165 License :: OSI Approved :: MIT License 2025-09-10T09:54:52,165 See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. 2025-09-10T09:54:52,165 ******************************************************************************** 2025-09-10T09:54:52,165 !! 2025-09-10T09:54:52,165 self._finalize_license_expression() 2025-09-10T09:54:52,646 Traceback (most recent call last): 2025-09-10T09:54:52,647 File "/usr/local/lib/python3.13/dist-packages/setuptools/config/setupcfg.py", line 591, in _parse_version 2025-09-10T09:54:52,647 Version(version) 2025-09-10T09:54:52,648 ~~~~~~~^^^^^^^^^ 2025-09-10T09:54:52,648 File "/usr/local/lib/python3.13/dist-packages/packaging/version.py", line 202, in __init__ 2025-09-10T09:54:52,648 raise InvalidVersion(f"Invalid version: {version!r}") 2025-09-10T09:54:52,648 packaging.version.InvalidVersion: Invalid version: '' 2025-09-10T09:54:52,648 The above exception was the direct cause of the following exception: 2025-09-10T09:54:52,648 Traceback (most recent call last): 2025-09-10T09:54:52,651 File "", line 2, in 2025-09-10T09:54:52,651 exec(compile(''' 2025-09-10T09:54:52,651 ~~~~^^^^^^^^^^^^ 2025-09-10T09:54:52,652 # This is -- a caller that pip uses to run setup.py 2025-09-10T09:54:52,652 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-10T09:54:52,652 ...<32 lines>... 2025-09-10T09:54:52,652 exec(compile(setup_py_code, filename, "exec")) 2025-09-10T09:54:52,652 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-10T09:54:52,652 ''' % ('/tmp/pip-wheel-o2q68_jl/mjml_0f900111a563491f977af0e1207134cd/setup.py',), "", "exec")) 2025-09-10T09:54:52,652 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-10T09:54:52,652 File "", line 35, in 2025-09-10T09:54:52,653 File "/tmp/pip-wheel-o2q68_jl/mjml_0f900111a563491f977af0e1207134cd/setup.py", line 5, in 2025-09-10T09:54:52,653 setup() 2025-09-10T09:54:52,653 ~~~~~^^ 2025-09-10T09:54:52,653 File "/usr/local/lib/python3.13/dist-packages/setuptools/__init__.py", line 115, in setup 2025-09-10T09:54:52,653 return distutils.core.setup(**attrs) 2025-09-10T09:54:52,653 ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ 2025-09-10T09:54:52,653 File "/usr/local/lib/python3.13/dist-packages/setuptools/_distutils/core.py", line 160, in setup 2025-09-10T09:54:52,653 dist.parse_config_files() 2025-09-10T09:54:52,654 ~~~~~~~~~~~~~~~~~~~~~~~^^ 2025-09-10T09:54:52,654 File "/usr/local/lib/python3.13/dist-packages/setuptools/dist.py", line 752, in parse_config_files 2025-09-10T09:54:52,654 setupcfg.parse_configuration( 2025-09-10T09:54:52,654 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 2025-09-10T09:54:52,654 self, self.command_options, ignore_option_errors=ignore_option_errors 2025-09-10T09:54:52,654 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-10T09:54:52,654 ) 2025-09-10T09:54:52,654 ^ 2025-09-10T09:54:52,654 File "/usr/local/lib/python3.13/dist-packages/setuptools/config/setupcfg.py", line 188, in parse_configuration 2025-09-10T09:54:52,655 meta.parse() 2025-09-10T09:54:52,655 ~~~~~~~~~~^^ 2025-09-10T09:54:52,655 File "/usr/local/lib/python3.13/dist-packages/setuptools/config/setupcfg.py", line 502, in parse 2025-09-10T09:54:52,655 section_parser_method(section_options) 2025-09-10T09:54:52,655 ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^ 2025-09-10T09:54:52,655 File "/usr/local/lib/python3.13/dist-packages/setuptools/config/setupcfg.py", line 477, in parse_section 2025-09-10T09:54:52,655 self[name] = value 2025-09-10T09:54:52,655 ~~~~^^^^^^ 2025-09-10T09:54:52,655 File "/usr/local/lib/python3.13/dist-packages/setuptools/config/setupcfg.py", line 294, in __setitem__ 2025-09-10T09:54:52,656 parsed = self.parsers.get(option_name, lambda x: x)(value) 2025-09-10T09:54:52,656 File "/usr/local/lib/python3.13/dist-packages/setuptools/config/setupcfg.py", line 593, in _parse_version 2025-09-10T09:54:52,656 raise OptionError( 2025-09-10T09:54:52,656 ...<2 lines>... 2025-09-10T09:54:52,656 ) from e 2025-09-10T09:54:52,656 distutils.errors.DistutilsOptionError: Version loaded from file: VERSION.txt does not comply with PEP 440: 2025-09-10T09:54:52,764 ERROR: python setup.py egg_info exited with 1 2025-09-10T09:54:52,776 [bold magenta]full command[/]: [blue]/usr/bin/python3 -c ' 2025-09-10T09:54:52,776 exec(compile('"'"''"'"''"'"' 2025-09-10T09:54:52,776 # This is -- a caller that pip uses to run setup.py 2025-09-10T09:54:52,776 # 2025-09-10T09:54:52,776 # - It imports setuptools before invoking setup.py, to enable projects that directly 2025-09-10T09:54:52,776 # import from `distutils.core` to work with newer packaging standards. 2025-09-10T09:54:52,776 # - It provides a clear error message when setuptools is not installed. 2025-09-10T09:54:52,776 # - It sets `sys.argv[0]` to the underlying `setup.py`, when invoking `setup.py` so 2025-09-10T09:54:52,776 # setuptools doesn'"'"'t think the script is `-c`. This avoids the following warning: 2025-09-10T09:54:52,776 # manifest_maker: standard file '"'"'-c'"'"' not found". 2025-09-10T09:54:52,776 # - It generates a shim setup.py, for handling setup.cfg-only projects. 2025-09-10T09:54:52,776 import os, sys, tokenize, traceback 2025-09-10T09:54:52,776 2025-09-10T09:54:52,776 try: 2025-09-10T09:54:52,776 import setuptools 2025-09-10T09:54:52,776 except ImportError: 2025-09-10T09:54:52,776 print( 2025-09-10T09:54:52,776 "ERROR: Can not execute `setup.py` since setuptools failed to import in " 2025-09-10T09:54:52,776 "the build environment with exception:", 2025-09-10T09:54:52,776 file=sys.stderr, 2025-09-10T09:54:52,776 ) 2025-09-10T09:54:52,776 traceback.print_exc() 2025-09-10T09:54:52,776 sys.exit(1) 2025-09-10T09:54:52,776 2025-09-10T09:54:52,776 __file__ = %r 2025-09-10T09:54:52,776 sys.argv[0] = __file__ 2025-09-10T09:54:52,776 2025-09-10T09:54:52,776 if os.path.exists(__file__): 2025-09-10T09:54:52,776 filename = __file__ 2025-09-10T09:54:52,776 with tokenize.open(__file__) as f: 2025-09-10T09:54:52,776 setup_py_code = f.read() 2025-09-10T09:54:52,776 else: 2025-09-10T09:54:52,776 filename = "" 2025-09-10T09:54:52,776 setup_py_code = "from setuptools import setup; setup()" 2025-09-10T09:54:52,776 2025-09-10T09:54:52,776 exec(compile(setup_py_code, filename, "exec")) 2025-09-10T09:54:52,776 '"'"''"'"''"'"' % ('"'"'/tmp/pip-wheel-o2q68_jl/mjml_0f900111a563491f977af0e1207134cd/setup.py'"'"',), "", "exec"))' egg_info --egg-base /tmp/pip-pip-egg-info-_qlywy3w[/] 2025-09-10T09:54:52,776 [bold magenta]cwd[/]: /tmp/pip-wheel-o2q68_jl/mjml_0f900111a563491f977af0e1207134cd/ 2025-09-10T09:54:52,776 Preparing metadata (setup.py): finished with status 'error' 2025-09-10T09:54:52,777 ERROR: metadata generation failed 2025-09-10T09:54:52,782 Exception information: 2025-09-10T09:54:52,782 Traceback (most recent call last): 2025-09-10T09:54:52,782 File "/usr/lib/python3/dist-packages/pip/_internal/operations/build/metadata_legacy.py", line 63, in generate_metadata 2025-09-10T09:54:52,782 call_subprocess( 2025-09-10T09:54:52,782 ~~~~~~~~~~~~~~~^ 2025-09-10T09:54:52,782 args, 2025-09-10T09:54:52,782 ^^^^^ 2025-09-10T09:54:52,782 ...<2 lines>... 2025-09-10T09:54:52,782 spinner=spinner, 2025-09-10T09:54:52,782 ^^^^^^^^^^^^^^^^ 2025-09-10T09:54:52,782 ) 2025-09-10T09:54:52,782 ^ 2025-09-10T09:54:52,782 File "/usr/lib/python3/dist-packages/pip/_internal/utils/subprocess.py", line 209, in call_subprocess 2025-09-10T09:54:52,782 raise error 2025-09-10T09:54:52,782 pip._internal.exceptions.InstallationSubprocessError: python setup.py egg_info exited with 1 2025-09-10T09:54:52,782 2025-09-10T09:54:52,782 The above exception was the direct cause of the following exception: 2025-09-10T09:54:52,782 2025-09-10T09:54:52,782 Traceback (most recent call last): 2025-09-10T09:54:52,782 File "/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py", line 105, in _run_wrapper 2025-09-10T09:54:52,782 status = _inner_run() 2025-09-10T09:54:52,782 File "/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py", line 96, in _inner_run 2025-09-10T09:54:52,782 return self.run(options, args) 2025-09-10T09:54:52,782 ~~~~~~~~^^^^^^^^^^^^^^^ 2025-09-10T09:54:52,782 File "/usr/lib/python3/dist-packages/pip/_internal/cli/req_command.py", line 68, in wrapper 2025-09-10T09:54:52,782 return func(self, options, args) 2025-09-10T09:54:52,782 File "/usr/lib/python3/dist-packages/pip/_internal/commands/wheel.py", line 147, in run 2025-09-10T09:54:52,782 requirement_set = resolver.resolve(reqs, check_supported_wheels=True) 2025-09-10T09:54:52,782 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/resolver.py", line 96, in resolve 2025-09-10T09:54:52,782 result = self._result = resolver.resolve( 2025-09-10T09:54:52,782 ~~~~~~~~~~~~~~~~^ 2025-09-10T09:54:52,782 collected.requirements, max_rounds=limit_how_complex_resolution_can_be 2025-09-10T09:54:52,782 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-10T09:54:52,782 ) 2025-09-10T09:54:52,782 ^ 2025-09-10T09:54:52,782 File "/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/resolvers/resolution.py", line 515, in resolve 2025-09-10T09:54:52,782 state = resolution.resolve(requirements, max_rounds=max_rounds) 2025-09-10T09:54:52,782 File "/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/resolvers/resolution.py", line 388, in resolve 2025-09-10T09:54:52,782 self._add_to_criteria(self.state.criteria, r, parent=None) 2025-09-10T09:54:52,782 ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-10T09:54:52,782 File "/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/resolvers/resolution.py", line 141, in _add_to_criteria 2025-09-10T09:54:52,782 if not criterion.candidates: 2025-09-10T09:54:52,782 ^^^^^^^^^^^^^^^^^^^^ 2025-09-10T09:54:52,782 File "/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/structs.py", line 194, in __bool__ 2025-09-10T09:54:52,782 return bool(self._sequence) 2025-09-10T09:54:52,782 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 163, in __bool__ 2025-09-10T09:54:52,782 self._bool = any(self) 2025-09-10T09:54:52,782 ~~~^^^^^^ 2025-09-10T09:54:52,782 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 147, in 2025-09-10T09:54:52,782 return (c for c in iterator if id(c) not in self._incompatible_ids) 2025-09-10T09:54:52,782 ^^^^^^^^ 2025-09-10T09:54:52,782 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 37, in _iter_built 2025-09-10T09:54:52,782 candidate = func() 2025-09-10T09:54:52,782 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/factory.py", line 187, in _make_candidate_from_link 2025-09-10T09:54:52,782 base: Optional[BaseCandidate] = self._make_base_candidate_from_link( 2025-09-10T09:54:52,782 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 2025-09-10T09:54:52,782 link, template, name, version 2025-09-10T09:54:52,782 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-10T09:54:52,782 ) 2025-09-10T09:54:52,782 ^ 2025-09-10T09:54:52,782 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/factory.py", line 233, in _make_base_candidate_from_link 2025-09-10T09:54:52,782 self._link_candidate_cache[link] = LinkCandidate( 2025-09-10T09:54:52,782 ~~~~~~~~~~~~~^ 2025-09-10T09:54:52,782 link, 2025-09-10T09:54:52,782 ^^^^^ 2025-09-10T09:54:52,782 ...<3 lines>... 2025-09-10T09:54:52,782 version=version, 2025-09-10T09:54:52,782 ^^^^^^^^^^^^^^^^ 2025-09-10T09:54:52,782 ) 2025-09-10T09:54:52,782 ^ 2025-09-10T09:54:52,782 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 306, in __init__ 2025-09-10T09:54:52,782 super().__init__( 2025-09-10T09:54:52,782 ~~~~~~~~~~~~~~~~^ 2025-09-10T09:54:52,782 link=link, 2025-09-10T09:54:52,782 ^^^^^^^^^^ 2025-09-10T09:54:52,782 ...<4 lines>... 2025-09-10T09:54:52,782 version=version, 2025-09-10T09:54:52,782 ^^^^^^^^^^^^^^^^ 2025-09-10T09:54:52,782 ) 2025-09-10T09:54:52,782 ^ 2025-09-10T09:54:52,782 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 159, in __init__ 2025-09-10T09:54:52,782 self.dist = self._prepare() 2025-09-10T09:54:52,782 ~~~~~~~~~~~~~^^ 2025-09-10T09:54:52,782 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 236, in _prepare 2025-09-10T09:54:52,782 dist = self._prepare_distribution() 2025-09-10T09:54:52,782 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 317, in _prepare_distribution 2025-09-10T09:54:52,782 return preparer.prepare_linked_requirement(self._ireq, parallel_builds=True) 2025-09-10T09:54:52,782 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-10T09:54:52,782 File "/usr/lib/python3/dist-packages/pip/_internal/operations/prepare.py", line 532, in prepare_linked_requirement 2025-09-10T09:54:52,782 return self._prepare_linked_requirement(req, parallel_builds) 2025-09-10T09:54:52,782 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ 2025-09-10T09:54:52,782 File "/usr/lib/python3/dist-packages/pip/_internal/operations/prepare.py", line 647, in _prepare_linked_requirement 2025-09-10T09:54:52,782 dist = _get_prepared_distribution( 2025-09-10T09:54:52,782 req, 2025-09-10T09:54:52,782 ...<3 lines>... 2025-09-10T09:54:52,782 self.check_build_deps, 2025-09-10T09:54:52,782 ) 2025-09-10T09:54:52,782 File "/usr/lib/python3/dist-packages/pip/_internal/operations/prepare.py", line 71, in _get_prepared_distribution 2025-09-10T09:54:52,782 abstract_dist.prepare_distribution_metadata( 2025-09-10T09:54:52,782 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 2025-09-10T09:54:52,782 finder, build_isolation, check_build_deps 2025-09-10T09:54:52,782 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-10T09:54:52,782 ) 2025-09-10T09:54:52,782 ^ 2025-09-10T09:54:52,782 File "/usr/lib/python3/dist-packages/pip/_internal/distributions/sdist.py", line 69, in prepare_distribution_metadata 2025-09-10T09:54:52,782 self.req.prepare_metadata() 2025-09-10T09:54:52,782 ~~~~~~~~~~~~~~~~~~~~~~~~~^^ 2025-09-10T09:54:52,782 File "/usr/lib/python3/dist-packages/pip/_internal/req/req_install.py", line 581, in prepare_metadata 2025-09-10T09:54:52,782 self.metadata_directory = generate_metadata_legacy( 2025-09-10T09:54:52,782 ~~~~~~~~~~~~~~~~~~~~~~~~^ 2025-09-10T09:54:52,782 build_env=self.build_env, 2025-09-10T09:54:52,782 ^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-10T09:54:52,782 ...<3 lines>... 2025-09-10T09:54:52,782 details=details, 2025-09-10T09:54:52,782 ^^^^^^^^^^^^^^^^ 2025-09-10T09:54:52,782 ) 2025-09-10T09:54:52,782 ^ 2025-09-10T09:54:52,782 File "/usr/lib/python3/dist-packages/pip/_internal/operations/build/metadata_legacy.py", line 70, in generate_metadata 2025-09-10T09:54:52,782 raise MetadataGenerationFailed(package_details=details) from error 2025-09-10T09:54:52,782 pip._internal.exceptions.MetadataGenerationFailed: metadata generation failed 2025-09-10T09:54:52,804 Removed mjml==0.7.0 from https://files.pythonhosted.org/packages/c4/b6/117f3774e8fbdca4bbe05dc1397242f431bf36f57cd14a62f0a8567253b6/mjml-0.7.0.tar.gz from build tracker '/tmp/pip-build-tracker-wyg6ts1y' 2025-09-10T09:54:52,804 Removed build tracker: '/tmp/pip-build-tracker-wyg6ts1y'