Import ctypes only when necessary

Closes #4541
This commit is contained in:
pukkandan 2022-08-03 17:47:38 +05:30
parent b99ba3df09
commit fe0918bb65
No known key found for this signature in database
GPG key ID: 7EEE9E1E817D0A39
2 changed files with 9 additions and 7 deletions

View file

@ -1,6 +1,5 @@
import base64
import contextlib
import ctypes
import http.cookiejar
import json
import os
@ -876,10 +875,12 @@ def _decrypt_windows_dpapi(ciphertext, logger):
References:
- https://docs.microsoft.com/en-us/windows/win32/api/dpapi/nf-dpapi-cryptunprotectdata
"""
from ctypes.wintypes import DWORD
import ctypes
import ctypes.wintypes
class DATA_BLOB(ctypes.Structure):
_fields_ = [('cbData', DWORD),
_fields_ = [('cbData', ctypes.wintypes.DWORD),
('pbData', ctypes.POINTER(ctypes.c_char))]
buffer = ctypes.create_string_buffer(ciphertext)

View file

@ -6,7 +6,6 @@
import codecs
import collections
import contextlib
import ctypes
import datetime
import email.header
import email.utils
@ -1983,6 +1982,7 @@ def __init__(self):
# Cross-platform file locking
if sys.platform == 'win32':
import ctypes
import ctypes.wintypes
import msvcrt
@ -2362,9 +2362,10 @@ def fix_xml_ampersands(xml_str):
def setproctitle(title):
assert isinstance(title, str)
# ctypes in Jython is not complete
# http://bugs.jython.org/issue2148
if sys.platform.startswith('java'):
# Workaround for https://github.com/yt-dlp/yt-dlp/issues/4541
try:
import ctypes
except ImportError:
return
try: