Skip to content

Inconsistency with os.environ and str/unicode in Python 2 #176

Closed

Description

@bbc2

In Python 2, os.environ is a map with str keys and str values, not unicode. Unfortunately, values loaded with Python-dotenv are unicode.

Example with test.py:

import os

import dotenv

dotenv.load_dotenv()
print(type(os.environ["foo"]))

and .env:

foo=bar

Results:

> python test.py
<type 'unicode'>
> env foo=bar python test.py
<type 'str'>

I think that it's probably not worth fixing given Python 2's upcoming end of life, but I'm pointing this out here because this might justify turning off some Mypy type warnings for Python 2.

Activity

  1. bbc2 commented on May 4, 2019

    @bbc2
    CollaboratorAuthor

    Apparently, this was fixed on Windows thanks to #101, but that fix probably accidentally went away with later MRs.

  2. bbc2 commented on May 4, 2019

    @bbc2
    CollaboratorAuthor

    this might justify turning off some Mypy type warnings for Python 2

    Actually, that's a terrible idea! I just found a bug with Unicode and Python 2 hidden behind a # type: ignore. To be more precise, this bug is fairly recent (version 0.10.0) whereas the str/unicode inconsistency pointed out in this issue has existed for a long time (at least since version 0.9.0). I'll open a separate issue.

  3. theskumar commented on May 12, 2019

    @theskumar
    Owner

    Released the fix in v0.10.2, thanks! 🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions