Add test to reproduce Windows cp1252 encoding error#56
Merged
Conversation
This test reproduces the UnicodeEncodeError that occurs on Windows CI when logging a message containing an emoji (🎂) on main.py:81. The test simulates Windows console behavior by: - Creating a stream with cp1252 encoding (Windows default) - Attempting to log the emoji message - Verifying that UnicodeEncodeError is captured in stderr This allows reproduction of the Windows-specific encoding issue on Linux without requiring actual Windows environment. Related to #55
Add encoding detection to conditionally display emoji based on console capabilities. This fixes the UnicodeEncodeError on Windows while preserving the emoji for UTF-8 capable consoles. Changes: - Add supports_unicode() function to detect if console can handle emojis - Conditionally prefix message with 🎂 emoji only when supported - Add comprehensive tests for different encoding scenarios The fix works by: 1. Checking sys.stdout.encoding 2. Testing if the encoding can encode the emoji 3. Using emoji only if encoding succeeds 4. Falling back to plain text for cp1252, ASCII, latin-1, etc. This ensures: - UTF-8 consoles (Linux/macOS) see the emoji - cp1252 consoles (Windows) see plain text without errors - No logging errors appear in CI output Related to #55
- Add CHANGES.md entry for issue #55 fix - Add CLAUDE.md with comprehensive development workflow guidelines - Document pre-push checklist: linting, changelog updates, testing - Provide example workflow for future contributions
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
Fixes #55: UnicodeEncodeError on Windows CI when logging emoji
This PR adds encoding detection to conditionally display emojis based on console capabilities, fixing Windows cp1252 encoding errors while preserving emojis for UTF-8 capable consoles.
Changes
Reproduction Test (Commit 26def49)
test_emoji_logging_with_cp1252_encoding()intests/test_logging.pyThe Fix (Commit d17e771)
supports_unicode()function insrc/mxdev/main.pyCode Formatting (Commit 5545833)
Documentation (Commit 8444c94)
How It Works
The
supports_unicode()function:sys.stdout.encodingTruefor UTF-8,Falsefor cp1252/ASCII/latin-1Results
Test Plan