python / python/cpython

Add `exist_okay` parameter to `Path.symlink_to()`

Open
#157,617 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

stdlib type-feature
Dominant language
Python
Stars
77.2k
Forks
35.9k
PR merge metrics
PR metrics pending

Description

Feature or enhancement

Proposal:

The same way Path.mkdir(exist_ok=True) and Path.touch(exist_ok=True) work.
Overriding an existing symbolic link should not throw an error if it's expected behaviour.

Actual behaviour:

path_to_sym = Path("existing_symlink_file")
path_to_sym.symlink_to(Path("../other_location"), target_is_directory=True)
[Errno 17] File exists: '../original_location' -> '../other_location'
Has this already been discussed elsewhere?

This is a minor feature, which does not need previous discussion elsewhere

Links to previous discussion of this feature:

See also:
#132416
https://github.com/python/cpython/issues/64173
https://github.com/python/cpython/issues/105919

Linked PRs
  • gh-157659

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Review linked PR gh-157659 and the related issues #132416, #64173, and #105919 before starting. Verify how the proposed parameter should behave when the destination is an existing symbolic link, including the example case; the issue is done when expected overwrites no longer raise an error.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
operating-systems
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.