Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GH-130614: pathlib ABCs: improve support for receiving path metadata #131259

Merged
merged 3 commits into from
Mar 16, 2025

Conversation

barneygale
Copy link
Contributor

@barneygale barneygale commented Mar 14, 2025

In the private pathlib ABCs, replace _WritablePath._write_info() with _WritablePath._copy_from(). This provides the target path object with more control over the copying process, including support for querying and setting metadata before the path is created.

Adjust _ReadablePath.copy() so that it forwards its keyword arguments to _WritablePath._copy_from() of the target path object. This allows us to remove the unimplemented preserve_metadata argument in the ABC method, making it a Path exclusive.

…adata

In the private pathlib ABCs, replace `_WritablePath._write_info()` with
`_WritablePath._copy_from()`. This provides the target path object with
more control over the copying process, including support for querying and
setting metadata *before* the path is created.

Adjust `_ReadablePath.copy()` so that it forwards its keyword arguments to
`_WritablePath._copy_from()` of the target path object. This allows us to
remove the unimplemented *preserve_metadata* argument in the ABC method,
making it a `Path` exclusive.
@barneygale barneygale merged commit 563ab5c into python:main Mar 16, 2025
38 checks passed
@bedevere-bot
Copy link

⚠️⚠️⚠️ Buildbot failure ⚠️⚠️⚠️

Hi! The buildbot aarch64 Fedora Stable Clang 3.x (tier-2) has failed when building commit 563ab5c.

What do you need to do:

  1. Don't panic.
  2. Check the buildbot page in the devguide if you don't know what the buildbots are or how they work.
  3. Go to the page of the buildbot that failed (https://buildbot.python.org/#/builders/234/builds/7222) and take a look at the build logs.
  4. Check if the failure is related to this commit (563ab5c) or if it is a false positive.
  5. If the failure is related to this commit, please, reflect that on the issue and make a new Pull Request with a fix.

You can take a look at the buildbot page here:

https://buildbot.python.org/#/builders/234/builds/7222

Failed tests:

  • test_perf_profiler

Failed subtests:

  • test_python_calls_appear_in_the_stack_if_perf_activated - test.test_perf_profiler.TestPerfProfilerWithDwarf.test_python_calls_appear_in_the_stack_if_perf_activated

Summary of the results of the build (if available):

==

Click to see traceback logs
Traceback (most recent call last):
  File "/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/Lib/test/test_perf_profiler.py", line 364, in test_python_calls_appear_in_the_stack_if_perf_activated
    self.assertIn(f"py::foo:{script}", stdout)
    ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: 'py::foo:/tmp/test_python_20igw685/tmpdkk7w3la/perftest.py' not found in 'python  787369 966891.551482:          1 cycles:Pu: \n\t    ffff8f089ac0 _start+0x0 (/usr/lib/ld-linux-aarch64.so.1)\n\npython  787369 966891.551529:          1 cycles:Pu: \n\t    ffff8f089ac0 _start+0x0 (/usr/lib/ld-linux-aarch64.so.1)\n\npython  787369 966891.552155:          1 cycles:Pu: \n\t    ffff8f075064 <invalid>+0x384 (inlined)\n\t    ffff8f075064 _dl_map_object_from_fd+0x384 (/usr/lib/ld-linux-aarch64.so.1)\n\t    ffff8f076133 _dl_map_object+0x1e7 (/usr/lib/ld-linux-aarch64.so.1)\n\t    ffff8f0715bf openaux+0x3f (/usr/lib/ld-linux-aarch64.so.1)\n\t    ffff8f070303 _dl_catch_exception+0x63 (/usr/lib/ld-linux-aarch64.so.1)\n\t    ffff8f071b33 _dl_map_object_deps+0x553 (/usr/lib/ld-linux-aarch64.so.1)\n\t    ffff8f08719f dl_main+0x139f (/usr/lib/ld-linux-aarch64.so.1)\n\t    ffff8f0845ff _dl_sysdep_start+0x1df (/usr/lib/ld-linux-aarch64.so.1)\n\t    ffff8f085b17 _dl_start_final+0x5ab (inlined)\n\t    ffff8f085b17 _dl_start+0x5ab (/usr/lib/ld-linux-aarch64.so.1)\n\t    ffff8f089ad3 _start+0x13 (/usr/lib/ld-linux-aarch64.so.1)\n\npython  787369 966891.552224:        409 cycles:Pu: \n\t    ffff8f08cd14 __memset_generic+0x114 (inlined)\n\t    ffff8f0750db <invalid>+0x3fb (inlined)\n\t    ffff8f0750db _dl_map_object_from_fd+0x3fb (/usr/lib/ld-linux-aarch64.so.1)\n\t    ffff8f076133 _dl_map_object+0x1e7 (/usr/lib/ld-linux-aarch64.so.1)\n\t    ffff8f0715bf openaux+0x3f (/usr/lib/ld-linux-aarch64.so.1)\n\t    ffff8f070303 _dl_catch_exception+0x63 (/usr/lib/ld-linux-aarch64.so.1)\n\t    ffff8f071b33 _dl_map_object_deps+0x553 (/usr/lib/ld-linux-aarch64.so.1)\n\t    ffff8f08719f dl_main+0x139f (/usr/lib/ld-linux-aarch64.so.1)\n\t    ffff8f0845ff _dl_sysdep_start+0x1df (/usr/lib/ld-linux-aarch64.so.1)\n\t    ffff8f085b17 _dl_start_final+0x5ab (inlined)\n\t    ffff8f085b17 _dl_start+0x5ab (/usr/lib/ld-linux-aarch64.so.1)\n\t    ffff8f089ad3 _start+0x13 (/usr/lib/ld-linux-aarch64.so.1)\n\npython  787369 966891.
yinit_config+0x143 (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          6b5147 pyinit_core+0x1c3 (inlined)\n\t          6b5147 Py_InitializeFromConfig+0x1c3 (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          7043bb pymain_init+0xcb (inlined)\n\t          7043bb pymain_main+0xcb (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          70442f Py_BytesMain+0x27 (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t    ffff8ee1625b __libc_start_call_main+0x7b (/usr/lib64/libc.so.6)\n\t    ffff8ee1633b __libc_start_main@GLIBC_2.17+0x9b (inlined)\n\t          41efef _start+0x2f (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\npython  787369 966891.555178:     529927 cycles:Pu: \n\t          5bcc40 _Py_TYPE+0x8df0 (inlined)\n\t          5bcc40 PyUnicode_GET_LENGTH+0x8df0 (inlined)\n\t          5bcc40 _PyUnicode_InitStaticStrings+0x8df0 (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          5a2dff init_global_interned_strings+0xdf (inlined)\n\t          5a2dff _PyUnicode_InitGlobalObjects+0xdf (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          6b7c2f pycore_init_global_objects+0x37 (inlined)\n\t          6b7c2f pycore_interp_init+0x37 (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          6b7a93 pyinit_config+0x1b7 (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          6b5147 pyinit_core+0x1c3 (inlined)\n\t          6b5147 Py_InitializeFromConfig+0x1c3 (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          7043bb pymain_init+0xcb (inlined)\n\t          7043bb pymain_main+0xcb (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          70442f Py_BytesMain+0x27 (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t    ffff8ee1625b __libc_start_call_main+0x7b (/usr/lib64/libc.so.6)\n\t    ffff8ee1633b __libc_start_main@GLIBC_2.17+0x9b (inlined)\n\t          41efef _start+0x2f (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\npython  787369 966891.556392:    1378144 cycles:Pu: \n\t    ffff8ee996c0 __GI_memcpy+0x0 (inlined)\n\t          587b43 unicode_decode_utf8+0x1c3 (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          5a39af PyUnicode_DecodeUTF8Stateful+0x2f (inlined)\n\t          5a39af PyUnicode_FromString+0x2f (inlined)\n\t          5a39af PyUnicode_InternFromString+0x2f (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          4bb63f descr_new+0x53 (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          4bb7b3 PyDescr_NewWrapper+0x27 (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          563d23 add_operators+0x65b (inlined)\n\t          563d23 type_ready_fill_dict+0x65b (inlined)\n\t          563d23 type_ready+0x65b (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          565c3f init_static_type+0x293 (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          524d33 _PyTypes_InitTypes+0x53 (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          6b7eaf pycore_init_types+0x1f (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          6b7d2f pycore_interp_init+0x137 (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          6b7a93 pyinit_config+0x1b7 (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          6b5147 pyinit_core+0x1c3 (inlined)\n\t          6b5147 Py_InitializeFromConfig+0x1c3 (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          7043bb py


Traceback (most recent call last):
  File "/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/Lib/test/test_perf_profiler.py", line 364, in test_python_calls_appear_in_the_stack_if_perf_activated
    self.assertIn(f"py::foo:{script}", stdout)
    ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: 'py::foo:/tmp/test_python_krxvznh5/tmpkdl4c1cy/perftest.py' not found in 'python  798954 967047.772229:          1 cycles:Pu: \n\t    ffffb997eac0 _start+0x0 (/usr/lib/ld-linux-aarch64.so.1)\n\npython  798954 967047.772255:          1 cycles:Pu: \n\t    ffffb997eac0 _start+0x0 (/usr/lib/ld-linux-aarch64.so.1)\n\npython  798954 967047.773123:          1 cycles:Pu: \n\t    ffffb97de440 getrlimit+0x0 (inlined)\n\t    ffffb98392d7 __pthread_early_init+0x57 (inlined)\n\t    ffffb98392d7 __libc_early_init+0x57 (/usr/lib64/libc.so.6)\n\t    ffffb997c523 dl_main+0x1723 (/usr/lib/ld-linux-aarch64.so.1)\n\t    ffffb99795ff _dl_sysdep_start+0x1df (/usr/lib/ld-linux-aarch64.so.1)\n\t    ffffb997ab17 _dl_start_final+0x5ab (inlined)\n\t    ffffb997ab17 _dl_start+0x5ab (/usr/lib/ld-linux-aarch64.so.1)\n\t    ffffb997ead3 _start+0x13 (/usr/lib/ld-linux-aarch64.so.1)\n\npython  798954 967047.773158:        421 cycles:Pu: \n\tffffc95efcdff654 [unknown] ([unknown])\n\tffffc95efce00484 [unknown] ([unknown])\n\tffffc95efb9a15e4 [unknown] ([unknown])\n\t    ffffb9839310 __pthread_early_init+0x90 (inlined)\n\t    ffffb9839310 __libc_early_init+0x90 (/usr/lib64/libc.so.6)\n\t    ffffb997c523 dl_main+0x1723 (/usr/lib/ld-linux-aarch64.so.1)\n\t    ffffb99795ff _dl_sysdep_start+0x1df (/usr/lib/ld-linux-aarch64.so.1)\n\t    ffffb997ab17 _dl_start_final+0x5ab (inlined)\n\t    ffffb997ab17 _dl_start+0x5ab (/usr/lib/ld-linux-aarch64.so.1)\n\t    ffffb997ead3 _start+0x13 (/usr/lib/ld-linux-aarch64.so.1)\n\npython  798954 967047.774108:        981 cycles:Pu: \n\t          690cb8 init_builtin_modules_table+0x50 (inlined)\n\t          690cb8 _PyImport_Init+0x50 (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          6b7987 pycore_init_runtime+0xab (inlined)\n\t          6b7987 pyinit_config+0xab (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          6b5147 pyinit_core+0x1c3 (inlined)\n\t          6b5147 Py_InitializeFromConfig+0x1c3 (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          7043bb pymain_init+0xcb (inlined)\n\t          7043bb pymain_main+0xcb (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          70442f Py_BytesMain+0x27 (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t    ffffb971625b __libc_start_call_main+0x7b (/usr/lib64/libc.so.6)\n\t    ffffb971633b __libc_start_main@GLIBC_2.17+0x9b (inlined)\n\t          41efef _start+0x2f (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\npython  798954 967047.774353:      32366 cycles:Pu: \n\t          55a358 _PyType_InitCache+0x20 (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          6d05c3 init_interpreter+0x213 (inlined)\n\t          6d05c3 _PyInterpreterState_New+0x213 (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          6b79d7 
ro_invoke+0x127 (inlined)\n\t          56cb2b mro_internal_unlocked+0x127 (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          563ab3 type_ready_mro+0x3eb (inlined)\n\t          563ab3 type_ready+0x3eb (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          565c3f init_static_type+0x293 (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          524d33 _PyTypes_InitTypes+0x53 (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          6b7eaf pycore_init_types+0x1f (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          6b7d2f pycore_interp_init+0x137 (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          6b7a93 pyinit_config+0x1b7 (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          6b5147 pyinit_core+0x1c3 (inlined)\n\t          6b5147 Py_InitializeFromConfig+0x1c3 (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          7043bb pymain_init+0xcb (inlined)\n\t          7043bb pymain_main+0xcb (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          70442f Py_BytesMain+0x27 (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t    ffffb971625b __libc_start_call_main+0x7b (/usr/lib64/libc.so.6)\n\t    ffffb971633b __libc_start_main@GLIBC_2.17+0x9b (inlined)\n\t          41efef _start+0x2f (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\npython  798954 967047.775464:     418605 cycles:Pu: \n\t          5633c4 type_add_method+0x10 (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          563f2f type_add_methods+0x867 (inlined)\n\t          563f2f type_ready_fill_dict+0x867 (inlined)\n\t          563f2f type_ready+0x867 (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          565c3f init_static_type+0x293 (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          524d33 _PyTypes_InitTypes+0x53 (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          6b7eaf pycore_init_types+0x1f (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          6b7d2f pycore_interp_init+0x137 (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          6b7a93 pyinit_config+0x1b7 (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          6b5147 pyinit_core+0x1c3 (inlined)\n\t          6b5147 Py_InitializeFromConfig+0x1c3 (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          7043bb pymain_init+0xcb (inlined)\n\t          7043bb pymain_main+0xcb (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          70442f Py_BytesMain+0x27 (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t    ffffb971625b __libc_start_call_main+0x7b (/usr/lib64/libc.so.6)\n\t    ffffb971633b __libc_start_main@GLIBC_2.17+0x9b (inlined)\n\t          41efef _start+0x2f (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\npython  798954 967047.776565:     988650 cycles:Pu: \n\t          53f75c pymalloc_alloc+0x6c (inlined)\n\t          53f75c _PyObject_Malloc+0x6c (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          53fe33 _PyMem_DebugRawAlloc+0x43 (inlined)\n\t          53fe33 _PyMem_DebugRawMalloc+0x43 (inlined)\n\t          53fe33 _PyMem_DebugMalloc+0x43 (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          55b697 _PyObject_MallocWithType+0x7f (inlined)\n\t          55b697 _PyType_AllocNoTrack+0x7f (/home/buildbot/buildarea/3.x.cstratak-fedora-stable-aarch64.clang/build/python)\n\t          55b5eb PyType_GenericAlloc+0x13 (/ho

plashchynski pushed a commit to plashchynski/cpython that referenced this pull request Mar 17, 2025
…adata (python#131259)

In the private pathlib ABCs, replace `_WritablePath._write_info()` with
`_WritablePath._copy_from()`. This provides the target path object with
more control over the copying process, including support for querying and
setting metadata *before* the path is created.

Adjust `_ReadablePath.copy()` so that it forwards its keyword arguments to
`_WritablePath._copy_from()` of the target path object. This allows us to
remove the unimplemented *preserve_metadata* argument in the ABC method,
making it a `Path` exclusive.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants