2026-04-04T19:18:53,315 Created temporary directory: /tmp/pip-build-tracker-6o2ux6yh 2026-04-04T19:18:53,316 Initialized build tracking at /tmp/pip-build-tracker-6o2ux6yh 2026-04-04T19:18:53,316 Created build tracker: /tmp/pip-build-tracker-6o2ux6yh 2026-04-04T19:18:53,316 Entered build tracker: /tmp/pip-build-tracker-6o2ux6yh 2026-04-04T19:18:53,317 Created temporary directory: /tmp/pip-wheel-jcymaie0 2026-04-04T19:18:53,320 Created temporary directory: /tmp/pip-ephem-wheel-cache-hy1hp8hh 2026-04-04T19:18:53,377 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2026-04-04T19:18:53,380 2 location(s) to search for versions of datagovsg: 2026-04-04T19:18:53,380 * https://pypi.org/simple/datagovsg/ 2026-04-04T19:18:53,380 * https://www.piwheels.org/simple/datagovsg/ 2026-04-04T19:18:53,380 Fetching project page and analyzing links: https://pypi.org/simple/datagovsg/ 2026-04-04T19:18:53,380 Getting page https://pypi.org/simple/datagovsg/ 2026-04-04T19:18:53,381 Found index url https://pypi.org/simple/ 2026-04-04T19:18:53,535 Fetched page https://pypi.org/simple/datagovsg/ as application/vnd.pypi.simple.v1+json 2026-04-04T19:18:53,540 Skipping link: No binaries permitted for datagovsg: https://files.pythonhosted.org/packages/ff/18/b45e243f71b381e649deac7c25521de7f11e3ca990c8f12c62cade6ed739/datagovsg-1.0-py3-none-any.whl (from https://pypi.org/simple/datagovsg/) (requires-python:>=3) 2026-04-04T19:18:53,540 Skipping link: No binaries permitted for datagovsg: https://files.pythonhosted.org/packages/11/a4/bcf155a7eab4ce1a00fd3f3e21d94b3a63ef091465f9324b239e5729e395/datagovsg-1.0.0-py3-none-any.whl (from https://pypi.org/simple/datagovsg/) (requires-python:>=3) 2026-04-04T19:18:53,541 Found link https://files.pythonhosted.org/packages/d4/2d/9ba3acc4d38fc1900a7e796aa440f403863ad145868a78ef4c2c6aafb71b/datagovsg-1.0.tar.gz (from https://pypi.org/simple/datagovsg/) (requires-python:>=3), version: 1.0 2026-04-04T19:18:53,542 Skipping link: No binaries permitted for datagovsg: https://files.pythonhosted.org/packages/39/80/6ae4878dac956b7956b36cea3430f7390778747ebf3060f4aa5cd0c3d043/datagovsg-1.0.1-py3-none-any.whl (from https://pypi.org/simple/datagovsg/) (requires-python:>=3) 2026-04-04T19:18:53,542 Found link https://files.pythonhosted.org/packages/96/74/4d772aa791e4a2e669988f9cb0e806a75720c1ff488d0529d5ea66a0ea08/datagovsg-1.0.1.tar.gz (from https://pypi.org/simple/datagovsg/) (requires-python:>=3), version: 1.0.1 2026-04-04T19:18:53,542 Skipping link: No binaries permitted for datagovsg: https://files.pythonhosted.org/packages/c3/50/93f8101506db34acbc1a076297d21b0993c852c187152f9767577f0bccf0/datagovsg-1.0.2-py3-none-any.whl (from https://pypi.org/simple/datagovsg/) (requires-python:>=3) 2026-04-04T19:18:53,543 Found link https://files.pythonhosted.org/packages/b5/2b/6a86b46e416f6d1580bed35ba932c7718eb6630b8e05079ed3c5bec10968/datagovsg-1.0.2.tar.gz (from https://pypi.org/simple/datagovsg/) (requires-python:>=3), version: 1.0.2 2026-04-04T19:18:53,543 Skipping link: No binaries permitted for datagovsg: https://files.pythonhosted.org/packages/a1/42/aff2b5ddfd34f714da1c8ba93a04d1b902c4aab177657130debce5f931b5/datagovsg-1.0.3-py3-none-any.whl (from https://pypi.org/simple/datagovsg/) (requires-python:>=3) 2026-04-04T19:18:53,543 Found link https://files.pythonhosted.org/packages/ff/ea/1ec45a46717c46d6eb1c9508b905565a6a9ef1b9bcf74303e95dec51f4e8/datagovsg-1.0.3.tar.gz (from https://pypi.org/simple/datagovsg/) (requires-python:>=3), version: 1.0.3 2026-04-04T19:18:53,543 Skipping link: No binaries permitted for datagovsg: https://files.pythonhosted.org/packages/0d/ca/085277fa62fd0c0c92ea3c64f31f0899d8b4dc24a101ff5a1a55602d5a67/datagovsg-2.0.0-py3-none-any.whl (from https://pypi.org/simple/datagovsg/) (requires-python:>=3.13) 2026-04-04T19:18:53,544 Found link https://files.pythonhosted.org/packages/61/4b/2447a94a6b629937e113c6bedfd686171cd5b680595d469c946f63bcd4b5/datagovsg-2.0.0.tar.gz (from https://pypi.org/simple/datagovsg/) (requires-python:>=3.13), version: 2.0.0 2026-04-04T19:18:53,544 Skipping link: No binaries permitted for datagovsg: https://files.pythonhosted.org/packages/3e/b4/f6609e145835d90c90a264b93f96f209b8f627b9d0829d62e5fd62135fa1/datagovsg-2.1.0-py3-none-any.whl (from https://pypi.org/simple/datagovsg/) (requires-python:>=3.13) 2026-04-04T19:18:53,545 Found link https://files.pythonhosted.org/packages/64/04/52d97fb68acf16f41194d1d659b60f07083d24e0a43df096a0490e3a94de/datagovsg-2.1.0.tar.gz (from https://pypi.org/simple/datagovsg/) (requires-python:>=3.13), version: 2.1.0 2026-04-04T19:18:53,545 Fetching project page and analyzing links: https://www.piwheels.org/simple/datagovsg/ 2026-04-04T19:18:53,545 Getting page https://www.piwheels.org/simple/datagovsg/ 2026-04-04T19:18:53,547 Found index url https://www.piwheels.org/simple/ 2026-04-04T19:18:53,639 Fetched page https://www.piwheels.org/simple/datagovsg/ as text/html 2026-04-04T19:18:53,641 Skipping link: No binaries permitted for datagovsg: https://archive1.piwheels.org/simple/datagovsg/datagovsg-1.0.3-py3-none-any.whl#sha256=ae0b8f4dc6b4093cf2e37dedd5821f54178e422bc8f2c1782d2b070733ca7736 (from https://www.piwheels.org/simple/datagovsg/) (requires-python:>=3) 2026-04-04T19:18:53,641 Skipping link: No binaries permitted for datagovsg: https://archive1.piwheels.org/simple/datagovsg/datagovsg-1.0.2-py3-none-any.whl#sha256=01c57626602ea379d73b0242440076f90a3600e71dbacb132fe28212b5ee696e (from https://www.piwheels.org/simple/datagovsg/) (requires-python:>=3) 2026-04-04T19:18:53,641 Skipping link: No binaries permitted for datagovsg: https://archive1.piwheels.org/simple/datagovsg/datagovsg-1.0.1-py3-none-any.whl#sha256=eb71ead390652d5097aa96bc1a053269824042ec6c58a4d7790fef0f9d4987b9 (from https://www.piwheels.org/simple/datagovsg/) (requires-python:>=3) 2026-04-04T19:18:53,641 Skipping link: No binaries permitted for datagovsg: https://archive1.piwheels.org/simple/datagovsg/datagovsg-1.0-py3-none-any.whl#sha256=b4610b404e429f52000777b1a29a6a489981f465d5ed371fd383b48da611e069 (from https://www.piwheels.org/simple/datagovsg/) (requires-python:>=3) 2026-04-04T19:18:53,642 Skipping link: not a file: https://www.piwheels.org/simple/datagovsg/ 2026-04-04T19:18:53,642 Skipping link: not a file: https://pypi.org/simple/datagovsg/ 2026-04-04T19:18:53,666 Given no hashes to check 1 links for project 'datagovsg': discarding no candidates 2026-04-04T19:18:53,667 Collecting datagovsg==2.1.0 2026-04-04T19:18:53,670 Created temporary directory: /tmp/pip-unpack-vsofc9pn 2026-04-04T19:18:53,812 Downloading datagovsg-2.1.0.tar.gz (39 kB) 2026-04-04T19:18:53,922 Added datagovsg==2.1.0 from https://files.pythonhosted.org/packages/64/04/52d97fb68acf16f41194d1d659b60f07083d24e0a43df096a0490e3a94de/datagovsg-2.1.0.tar.gz to build tracker '/tmp/pip-build-tracker-6o2ux6yh' 2026-04-04T19:18:53,926 Created temporary directory: /tmp/pip-build-env-m0zmtazm 2026-04-04T19:18:53,931 Installing build dependencies: started 2026-04-04T19:18:53,932 Running command pip subprocess to install build dependencies 2026-04-04T19:18:55,082 Using pip 25.1.1 from /usr/lib/python3/dist-packages/pip (python 3.13) 2026-04-04T19:18:55,083 Non-user install by explicit request 2026-04-04T19:18:55,299 Created build tracker: /tmp/pip-build-tracker-6o2ux6yh 2026-04-04T19:18:55,300 Entered build tracker: /tmp/pip-build-tracker-6o2ux6yh 2026-04-04T19:18:55,303 Created temporary directory: /tmp/pip-install-5db0wfl0 2026-04-04T19:18:55,307 Created temporary directory: /tmp/pip-ephem-wheel-cache-b_mc1i0i 2026-04-04T19:18:55,362 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2026-04-04T19:18:55,364 2 location(s) to search for versions of datagovsg: 2026-04-04T19:18:55,364 * https://pypi.org/simple/datagovsg/ 2026-04-04T19:18:55,365 * https://www.piwheels.org/simple/datagovsg/ 2026-04-04T19:18:55,365 Fetching project page and analyzing links: https://pypi.org/simple/datagovsg/ 2026-04-04T19:18:55,366 Getting page https://pypi.org/simple/datagovsg/ 2026-04-04T19:18:55,368 Found index url https://pypi.org/simple/ 2026-04-04T19:18:55,370 Looking up "https://pypi.org/simple/datagovsg/" in the cache 2026-04-04T19:18:55,371 Request header has "max_age" as 0, cache bypassed 2026-04-04T19:18:55,373 No cache entry available 2026-04-04T19:18:55,375 Starting new HTTPS connection (1): pypi.org:443 2026-04-04T19:18:55,443 https://pypi.org:443 "GET /simple/datagovsg/ HTTP/1.1" 200 2085 2026-04-04T19:18:55,446 Updating cache with response from "https://pypi.org/simple/datagovsg/" 2026-04-04T19:18:55,447 etag object cached for 1209600 seconds 2026-04-04T19:18:55,447 Caching due to etag 2026-04-04T19:18:55,455 Fetched page https://pypi.org/simple/datagovsg/ as application/vnd.pypi.simple.v1+json 2026-04-04T19:18:55,458 Skipping link: No binaries permitted for datagovsg: https://files.pythonhosted.org/packages/ff/18/b45e243f71b381e649deac7c25521de7f11e3ca990c8f12c62cade6ed739/datagovsg-1.0-py3-none-any.whl (from https://pypi.org/simple/datagovsg/) (requires-python:>=3) 2026-04-04T19:18:55,459 Skipping link: No binaries permitted for datagovsg: https://files.pythonhosted.org/packages/11/a4/bcf155a7eab4ce1a00fd3f3e21d94b3a63ef091465f9324b239e5729e395/datagovsg-1.0.0-py3-none-any.whl (from https://pypi.org/simple/datagovsg/) (requires-python:>=3) 2026-04-04T19:18:55,461 Found link https://files.pythonhosted.org/packages/d4/2d/9ba3acc4d38fc1900a7e796aa440f403863ad145868a78ef4c2c6aafb71b/datagovsg-1.0.tar.gz (from https://pypi.org/simple/datagovsg/) (requires-python:>=3), version: 1.0 2026-04-04T19:18:55,462 Skipping link: No binaries permitted for datagovsg: https://files.pythonhosted.org/packages/39/80/6ae4878dac956b7956b36cea3430f7390778747ebf3060f4aa5cd0c3d043/datagovsg-1.0.1-py3-none-any.whl (from https://pypi.org/simple/datagovsg/) (requires-python:>=3) 2026-04-04T19:18:55,462 Found link https://files.pythonhosted.org/packages/96/74/4d772aa791e4a2e669988f9cb0e806a75720c1ff488d0529d5ea66a0ea08/datagovsg-1.0.1.tar.gz (from https://pypi.org/simple/datagovsg/) (requires-python:>=3), version: 1.0.1 2026-04-04T19:18:55,463 Skipping link: No binaries permitted for datagovsg: https://files.pythonhosted.org/packages/c3/50/93f8101506db34acbc1a076297d21b0993c852c187152f9767577f0bccf0/datagovsg-1.0.2-py3-none-any.whl (from https://pypi.org/simple/datagovsg/) (requires-python:>=3) 2026-04-04T19:18:55,464 Found link https://files.pythonhosted.org/packages/b5/2b/6a86b46e416f6d1580bed35ba932c7718eb6630b8e05079ed3c5bec10968/datagovsg-1.0.2.tar.gz (from https://pypi.org/simple/datagovsg/) (requires-python:>=3), version: 1.0.2 2026-04-04T19:18:55,465 Skipping link: No binaries permitted for datagovsg: https://files.pythonhosted.org/packages/a1/42/aff2b5ddfd34f714da1c8ba93a04d1b902c4aab177657130debce5f931b5/datagovsg-1.0.3-py3-none-any.whl (from https://pypi.org/simple/datagovsg/) (requires-python:>=3) 2026-04-04T19:18:55,466 Found link https://files.pythonhosted.org/packages/ff/ea/1ec45a46717c46d6eb1c9508b905565a6a9ef1b9bcf74303e95dec51f4e8/datagovsg-1.0.3.tar.gz (from https://pypi.org/simple/datagovsg/) (requires-python:>=3), version: 1.0.3 2026-04-04T19:18:55,467 Skipping link: No binaries permitted for datagovsg: https://files.pythonhosted.org/packages/0d/ca/085277fa62fd0c0c92ea3c64f31f0899d8b4dc24a101ff5a1a55602d5a67/datagovsg-2.0.0-py3-none-any.whl (from https://pypi.org/simple/datagovsg/) (requires-python:>=3.13) 2026-04-04T19:18:55,468 Found link https://files.pythonhosted.org/packages/61/4b/2447a94a6b629937e113c6bedfd686171cd5b680595d469c946f63bcd4b5/datagovsg-2.0.0.tar.gz (from https://pypi.org/simple/datagovsg/) (requires-python:>=3.13), version: 2.0.0 2026-04-04T19:18:55,469 Skipping link: No binaries permitted for datagovsg: https://files.pythonhosted.org/packages/3e/b4/f6609e145835d90c90a264b93f96f209b8f627b9d0829d62e5fd62135fa1/datagovsg-2.1.0-py3-none-any.whl (from https://pypi.org/simple/datagovsg/) (requires-python:>=3.13) 2026-04-04T19:18:55,470 Found link https://files.pythonhosted.org/packages/64/04/52d97fb68acf16f41194d1d659b60f07083d24e0a43df096a0490e3a94de/datagovsg-2.1.0.tar.gz (from https://pypi.org/simple/datagovsg/) (requires-python:>=3.13), version: 2.1.0 2026-04-04T19:18:55,471 Fetching project page and analyzing links: https://www.piwheels.org/simple/datagovsg/ 2026-04-04T19:18:55,472 Getting page https://www.piwheels.org/simple/datagovsg/ 2026-04-04T19:18:55,473 Found index url https://www.piwheels.org/simple/ 2026-04-04T19:18:55,475 Looking up "https://www.piwheels.org/simple/datagovsg/" in the cache 2026-04-04T19:18:55,475 Request header has "max_age" as 0, cache bypassed 2026-04-04T19:18:55,476 No cache entry available 2026-04-04T19:18:55,478 Starting new HTTPS connection (1): www.piwheels.org:443 2026-04-04T19:18:55,573 https://www.piwheels.org:443 "GET /simple/datagovsg/ HTTP/1.1" 200 439 2026-04-04T19:18:55,576 Updating cache with response from "https://www.piwheels.org/simple/datagovsg/" 2026-04-04T19:18:55,576 etag object cached for 1209600 seconds 2026-04-04T19:18:55,577 Caching due to etag 2026-04-04T19:18:55,586 Fetched page https://www.piwheels.org/simple/datagovsg/ as text/html 2026-04-04T19:18:55,589 Skipping link: No binaries permitted for datagovsg: https://archive1.piwheels.org/simple/datagovsg/datagovsg-1.0.3-py3-none-any.whl#sha256=ae0b8f4dc6b4093cf2e37dedd5821f54178e422bc8f2c1782d2b070733ca7736 (from https://www.piwheels.org/simple/datagovsg/) (requires-python:>=3) 2026-04-04T19:18:55,590 Skipping link: No binaries permitted for datagovsg: https://archive1.piwheels.org/simple/datagovsg/datagovsg-1.0.2-py3-none-any.whl#sha256=01c57626602ea379d73b0242440076f90a3600e71dbacb132fe28212b5ee696e (from https://www.piwheels.org/simple/datagovsg/) (requires-python:>=3) 2026-04-04T19:18:55,591 Skipping link: No binaries permitted for datagovsg: https://archive1.piwheels.org/simple/datagovsg/datagovsg-1.0.1-py3-none-any.whl#sha256=eb71ead390652d5097aa96bc1a053269824042ec6c58a4d7790fef0f9d4987b9 (from https://www.piwheels.org/simple/datagovsg/) (requires-python:>=3) 2026-04-04T19:18:55,592 Skipping link: No binaries permitted for datagovsg: https://archive1.piwheels.org/simple/datagovsg/datagovsg-1.0-py3-none-any.whl#sha256=b4610b404e429f52000777b1a29a6a489981f465d5ed371fd383b48da611e069 (from https://www.piwheels.org/simple/datagovsg/) (requires-python:>=3) 2026-04-04T19:18:55,593 Skipping link: not a file: https://www.piwheels.org/simple/datagovsg/ 2026-04-04T19:18:55,594 Skipping link: not a file: https://pypi.org/simple/datagovsg/ 2026-04-04T19:18:55,622 Given no hashes to check 6 links for project 'datagovsg': discarding no candidates 2026-04-04T19:18:55,624 Collecting datagovsg 2026-04-04T19:18:55,626 Created temporary directory: /tmp/pip-unpack-mzqhtvv6 2026-04-04T19:18:55,628 Looking up "https://files.pythonhosted.org/packages/64/04/52d97fb68acf16f41194d1d659b60f07083d24e0a43df096a0490e3a94de/datagovsg-2.1.0.tar.gz" in the cache 2026-04-04T19:18:55,629 No cache entry available 2026-04-04T19:18:55,630 No cache entry available 2026-04-04T19:18:55,631 Starting new HTTPS connection (1): files.pythonhosted.org:443 2026-04-04T19:18:55,690 https://files.pythonhosted.org:443 "GET /packages/64/04/52d97fb68acf16f41194d1d659b60f07083d24e0a43df096a0490e3a94de/datagovsg-2.1.0.tar.gz HTTP/1.1" 200 39169 2026-04-04T19:18:55,693 Downloading datagovsg-2.1.0.tar.gz (39 kB) 2026-04-04T19:18:55,704 Ignoring unknown cache-control directive: immutable 2026-04-04T19:18:55,705 Updating cache with response from "https://files.pythonhosted.org/packages/64/04/52d97fb68acf16f41194d1d659b60f07083d24e0a43df096a0490e3a94de/datagovsg-2.1.0.tar.gz" 2026-04-04T19:18:55,706 etag object cached for 1209600 seconds 2026-04-04T19:18:55,706 Caching due to etag 2026-04-04T19:18:55,846 ERROR: Exception: 2026-04-04T19:18:55,846 Traceback (most recent call last): 2026-04-04T19:18:55,846 File "/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py", line 105, in _run_wrapper 2026-04-04T19:18:55,846 status = _inner_run() 2026-04-04T19:18:55,846 File "/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py", line 96, in _inner_run 2026-04-04T19:18:55,847 return self.run(options, args) 2026-04-04T19:18:55,847 ~~~~~~~~^^^^^^^^^^^^^^^ 2026-04-04T19:18:55,847 File "/usr/lib/python3/dist-packages/pip/_internal/cli/req_command.py", line 68, in wrapper 2026-04-04T19:18:55,847 return func(self, options, args) 2026-04-04T19:18:55,847 File "/usr/lib/python3/dist-packages/pip/_internal/commands/install.py", line 387, in run 2026-04-04T19:18:55,847 requirement_set = resolver.resolve( 2026-04-04T19:18:55,847 reqs, check_supported_wheels=not options.target_dir 2026-04-04T19:18:55,847 ) 2026-04-04T19:18:55,847 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/resolver.py", line 96, in resolve 2026-04-04T19:18:55,847 result = self._result = resolver.resolve( 2026-04-04T19:18:55,848 ~~~~~~~~~~~~~~~~^ 2026-04-04T19:18:55,848 collected.requirements, max_rounds=limit_how_complex_resolution_can_be 2026-04-04T19:18:55,848 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2026-04-04T19:18:55,848 ) 2026-04-04T19:18:55,848 ^ 2026-04-04T19:18:55,848 File "/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/resolvers/resolution.py", line 515, in resolve 2026-04-04T19:18:55,848 state = resolution.resolve(requirements, max_rounds=max_rounds) 2026-04-04T19:18:55,848 File "/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/resolvers/resolution.py", line 388, in resolve 2026-04-04T19:18:55,848 self._add_to_criteria(self.state.criteria, r, parent=None) 2026-04-04T19:18:55,848 ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2026-04-04T19:18:55,848 File "/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/resolvers/resolution.py", line 141, in _add_to_criteria 2026-04-04T19:18:55,849 if not criterion.candidates: 2026-04-04T19:18:55,849 ^^^^^^^^^^^^^^^^^^^^ 2026-04-04T19:18:55,849 File "/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/structs.py", line 194, in __bool__ 2026-04-04T19:18:55,849 return bool(self._sequence) 2026-04-04T19:18:55,849 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 163, in __bool__ 2026-04-04T19:18:55,849 self._bool = any(self) 2026-04-04T19:18:55,849 ~~~^^^^^^ 2026-04-04T19:18:55,849 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 147, in 2026-04-04T19:18:55,850 return (c for c in iterator if id(c) not in self._incompatible_ids) 2026-04-04T19:18:55,850 ^^^^^^^^ 2026-04-04T19:18:55,850 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 37, in _iter_built 2026-04-04T19:18:55,850 candidate = func() 2026-04-04T19:18:55,850 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/factory.py", line 187, in _make_candidate_from_link 2026-04-04T19:18:55,850 base: Optional[BaseCandidate] = self._make_base_candidate_from_link( 2026-04-04T19:18:55,850 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 2026-04-04T19:18:55,850 link, template, name, version 2026-04-04T19:18:55,850 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2026-04-04T19:18:55,850 ) 2026-04-04T19:18:55,851 ^ 2026-04-04T19:18:55,851 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/factory.py", line 233, in _make_base_candidate_from_link 2026-04-04T19:18:55,851 self._link_candidate_cache[link] = LinkCandidate( 2026-04-04T19:18:55,851 ~~~~~~~~~~~~~^ 2026-04-04T19:18:55,851 link, 2026-04-04T19:18:55,851 ^^^^^ 2026-04-04T19:18:55,851 ...<3 lines>... 2026-04-04T19:18:55,851 version=version, 2026-04-04T19:18:55,851 ^^^^^^^^^^^^^^^^ 2026-04-04T19:18:55,851 ) 2026-04-04T19:18:55,852 ^ 2026-04-04T19:18:55,852 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 306, in __init__ 2026-04-04T19:18:55,852 super().__init__( 2026-04-04T19:18:55,852 ~~~~~~~~~~~~~~~~^ 2026-04-04T19:18:55,852 link=link, 2026-04-04T19:18:55,852 ^^^^^^^^^^ 2026-04-04T19:18:55,852 ...<4 lines>... 2026-04-04T19:18:55,852 version=version, 2026-04-04T19:18:55,853 ^^^^^^^^^^^^^^^^ 2026-04-04T19:18:55,853 ) 2026-04-04T19:18:55,853 ^ 2026-04-04T19:18:55,853 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 159, in __init__ 2026-04-04T19:18:55,853 self.dist = self._prepare() 2026-04-04T19:18:55,853 ~~~~~~~~~~~~~^^ 2026-04-04T19:18:55,853 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 236, in _prepare 2026-04-04T19:18:55,853 dist = self._prepare_distribution() 2026-04-04T19:18:55,854 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 317, in _prepare_distribution 2026-04-04T19:18:55,854 return preparer.prepare_linked_requirement(self._ireq, parallel_builds=True) 2026-04-04T19:18:55,854 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2026-04-04T19:18:55,854 File "/usr/lib/python3/dist-packages/pip/_internal/operations/prepare.py", line 532, in prepare_linked_requirement 2026-04-04T19:18:55,854 return self._prepare_linked_requirement(req, parallel_builds) 2026-04-04T19:18:55,854 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ 2026-04-04T19:18:55,854 File "/usr/lib/python3/dist-packages/pip/_internal/operations/prepare.py", line 647, in _prepare_linked_requirement 2026-04-04T19:18:55,854 dist = _get_prepared_distribution( 2026-04-04T19:18:55,854 req, 2026-04-04T19:18:55,855 ...<3 lines>... 2026-04-04T19:18:55,855 self.check_build_deps, 2026-04-04T19:18:55,855 ) 2026-04-04T19:18:55,855 File "/usr/lib/python3/dist-packages/pip/_internal/operations/prepare.py", line 70, in _get_prepared_distribution 2026-04-04T19:18:55,855 with build_tracker.track(req, tracker_id): 2026-04-04T19:18:55,855 ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^ 2026-04-04T19:18:55,855 File "/usr/lib/python3.13/contextlib.py", line 141, in __enter__ 2026-04-04T19:18:55,855 return next(self.gen) 2026-04-04T19:18:55,856 File "/usr/lib/python3/dist-packages/pip/_internal/operations/build/build_tracker.py", line 136, in track 2026-04-04T19:18:55,856 self.add(req, tracker_id) 2026-04-04T19:18:55,856 ~~~~~~~~^^^^^^^^^^^^^^^^^ 2026-04-04T19:18:55,856 File "/usr/lib/python3/dist-packages/pip/_internal/operations/build/build_tracker.py", line 102, in add 2026-04-04T19:18:55,856 raise LookupError(message) 2026-04-04T19:18:55,856 LookupError: https://files.pythonhosted.org/packages/64/04/52d97fb68acf16f41194d1d659b60f07083d24e0a43df096a0490e3a94de/datagovsg-2.1.0.tar.gz (from https://pypi.org/simple/datagovsg/) (requires-python:>=3.13) is already being built: datagovsg==2.1.0 from https://files.pythonhosted.org/packages/64/04/52d97fb68acf16f41194d1d659b60f07083d24e0a43df096a0490e3a94de/datagovsg-2.1.0.tar.gz 2026-04-04T19:18:55,856 Removed build tracker: '/tmp/pip-build-tracker-6o2ux6yh' 2026-04-04T19:18:56,050 ERROR: pip subprocess to install build dependencies exited with 2 2026-04-04T19:18:56,062 [bold magenta]full command[/]: [blue]/usr/bin/python3 /usr/lib/python3/dist-packages/pip/__pip-runner__.py install --ignore-installed --no-user --prefix /tmp/pip-build-env-m0zmtazm/overlay --no-warn-script-location --disable-pip-version-check --no-compile --target '' -vv --no-binary datagovsg --only-binary :none: -i https://pypi.org/simple --extra-index-url https://www.piwheels.org/simple --prefer-binary -- datagovsg setuptools[/] 2026-04-04T19:18:56,062 [bold magenta]cwd[/]: \[inherit] 2026-04-04T19:18:56,062 Installing build dependencies: finished with status 'error' 2026-04-04T19:18:56,063 ERROR: pip subprocess to install build dependencies exited with 2 2026-04-04T19:18:56,069 Exception information: 2026-04-04T19:18:56,069 Traceback (most recent call last): 2026-04-04T19:18:56,069 File "/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py", line 105, in _run_wrapper 2026-04-04T19:18:56,069 status = _inner_run() 2026-04-04T19:18:56,069 File "/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py", line 96, in _inner_run 2026-04-04T19:18:56,069 return self.run(options, args) 2026-04-04T19:18:56,069 ~~~~~~~~^^^^^^^^^^^^^^^ 2026-04-04T19:18:56,069 File "/usr/lib/python3/dist-packages/pip/_internal/cli/req_command.py", line 68, in wrapper 2026-04-04T19:18:56,069 return func(self, options, args) 2026-04-04T19:18:56,069 File "/usr/lib/python3/dist-packages/pip/_internal/commands/wheel.py", line 147, in run 2026-04-04T19:18:56,069 requirement_set = resolver.resolve(reqs, check_supported_wheels=True) 2026-04-04T19:18:56,069 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/resolver.py", line 96, in resolve 2026-04-04T19:18:56,069 result = self._result = resolver.resolve( 2026-04-04T19:18:56,069 ~~~~~~~~~~~~~~~~^ 2026-04-04T19:18:56,069 collected.requirements, max_rounds=limit_how_complex_resolution_can_be 2026-04-04T19:18:56,069 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2026-04-04T19:18:56,069 ) 2026-04-04T19:18:56,069 ^ 2026-04-04T19:18:56,069 File "/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/resolvers/resolution.py", line 515, in resolve 2026-04-04T19:18:56,069 state = resolution.resolve(requirements, max_rounds=max_rounds) 2026-04-04T19:18:56,069 File "/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/resolvers/resolution.py", line 388, in resolve 2026-04-04T19:18:56,069 self._add_to_criteria(self.state.criteria, r, parent=None) 2026-04-04T19:18:56,069 ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2026-04-04T19:18:56,069 File "/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/resolvers/resolution.py", line 141, in _add_to_criteria 2026-04-04T19:18:56,069 if not criterion.candidates: 2026-04-04T19:18:56,069 ^^^^^^^^^^^^^^^^^^^^ 2026-04-04T19:18:56,069 File "/usr/lib/python3/dist-packages/pip/_vendor/resolvelib/structs.py", line 194, in __bool__ 2026-04-04T19:18:56,069 return bool(self._sequence) 2026-04-04T19:18:56,069 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 163, in __bool__ 2026-04-04T19:18:56,069 self._bool = any(self) 2026-04-04T19:18:56,069 ~~~^^^^^^ 2026-04-04T19:18:56,069 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 147, in 2026-04-04T19:18:56,069 return (c for c in iterator if id(c) not in self._incompatible_ids) 2026-04-04T19:18:56,069 ^^^^^^^^ 2026-04-04T19:18:56,069 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 37, in _iter_built 2026-04-04T19:18:56,069 candidate = func() 2026-04-04T19:18:56,069 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/factory.py", line 187, in _make_candidate_from_link 2026-04-04T19:18:56,069 base: Optional[BaseCandidate] = self._make_base_candidate_from_link( 2026-04-04T19:18:56,069 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 2026-04-04T19:18:56,069 link, template, name, version 2026-04-04T19:18:56,069 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2026-04-04T19:18:56,069 ) 2026-04-04T19:18:56,069 ^ 2026-04-04T19:18:56,069 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/factory.py", line 233, in _make_base_candidate_from_link 2026-04-04T19:18:56,069 self._link_candidate_cache[link] = LinkCandidate( 2026-04-04T19:18:56,069 ~~~~~~~~~~~~~^ 2026-04-04T19:18:56,069 link, 2026-04-04T19:18:56,069 ^^^^^ 2026-04-04T19:18:56,069 ...<3 lines>... 2026-04-04T19:18:56,069 version=version, 2026-04-04T19:18:56,069 ^^^^^^^^^^^^^^^^ 2026-04-04T19:18:56,069 ) 2026-04-04T19:18:56,069 ^ 2026-04-04T19:18:56,069 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 306, in __init__ 2026-04-04T19:18:56,069 super().__init__( 2026-04-04T19:18:56,069 ~~~~~~~~~~~~~~~~^ 2026-04-04T19:18:56,069 link=link, 2026-04-04T19:18:56,069 ^^^^^^^^^^ 2026-04-04T19:18:56,069 ...<4 lines>... 2026-04-04T19:18:56,069 version=version, 2026-04-04T19:18:56,069 ^^^^^^^^^^^^^^^^ 2026-04-04T19:18:56,069 ) 2026-04-04T19:18:56,069 ^ 2026-04-04T19:18:56,069 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 159, in __init__ 2026-04-04T19:18:56,069 self.dist = self._prepare() 2026-04-04T19:18:56,069 ~~~~~~~~~~~~~^^ 2026-04-04T19:18:56,069 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 236, in _prepare 2026-04-04T19:18:56,069 dist = self._prepare_distribution() 2026-04-04T19:18:56,069 File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 317, in _prepare_distribution 2026-04-04T19:18:56,069 return preparer.prepare_linked_requirement(self._ireq, parallel_builds=True) 2026-04-04T19:18:56,069 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2026-04-04T19:18:56,069 File "/usr/lib/python3/dist-packages/pip/_internal/operations/prepare.py", line 532, in prepare_linked_requirement 2026-04-04T19:18:56,069 return self._prepare_linked_requirement(req, parallel_builds) 2026-04-04T19:18:56,069 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ 2026-04-04T19:18:56,069 File "/usr/lib/python3/dist-packages/pip/_internal/operations/prepare.py", line 647, in _prepare_linked_requirement 2026-04-04T19:18:56,069 dist = _get_prepared_distribution( 2026-04-04T19:18:56,069 req, 2026-04-04T19:18:56,069 ...<3 lines>... 2026-04-04T19:18:56,069 self.check_build_deps, 2026-04-04T19:18:56,069 ) 2026-04-04T19:18:56,069 File "/usr/lib/python3/dist-packages/pip/_internal/operations/prepare.py", line 71, in _get_prepared_distribution 2026-04-04T19:18:56,069 abstract_dist.prepare_distribution_metadata( 2026-04-04T19:18:56,069 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 2026-04-04T19:18:56,069 finder, build_isolation, check_build_deps 2026-04-04T19:18:56,069 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2026-04-04T19:18:56,069 ) 2026-04-04T19:18:56,069 ^ 2026-04-04T19:18:56,069 File "/usr/lib/python3/dist-packages/pip/_internal/distributions/sdist.py", line 46, in prepare_distribution_metadata 2026-04-04T19:18:56,069 self._prepare_build_backend(finder) 2026-04-04T19:18:56,069 ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ 2026-04-04T19:18:56,069 File "/usr/lib/python3/dist-packages/pip/_internal/distributions/sdist.py", line 78, in _prepare_build_backend 2026-04-04T19:18:56,069 self.req.build_env.install_requirements( 2026-04-04T19:18:56,069 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 2026-04-04T19:18:56,069 finder, pyproject_requires, "overlay", kind="build dependencies" 2026-04-04T19:18:56,069 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2026-04-04T19:18:56,069 ) 2026-04-04T19:18:56,069 ^ 2026-04-04T19:18:56,069 File "/usr/lib/python3/dist-packages/pip/_internal/build_env.py", line 216, in install_requirements 2026-04-04T19:18:56,069 self._install_requirements( 2026-04-04T19:18:56,069 ~~~~~~~~~~~~~~~~~~~~~~~~~~^ 2026-04-04T19:18:56,069 get_runnable_pip(), 2026-04-04T19:18:56,069 ^^^^^^^^^^^^^^^^^^^ 2026-04-04T19:18:56,069 ...<3 lines>... 2026-04-04T19:18:56,069 kind=kind, 2026-04-04T19:18:56,069 ^^^^^^^^^^ 2026-04-04T19:18:56,069 ) 2026-04-04T19:18:56,069 ^ 2026-04-04T19:18:56,069 File "/usr/lib/python3/dist-packages/pip/_internal/build_env.py", line 290, in _install_requirements 2026-04-04T19:18:56,069 call_subprocess( 2026-04-04T19:18:56,069 ~~~~~~~~~~~~~~~^ 2026-04-04T19:18:56,069 args, 2026-04-04T19:18:56,069 ^^^^^ 2026-04-04T19:18:56,069 command_desc=f"pip subprocess to install {kind}", 2026-04-04T19:18:56,069 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2026-04-04T19:18:56,069 spinner=spinner, 2026-04-04T19:18:56,069 ^^^^^^^^^^^^^^^^ 2026-04-04T19:18:56,069 ) 2026-04-04T19:18:56,069 ^ 2026-04-04T19:18:56,069 File "/usr/lib/python3/dist-packages/pip/_internal/utils/subprocess.py", line 209, in call_subprocess 2026-04-04T19:18:56,069 raise error 2026-04-04T19:18:56,069 pip._internal.exceptions.InstallationSubprocessError: pip subprocess to install build dependencies exited with 2 2026-04-04T19:18:56,093 Removed datagovsg==2.1.0 from https://files.pythonhosted.org/packages/64/04/52d97fb68acf16f41194d1d659b60f07083d24e0a43df096a0490e3a94de/datagovsg-2.1.0.tar.gz from build tracker '/tmp/pip-build-tracker-6o2ux6yh' 2026-04-04T19:18:56,094 Removed build tracker: '/tmp/pip-build-tracker-6o2ux6yh'