2023-10-11T14:42:37,072 Created temporary directory: /tmp/pip-build-tracker-4n7ny95p 2023-10-11T14:42:37,073 Initialized build tracking at /tmp/pip-build-tracker-4n7ny95p 2023-10-11T14:42:37,073 Created build tracker: /tmp/pip-build-tracker-4n7ny95p 2023-10-11T14:42:37,074 Entered build tracker: /tmp/pip-build-tracker-4n7ny95p 2023-10-11T14:42:37,075 Created temporary directory: /tmp/pip-wheel-jskflxai 2023-10-11T14:42:37,078 Created temporary directory: /tmp/pip-ephem-wheel-cache-8s5_pvnw 2023-10-11T14:42:37,100 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2023-10-11T14:42:37,104 2 location(s) to search for versions of palm: 2023-10-11T14:42:37,104 * https://pypi.org/simple/palm/ 2023-10-11T14:42:37,104 * https://www.piwheels.org/simple/palm/ 2023-10-11T14:42:37,104 Fetching project page and analyzing links: https://pypi.org/simple/palm/ 2023-10-11T14:42:37,105 Getting page https://pypi.org/simple/palm/ 2023-10-11T14:42:37,107 Found index url https://pypi.org/simple/ 2023-10-11T14:42:37,326 Fetched page https://pypi.org/simple/palm/ as application/vnd.pypi.simple.v1+json 2023-10-11T14:42:37,331 Skipping link: No binaries permitted for palm: https://files.pythonhosted.org/packages/9e/c6/26740c374f28926a59f8c9856b44f826b1d62154620fff0f15ca0437d59b/palm-2.0.2-py3-none-any.whl (from https://pypi.org/simple/palm/) 2023-10-11T14:42:37,332 Found link https://files.pythonhosted.org/packages/5f/e2/f273f9987bc65aade0c6da00d877048ba288d1e55cc6592200b7231bc280/palm-2.0.2.tar.gz (from https://pypi.org/simple/palm/), version: 2.0.2 2023-10-11T14:42:37,333 Skipping link: No binaries permitted for palm: https://files.pythonhosted.org/packages/26/e3/ada415c6f26fd3dcb0763db261d5e04cfc72e7ad3ae47d6038fd446c5a33/palm-2.1.0-py3-none-any.whl (from https://pypi.org/simple/palm/) 2023-10-11T14:42:37,333 Found link https://files.pythonhosted.org/packages/82/be/3c3ce72ce9818ca48a0cce428e533a366962f0fc9a1b27ed73e51c100f24/palm-2.1.0.tar.gz (from https://pypi.org/simple/palm/), version: 2.1.0 2023-10-11T14:42:37,334 Skipping link: No binaries permitted for palm: https://files.pythonhosted.org/packages/12/b1/9a742b15c39a59c9aed9f8996a0f09a3ea373695ac5f5f801cdbb5a6a872/palm-2.1.1-py3-none-any.whl (from https://pypi.org/simple/palm/) 2023-10-11T14:42:37,335 Found link https://files.pythonhosted.org/packages/40/57/82fb4786e5ae9109be098511c588efd7eafb880dacb75942e238a1894f0c/palm-2.1.1.tar.gz (from https://pypi.org/simple/palm/), version: 2.1.1 2023-10-11T14:42:37,335 Skipping link: No binaries permitted for palm: https://files.pythonhosted.org/packages/5b/1a/baf2e01d9c9e3182e261889e118402b2d3adcd74855c2f845639ce2c0e52/palm-2.2.0-py3-none-any.whl (from https://pypi.org/simple/palm/) 2023-10-11T14:42:37,336 Found link https://files.pythonhosted.org/packages/c8/07/298689fac48d12ac840088a196ade5d6ce8afd265c2d14867cd31ed23f2f/palm-2.2.0.tar.gz (from https://pypi.org/simple/palm/), version: 2.2.0 2023-10-11T14:42:37,337 Skipping link: No binaries permitted for palm: https://files.pythonhosted.org/packages/e2/5b/f49b99c8ddeb2a038a6b4788fb217c619f4fe1f95aa6ab594220ee4f9b7e/palm-2.3.0-py3-none-any.whl (from https://pypi.org/simple/palm/) 2023-10-11T14:42:37,338 Found link https://files.pythonhosted.org/packages/94/79/d99fec13e871f6cb86da820134b07f843667a8b92f4a34d65a06baf5b0c3/palm-2.3.0.tar.gz (from https://pypi.org/simple/palm/), version: 2.3.0 2023-10-11T14:42:37,338 Skipping link: No binaries permitted for palm: https://files.pythonhosted.org/packages/2d/3d/f26258ad6f7e86a541e7cadfc1ade0e6de17c277088183c641407c133eb6/palm-2.4.0-py3-none-any.whl (from https://pypi.org/simple/palm/) 2023-10-11T14:42:37,339 Found link https://files.pythonhosted.org/packages/ec/2e/79fe5ebb555862b5dc9297671be1e8e14e4f4bf8fe9153a14f389a3e1b9b/palm-2.4.0.tar.gz (from https://pypi.org/simple/palm/), version: 2.4.0 2023-10-11T14:42:37,340 Skipping link: No binaries permitted for palm: https://files.pythonhosted.org/packages/75/31/ef6b3877f0aea473d54b93aad97948a914186666d1728454478823e72561/palm-2.4.1-py3-none-any.whl (from https://pypi.org/simple/palm/) 2023-10-11T14:42:37,340 Found link https://files.pythonhosted.org/packages/b3/e9/331df226c4723369d346721a122b5e99cd49c2e367953d6705b4c5990280/palm-2.4.1.tar.gz (from https://pypi.org/simple/palm/), version: 2.4.1 2023-10-11T14:42:37,341 Skipping link: No binaries permitted for palm: https://files.pythonhosted.org/packages/4f/33/414da76866a7b5f6c93dceb0989d1182234839fa2d285e2189790e8e4ed3/palm-2.5.0-py3-none-any.whl (from https://pypi.org/simple/palm/) 2023-10-11T14:42:37,342 Found link https://files.pythonhosted.org/packages/34/06/5d9760fa445cd319eb041227502fa8a865503f0cc5c180b5bd7d42b8e258/palm-2.5.0.tar.gz (from https://pypi.org/simple/palm/), version: 2.5.0 2023-10-11T14:42:37,342 Skipping link: No binaries permitted for palm: https://files.pythonhosted.org/packages/90/78/add6f86c8aef0ea2e3c4925292378f61cccc52e37729c108df7e4ad6b90a/palm-2.5.1-py3-none-any.whl (from https://pypi.org/simple/palm/) 2023-10-11T14:42:37,343 Found link https://files.pythonhosted.org/packages/2e/dd/2dc031f2e4673c99ee9853d97a520c7b1d860f41c9f234da8a4e2db5a392/palm-2.5.1.tar.gz (from https://pypi.org/simple/palm/), version: 2.5.1 2023-10-11T14:42:37,343 Skipping link: No binaries permitted for palm: https://files.pythonhosted.org/packages/1a/1c/91371bbd40aaaba8d20d5ccbe09e6b7efcb562136badff30e1a80ac3b569/palm-2.5.2-py3-none-any.whl (from https://pypi.org/simple/palm/) 2023-10-11T14:42:37,344 Found link https://files.pythonhosted.org/packages/75/32/6b9a8242b2a588b832c3b9ca256964541e339897ca6526fda7fa2bb3ffff/palm-2.5.2.tar.gz (from https://pypi.org/simple/palm/), version: 2.5.2 2023-10-11T14:42:37,344 Skipping link: No binaries permitted for palm: https://files.pythonhosted.org/packages/67/43/53e1a6175521253eca4a94e47bcac41afd7208d4a431d9bfc20bbbb65a58/palm-2.5.3-py3-none-any.whl (from https://pypi.org/simple/palm/) 2023-10-11T14:42:37,345 Found link https://files.pythonhosted.org/packages/78/e8/7da7741286a3f68a094b84cf87b4bd2c8e02d532fe49ceba0af287a32d33/palm-2.5.3.tar.gz (from https://pypi.org/simple/palm/), version: 2.5.3 2023-10-11T14:42:37,346 Skipping link: No binaries permitted for palm: https://files.pythonhosted.org/packages/3c/44/e06a792aa5857e3c422567d598147978f6f216386122e8bbc28f7df2f5a0/palm-2.6.0-py3-none-any.whl (from https://pypi.org/simple/palm/) 2023-10-11T14:42:37,346 Found link https://files.pythonhosted.org/packages/72/c0/2b1b62abf467bc47bcecfbfe99061a6c8786087a4cddd53ff4a112d7b903/palm-2.6.0.tar.gz (from https://pypi.org/simple/palm/), version: 2.6.0 2023-10-11T14:42:37,347 Fetching project page and analyzing links: https://www.piwheels.org/simple/palm/ 2023-10-11T14:42:37,348 Getting page https://www.piwheels.org/simple/palm/ 2023-10-11T14:42:37,349 Found index url https://www.piwheels.org/simple/ 2023-10-11T14:42:37,509 Fetched page https://www.piwheels.org/simple/palm/ as text/html 2023-10-11T14:42:37,511 Skipping link: No binaries permitted for palm: https://www.piwheels.org/simple/palm/palm-2.1.1-py3-none-any.whl#sha256=c3a9113adaa3b86d368e5a8528f8c0e6c4e508b8f7e475708a7a76b1aab98ec8 (from https://www.piwheels.org/simple/palm/) 2023-10-11T14:42:37,512 Skipping link: No binaries permitted for palm: https://www.piwheels.org/simple/palm/palm-2.1.0-py3-none-any.whl#sha256=b13bee9ac1023900ac6e3406a7339f5b0a0177d66b4daaeecec59a221201a3f8 (from https://www.piwheels.org/simple/palm/) 2023-10-11T14:42:37,512 Skipping link: No binaries permitted for palm: https://www.piwheels.org/simple/palm/palm-2.0.2-py3-none-any.whl#sha256=c6a6b87d7a04e85428206935f43bde1453e76fca42c5ea0ae8d957b4578a0673 (from https://www.piwheels.org/simple/palm/) 2023-10-11T14:42:37,513 Skipping link: not a file: https://www.piwheels.org/simple/palm/ 2023-10-11T14:42:37,514 Skipping link: not a file: https://pypi.org/simple/palm/ 2023-10-11T14:42:37,533 Given no hashes to check 1 links for project 'palm': discarding no candidates 2023-10-11T14:42:37,550 Collecting palm==2.6.0 2023-10-11T14:42:37,553 Created temporary directory: /tmp/pip-unpack-k2ucz533 2023-10-11T14:42:37,766 Downloading palm-2.6.0.tar.gz (24 kB) 2023-10-11T14:42:37,894 Added palm==2.6.0 from https://files.pythonhosted.org/packages/72/c0/2b1b62abf467bc47bcecfbfe99061a6c8786087a4cddd53ff4a112d7b903/palm-2.6.0.tar.gz to build tracker '/tmp/pip-build-tracker-4n7ny95p' 2023-10-11T14:42:37,896 Running setup.py (path:/tmp/pip-wheel-jskflxai/palm_0ea38364ea064388a94f8fc9888bbc8b/setup.py) egg_info for package palm 2023-10-11T14:42:37,897 Created temporary directory: /tmp/pip-pip-egg-info-24du2cn6 2023-10-11T14:42:37,897 Preparing metadata (setup.py): started 2023-10-11T14:42:37,898 Running command python setup.py egg_info 2023-10-11T14:42:38,307 Traceback (most recent call last): 2023-10-11T14:42:38,307 File "", line 2, in 2023-10-11T14:42:38,308 File "", line 34, in 2023-10-11T14:42:38,308 File "/tmp/pip-wheel-jskflxai/palm_0ea38364ea064388a94f8fc9888bbc8b/setup.py", line 39, in 2023-10-11T14:42:38,309 install_requires=Path("requirements.txt").read_text().splitlines(), 2023-10-11T14:42:38,309 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2023-10-11T14:42:38,309 File "/usr/lib/python3.11/pathlib.py", line 1059, in read_text 2023-10-11T14:42:38,310 with self.open(mode='r', encoding=encoding, errors=errors) as f: 2023-10-11T14:42:38,311 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2023-10-11T14:42:38,312 File "/usr/lib/python3.11/pathlib.py", line 1045, in open 2023-10-11T14:42:38,312 return io.open(self, mode, buffering, encoding, errors, newline) 2023-10-11T14:42:38,313 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2023-10-11T14:42:38,314 FileNotFoundError: [Errno 2] No such file or directory: 'requirements.txt' 2023-10-11T14:42:38,379 ERROR: [present-rich] python setup.py egg_info exited with 1 2023-10-11T14:42:38,392 [bold magenta]full command[/]: [blue]/usr/bin/python3 -c ' 2023-10-11T14:42:38,392 exec(compile('"'"''"'"''"'"' 2023-10-11T14:42:38,392 # This is -- a caller that pip uses to run setup.py 2023-10-11T14:42:38,392 # 2023-10-11T14:42:38,392 # - It imports setuptools before invoking setup.py, to enable projects that directly 2023-10-11T14:42:38,392 # import from `distutils.core` to work with newer packaging standards. 2023-10-11T14:42:38,392 # - It provides a clear error message when setuptools is not installed. 2023-10-11T14:42:38,392 # - It sets `sys.argv[0]` to the underlying `setup.py`, when invoking `setup.py` so 2023-10-11T14:42:38,392 # setuptools doesn'"'"'t think the script is `-c`. This avoids the following warning: 2023-10-11T14:42:38,392 # manifest_maker: standard file '"'"'-c'"'"' not found". 2023-10-11T14:42:38,392 # - It generates a shim setup.py, for handling setup.cfg-only projects. 2023-10-11T14:42:38,392 import os, sys, tokenize 2023-10-11T14:42:38,392 2023-10-11T14:42:38,392 try: 2023-10-11T14:42:38,392 import setuptools 2023-10-11T14:42:38,392 except ImportError as error: 2023-10-11T14:42:38,392 print( 2023-10-11T14:42:38,392 "ERROR: Can not execute `setup.py` since setuptools is not available in " 2023-10-11T14:42:38,392 "the build environment.", 2023-10-11T14:42:38,392 file=sys.stderr, 2023-10-11T14:42:38,392 ) 2023-10-11T14:42:38,392 sys.exit(1) 2023-10-11T14:42:38,392 2023-10-11T14:42:38,392 __file__ = %r 2023-10-11T14:42:38,392 sys.argv[0] = __file__ 2023-10-11T14:42:38,392 2023-10-11T14:42:38,392 if os.path.exists(__file__): 2023-10-11T14:42:38,392 filename = __file__ 2023-10-11T14:42:38,392 with tokenize.open(__file__) as f: 2023-10-11T14:42:38,392 setup_py_code = f.read() 2023-10-11T14:42:38,392 else: 2023-10-11T14:42:38,392 filename = "" 2023-10-11T14:42:38,392 setup_py_code = "from setuptools import setup; setup()" 2023-10-11T14:42:38,392 2023-10-11T14:42:38,392 exec(compile(setup_py_code, filename, "exec")) 2023-10-11T14:42:38,392 '"'"''"'"''"'"' % ('"'"'/tmp/pip-wheel-jskflxai/palm_0ea38364ea064388a94f8fc9888bbc8b/setup.py'"'"',), "", "exec"))' egg_info --egg-base /tmp/pip-pip-egg-info-24du2cn6[/] 2023-10-11T14:42:38,393 [bold magenta]cwd[/]: /tmp/pip-wheel-jskflxai/palm_0ea38364ea064388a94f8fc9888bbc8b/ 2023-10-11T14:42:38,394 Preparing metadata (setup.py): finished with status 'error' 2023-10-11T14:42:38,395 ERROR: [present-rich] metadata generation failed 2023-10-11T14:42:38,400 Exception information: 2023-10-11T14:42:38,400 Traceback (most recent call last): 2023-10-11T14:42:38,400 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/operations/build/metadata_legacy.py", line 64, in generate_metadata 2023-10-11T14:42:38,400 call_subprocess( 2023-10-11T14:42:38,400 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/utils/subprocess.py", line 224, in call_subprocess 2023-10-11T14:42:38,400 raise error 2023-10-11T14:42:38,400 pip._internal.exceptions.InstallationSubprocessError: python setup.py egg_info exited with 1 2023-10-11T14:42:38,400 2023-10-11T14:42:38,400 The above exception was the direct cause of the following exception: 2023-10-11T14:42:38,400 2023-10-11T14:42:38,400 Traceback (most recent call last): 2023-10-11T14:42:38,400 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/cli/base_command.py", line 180, in exc_logging_wrapper 2023-10-11T14:42:38,400 status = run_func(*args) 2023-10-11T14:42:38,400 ^^^^^^^^^^^^^^^ 2023-10-11T14:42:38,400 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/cli/req_command.py", line 248, in wrapper 2023-10-11T14:42:38,400 return func(self, options, args) 2023-10-11T14:42:38,400 ^^^^^^^^^^^^^^^^^^^^^^^^^ 2023-10-11T14:42:38,400 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/commands/wheel.py", line 147, in run 2023-10-11T14:42:38,400 requirement_set = resolver.resolve(reqs, check_supported_wheels=True) 2023-10-11T14:42:38,400 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2023-10-11T14:42:38,400 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/resolution/resolvelib/resolver.py", line 92, in resolve 2023-10-11T14:42:38,400 result = self._result = resolver.resolve( 2023-10-11T14:42:38,400 ^^^^^^^^^^^^^^^^^ 2023-10-11T14:42:38,400 File "/usr/local/lib/python3.11/dist-packages/pip/_vendor/resolvelib/resolvers.py", line 546, in resolve 2023-10-11T14:42:38,400 state = resolution.resolve(requirements, max_rounds=max_rounds) 2023-10-11T14:42:38,400 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2023-10-11T14:42:38,400 File "/usr/local/lib/python3.11/dist-packages/pip/_vendor/resolvelib/resolvers.py", line 397, in resolve 2023-10-11T14:42:38,400 self._add_to_criteria(self.state.criteria, r, parent=None) 2023-10-11T14:42:38,400 File "/usr/local/lib/python3.11/dist-packages/pip/_vendor/resolvelib/resolvers.py", line 173, in _add_to_criteria 2023-10-11T14:42:38,400 if not criterion.candidates: 2023-10-11T14:42:38,400 File "/usr/local/lib/python3.11/dist-packages/pip/_vendor/resolvelib/structs.py", line 156, in __bool__ 2023-10-11T14:42:38,400 return bool(self._sequence) 2023-10-11T14:42:38,400 ^^^^^^^^^^^^^^^^^^^^ 2023-10-11T14:42:38,400 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 155, in __bool__ 2023-10-11T14:42:38,400 return any(self) 2023-10-11T14:42:38,400 ^^^^^^^^^ 2023-10-11T14:42:38,400 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 143, in 2023-10-11T14:42:38,400 return (c for c in iterator if id(c) not in self._incompatible_ids) 2023-10-11T14:42:38,400 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2023-10-11T14:42:38,400 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 47, in _iter_built 2023-10-11T14:42:38,400 candidate = func() 2023-10-11T14:42:38,400 ^^^^^^ 2023-10-11T14:42:38,400 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/resolution/resolvelib/factory.py", line 206, in _make_candidate_from_link 2023-10-11T14:42:38,400 self._link_candidate_cache[link] = LinkCandidate( 2023-10-11T14:42:38,400 ^^^^^^^^^^^^^^ 2023-10-11T14:42:38,400 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 293, in __init__ 2023-10-11T14:42:38,400 super().__init__( 2023-10-11T14:42:38,400 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 156, in __init__ 2023-10-11T14:42:38,400 self.dist = self._prepare() 2023-10-11T14:42:38,400 ^^^^^^^^^^^^^^^ 2023-10-11T14:42:38,400 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 225, in _prepare 2023-10-11T14:42:38,400 dist = self._prepare_distribution() 2023-10-11T14:42:38,400 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2023-10-11T14:42:38,400 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/resolution/resolvelib/candidates.py", line 304, in _prepare_distribution 2023-10-11T14:42:38,400 return preparer.prepare_linked_requirement(self._ireq, parallel_builds=True) 2023-10-11T14:42:38,400 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2023-10-11T14:42:38,400 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/operations/prepare.py", line 538, in prepare_linked_requirement 2023-10-11T14:42:38,400 return self._prepare_linked_requirement(req, parallel_builds) 2023-10-11T14:42:38,400 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2023-10-11T14:42:38,400 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/operations/prepare.py", line 653, in _prepare_linked_requirement 2023-10-11T14:42:38,400 dist = _get_prepared_distribution( 2023-10-11T14:42:38,400 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2023-10-11T14:42:38,400 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/operations/prepare.py", line 69, in _get_prepared_distribution 2023-10-11T14:42:38,400 abstract_dist.prepare_distribution_metadata( 2023-10-11T14:42:38,400 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/distributions/sdist.py", line 61, in prepare_distribution_metadata 2023-10-11T14:42:38,400 self.req.prepare_metadata() 2023-10-11T14:42:38,400 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/req/req_install.py", line 568, in prepare_metadata 2023-10-11T14:42:38,400 self.metadata_directory = generate_metadata_legacy( 2023-10-11T14:42:38,400 ^^^^^^^^^^^^^^^^^^^^^^^^^ 2023-10-11T14:42:38,400 File "/usr/local/lib/python3.11/dist-packages/pip/_internal/operations/build/metadata_legacy.py", line 71, in generate_metadata 2023-10-11T14:42:38,400 raise MetadataGenerationFailed(package_details=details) from error 2023-10-11T14:42:38,400 pip._internal.exceptions.MetadataGenerationFailed: metadata generation failed 2023-10-11T14:42:38,413 Removed palm==2.6.0 from https://files.pythonhosted.org/packages/72/c0/2b1b62abf467bc47bcecfbfe99061a6c8786087a4cddd53ff4a112d7b903/palm-2.6.0.tar.gz from build tracker '/tmp/pip-build-tracker-4n7ny95p' 2023-10-11T14:42:38,414 Removed build tracker: '/tmp/pip-build-tracker-4n7ny95p'