New submission from benrg <benrud...@gmail.com>:

The Windows functions that deal with environment variables are case-insensitive 
and case-preserving, like most Windows file systems. Many environment variables 
are conventionally written in all caps, but others aren't, such as 
`ProgramData`, `PSModulePath`, and `windows_tracing_logfile`.

os.environ forces all environment variable names to upper case when it's 
constructed. One consequence is that if you pass a modified environment to 
subprocess.Popen, you end up with variables named `PROGRAMDATA`, etc., even if 
you didn't modify their values.

While this is unlikely to break things since other software normally ignores 
the case, it's nonstandard behavior, and disconcerting when the affected 
variable names are shown to human beings.

Here's an example of someone being confused by this: 
https://stackoverflow.com/questions/19023238/why-python-uppercases-all-environment-variables-in-windows

----------
components: Library (Lib), Windows
messages: 414064
nosy: benrg, paul.moore, steve.dower, tim.golden, zach.ware
priority: normal
severity: normal
status: open
title: os.environ forces variable names to upper case on Windows
type: behavior
versions: Python 3.10, Python 3.11, Python 3.7, Python 3.8, Python 3.9

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue46861>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to