Fix: Make fcntl usage conditional in mcpm share for Windows compatibi… #166
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
…lity
The
fcntlmodule is not available on Windows, and its direct import was causingImportErrorwhenmcpm sharewas invoked or its module (src/mcpm/commands/share.py) was loaded on Windows systems.This commit makes the import and usage of
fcntlwithin themake_non_blockingfunction conditional onos.name == 'posix'. On non-POSIX systems (like Windows), the function will now do nothing.The existing code for reading from subprocess pipes in
mcpm shareutilizesselect.select()with timeouts and handlesIOError/OSErrorexceptions. This setup is expected to provide sufficient non-blocking behavior for reading subprocess output on Windows, even without an explicitfcntlcall to setO_NONBLOCK.Note: Full dynamic testing of
mcpm shareon a Windows-like environment was not possible due to a Python version mismatch (environment: 3.10.17, project requires: >=3.11) in the available testing sandbox. This change addresses the directImportError.