Skip to content

Fix Windows Compatibility: Symlink Handling, Permission Fixes, and Test Stability Improvements #2428

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

Open
wants to merge 6 commits into
base: master
Choose a base branch
from

Conversation

PraveenMudalgeri
Copy link

What type of PR is this?

/kind bug
/kind cleanup
/kind documentation


What this PR does / why we need it

This PR fixes multiple Windows-specific issues in the Kubernetes Python client repository to improve developer experience, test stability, and compatibility on Windows systems.

Windows environments have limited support for Unix-style symbolic links, and strict file permission semantics caused test failures. Additionally, streaming tests sometimes hung or failed due to differences in environment.

This PR introduces fixes and workarounds for these problems, enabling smooth local development and CI testing on Windows.


Which issue(s) this PR fixes

Fixes #2427
Resolves Windows compatibility issues related to symlinks, file permissions, and flaky tests.


Special notes for your reviewer

  • Added a Windows development setup script to replace symlinks with actual directories and files.
  • Added Windows-specific permission handling in temporary file tests to avoid PermissionError.
  • Added shim modules at repository roots to fix import errors caused by symlink replacement.
  • Refactored streaming tests to mock streaming behavior for quick, reliable tests on Windows.
  • Updated UTF-8 invalid character tests to accommodate Windows UTF-8 decoding behavior.
  • Added comprehensive guidance documentation for Windows developers.

Does this PR introduce a user-facing change?

Fix Windows-specific development environment and test suite issues:

  • Support for Windows without symlink failures
  • Windows-safe temporary file handling in tests
  • Reliable, non-hanging streaming tests and import fixes on Windows
  • Documentation for Windows developer setup and troubleshooting

Additional documentation

Added WINDOWS_DEVELOPMENT.md with detailed instructions and troubleshooting steps for setting up development and running tests on Windows platforms.

- Create setup-windows-dev.py to handle symlink issues on Windows
- Script replaces symlink directories with actual directories
- Enables 'pip install -e .' and test execution on Windows
- Addresses issue kubernetes-client#2427 point 1
- Add Windows-specific handling for temporary file creation
- Skip tests gracefully when permission errors occur on Windows
- Addresses issue kubernetes-client#2427 point 3
- Add Windows-specific handling for temporary file creation
- Skip tests gracefully when permission errors occur on Windows
- Addresses issue kubernetes-client#2427 point 3
- Create comprehensive Windows development documentation
- Include setup instructions and known issue solutions
- Provide troubleshooting guide for Windows contributors
- Addresses issue kubernetes-client#2427 documentation needs
@k8s-ci-robot k8s-ci-robot added kind/bug Categorizes issue or PR as related to a bug. do-not-merge/release-note-label-needed Indicates that a PR should not merge because it's missing one of the release note labels. kind/cleanup Categorizes issue or PR as related to cleaning up code, process, or technical debt. labels Jul 31, 2025
Copy link

linux-foundation-easycla bot commented Jul 31, 2025

CLA Signed


The committers listed above are authorized under a signed CLA.

@k8s-ci-robot k8s-ci-robot added kind/documentation Categorizes issue or PR as related to documentation. cncf-cla: no Indicates the PR's author has not signed the CNCF CLA. labels Jul 31, 2025
@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: PraveenMudalgeri
Once this PR has been reviewed and has the lgtm label, please assign roycaihw for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot
Copy link
Contributor

Welcome @PraveenMudalgeri!

It looks like this is your first PR to kubernetes-client/python 🎉. Please refer to our pull request process documentation to help your PR have a smooth ride to approval.

You will be prompted by a bot to use commands during the review process. Do not be afraid to follow the prompts! It is okay to experiment. Here is the bot commands documentation.

You can also check if kubernetes-client/python has its own contribution guidelines.

You may want to refer to our testing guide if you run into trouble with your tests not passing.

If you are having difficulty getting your pull request seen, please follow the recommended escalation practices. Also, for tips and tricks in the contribution process you may want to read the Kubernetes contributor cheat sheet. We want to make sure your contribution gets all the attention it needs!

Thank you, and welcome to Kubernetes. 😃

@k8s-ci-robot k8s-ci-robot added size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. and removed cncf-cla: no Indicates the PR's author has not signed the CNCF CLA. labels Jul 31, 2025
@PraveenMudalgeri
Copy link
Author

/release-note-none

@k8s-ci-robot k8s-ci-robot added release-note-none Denotes a PR that doesn't merit a release note. and removed do-not-merge/release-note-label-needed Indicates that a PR should not merge because it's missing one of the release note labels. labels Jul 31, 2025
@PraveenMudalgeri
Copy link
Author

Hi @fabianvf and @roycaihw,
Could you please review this PR and, if everything looks good, approve it with a /approve comment?
Thank you for your time!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. kind/bug Categorizes issue or PR as related to a bug. kind/cleanup Categorizes issue or PR as related to cleaning up code, process, or technical debt. kind/documentation Categorizes issue or PR as related to documentation. release-note-none Denotes a PR that doesn't merit a release note. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Windows contributors face multiple issues: symlink folders not portable, permission errors, and missing imports in tests
2 participants