[7.4.x] fix: closes #11343's [attr-defined] type errors (#11421)

Co-authored-by: Warren Markham <rabbitsinwarrens@gmail.com>
This commit is contained in:
github-actions[bot] 2023-09-09 13:02:31 +00:00 committed by GitHub
parent c39bdf6190
commit d849a3ed64
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 9 deletions

View File

@ -380,15 +380,24 @@ else:
def get_user_id() -> int | None: def get_user_id() -> int | None:
"""Return the current user id, or None if we cannot get it reliably on the current platform.""" """Return the current process's real user id or None if it could not be
# win32 does not have a getuid() function. determined.
# On Emscripten, getuid() is a stub that always returns 0.
if sys.platform in ("win32", "emscripten"): :return: The user id or None if it could not be determined.
"""
# mypy follows the version and platform checking expectation of PEP 484:
# https://mypy.readthedocs.io/en/stable/common_issues.html?highlight=platform#python-version-and-system-platform-checks
# Containment checks are too complex for mypy v1.5.0 and cause failure.
if sys.platform == "win32" or sys.platform == "emscripten":
# win32 does not have a getuid() function.
# Emscripten has a return 0 stub.
return None return None
# getuid shouldn't fail, but cpython defines such a case. else:
# Let's hope for the best. # On other platforms, a return value of -1 is assumed to indicate that
uid = os.getuid() # the current process's real user id could not be determined.
return uid if uid != -1 else None ERROR = -1
uid = os.getuid()
return uid if uid != ERROR else None
# Perform exhaustiveness checking. # Perform exhaustiveness checking.

View File

@ -291,7 +291,8 @@ class TestParser:
def test_argcomplete(pytester: Pytester, monkeypatch: MonkeyPatch) -> None: def test_argcomplete(pytester: Pytester, monkeypatch: MonkeyPatch) -> None:
try: try:
encoding = locale.getencoding() # New in Python 3.11, ignores utf-8 mode # New in Python 3.11, ignores utf-8 mode
encoding = locale.getencoding() # type: ignore[attr-defined]
except AttributeError: except AttributeError:
encoding = locale.getpreferredencoding(False) encoding = locale.getpreferredencoding(False)
try: try: