| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
The parser strips a leading UTF-8 BOM so the first variable is read correctly, but the stripped BOM never reaches the bindings that set_key and unset_key write back out. Rewriting a file that had one therefore dropped it silently, changing a part of the file the caller did not ask to touch. Carry it across in rewrite(), which both writers share.
| Back | FazBrowse Home | New Git URL |
set_key and unset_key drop a leading UTF-8 BOM from files that have one.
#640 made the parser strip a leading BOM so the first variable parses. That stripped BOM never reaches the bindings, so the rewrite path writes the file back without it:
rewrite() now carries it across, so both writers keep it. Only files that already had a BOM change behaviour. The check is encoding-safe: a latin-1 file never decodes to \ufeff, and utf-16 handles its own BOM in the codec.
Tests: one for set_key, one for unset_key. Both fail on main on the missing BOM and pass with the fix. Full suite 207 passed / 50 skipped, ruff check and ruff format --check clean.
mypy reports one error here, tests/test_fifo_dotenv.py:15: Module has no attribute "mkfifo". It is pre-existing and unrelated: I confirmed it on a clean checkout of main. It appears because I ran mypy on Windows, where os.mkfifo does not exist, so CI will not see it.
Related: #640, #637