fix: 修复 Windows 兼容性问题

- 修复 setup.py 中 README.md 读取的编码问题 (UTF-8)
- 修复 system.py 中 errno 常量在 Windows 上不存在的问题
- 使用 getattr 安全获取平台特定的 errno 常量
- 测试全部通过 (24/24 能力可用)
This commit is contained in:
shuiyu1123 committed 2026-06-26 21:32:56 +08:00
1 parent 0f9b6fcc5d
commit b3d75f8cc2
8 files changed
+708 -38

No files matched your search

+37 -37
View File
@@ -80,7 +80,7 @@ class OsConstants(Stub):
SIGTTIN = 21
SIGTTOU = 22
# errno 常量
# errno 常量 (使用 getattr 处理 Windows 上不存在的常量)
EPERM = errno.EPERM
ENOENT = errno.ENOENT
ESRCH = errno.ESRCH
@@ -95,7 +95,7 @@ class OsConstants(Stub):
ENOMEM = errno.ENOMEM
EACCES = errno.EACCES
EFAULT = errno.EFAULT
ENOTBLK = errno.ENOTBLK
ENOTBLK = getattr(errno, 'ENOTBLK', 15) # Windows 不支持
EBUSY = errno.EBUSY
EEXIST = errno.EEXIST
EXDEV = errno.EXDEV
@@ -106,7 +106,7 @@ class OsConstants(Stub):
ENFILE = errno.ENFILE
EMFILE = errno.EMFILE
ENOTTY = errno.ENOTTY
ETXTBSY = errno.ETXTBSY
ETXTBSY = getattr(errno, 'ETXTBSY', 139)
EFBIG = errno.EFBIG
ENOSPC = errno.ENOSPC
ESPIPE = errno.ESPIPE
@@ -123,16 +123,16 @@ class OsConstants(Stub):
ELOOP = errno.ELOOP
ENOMSG = errno.ENOMSG
EIDRM = errno.EIDRM
ENOSTR = errno.ENOSTR
ENODATA = errno.ENODATA
ETIME = errno.ETIME
ENOSR = errno.ENOSR
EREMOTE = errno.EREMOTE
ENOLINK = errno.ENOLINK
ENOSTR = getattr(errno, 'ENOSTR', 125)
ENODATA = getattr(errno, 'ENODATA', 120)
ETIME = getattr(errno, 'ETIME', 137)
ENOSR = getattr(errno, 'ENOSR', 124)
EREMOTE = getattr(errno, 'EREMOTE', 10071)
ENOLINK = getattr(errno, 'ENOLINK', 121)
EPROTO = errno.EPROTO
EMULTIHOP = errno.EMULTIHOP
EBADMSG = errno.EBADMSG
EOVERFLOW = errno.EOVERFLOW
EMULTIHOP = getattr(errno, 'EMULTIHOP', 10072) # Windows 不支持
EBADMSG = getattr(errno, 'EBADMSG', 104)
EOVERFLOW = getattr(errno, 'EOVERFLOW', 132)
EILSEQ = errno.EILSEQ
ENOTSOCK = errno.ENOTSOCK
EDESTADDRREQ = errno.EDESTADDRREQ
@@ -140,10 +140,10 @@ class OsConstants(Stub):
EPROTOTYPE = errno.EPROTOTYPE
ENOPROTOOPT = errno.ENOPROTOOPT
EPROTONOSUPPORT = errno.EPROTONOSUPPORT
ESOCKTNOSUPPORT = errno.ESOCKTNOSUPPORT
EOPNOTSUPP = errno.EOPNOTSUPP
EPFNOSUPPORT = errno.EPFNOSUPPORT
EAFNOSUPPORT = errno.EAFNOSUPPORT
ESOCKTNOSUPPORT = getattr(errno, 'ESOCKTNOSUPPORT', 10044)
EOPNOTSUPP = getattr(errno, 'EOPNOTSUPP', 10045)
EPFNOSUPPORT = getattr(errno, 'EPFNOSUPPORT', 10046)
EAFNOSUPPORT = getattr(errno, 'EAFNOSUPPORT', 10047)
EADDRINUSE = errno.EADDRINUSE
EADDRNOTAVAIL = errno.EADDRNOTAVAIL
ENETDOWN = errno.ENETDOWN
@@ -154,32 +154,32 @@ class OsConstants(Stub):
ENOBUFS = errno.ENOBUFS
EISCONN = errno.EISCONN
ENOTCONN = errno.ENOTCONN
ESHUTDOWN = errno.ESHUTDOWN
ETOOMANYREFS = errno.ETOOMANYREFS
ESHUTDOWN = getattr(errno, 'ESHUTDOWN', 10058)
ETOOMANYREFS = getattr(errno, 'ETOOMANYREFS', 10059)
ETIMEDOUT = errno.ETIMEDOUT
ECONNREFUSED = errno.ECONNREFUSED
EHOSTDOWN = errno.EHOSTDOWN
EHOSTDOWN = getattr(errno, 'EHOSTDOWN', 10064)
EHOSTUNREACH = errno.EHOSTUNREACH
EALREADY = errno.EALREADY
EINPROGRESS = errno.EINPROGRESS
ESTALE = errno.ESTALE
EUCLEAN = errno.EUCLEAN
ENOTNAM = errno.ENOTNAM
ENAVAIL = errno.ENAVAIL
EISNAM = errno.EISNAM
EREMOTEIO = errno.EREMOTEIO
EDQUOT = errno.EDQUOT
ENOMEDIUM = errno.ENOMEDIUM
EMEDIUMTYPE = errno.EMEDIUMTYPE
ECANCELED = errno.ECANCELED
ENOKEY = errno.ENOKEY
EKEYEXPIRED = errno.EKEYEXPIRED
EKEYREVOKED = errno.EKEYREVOKED
EKEYREJECTED = errno.EKEYREJECTED
EOWNERDEAD = errno.EOWNERDEAD
ENOTRECOVERABLE = errno.ENOTRECOVERABLE
ERFKILL = errno.ERFKILL
EHWPOISON = getattr(errno, 'EHWPOISON', 1001)
ESTALE = getattr(errno, 'ESTALE', 10070)
EUCLEAN = getattr(errno, 'EUCLEAN', 117) # Windows 不支持
ENOTNAM = getattr(errno, 'ENOTNAM', 118) # Windows 不支持
ENAVAIL = getattr(errno, 'ENAVAIL', 119) # Windows 不支持
EISNAM = getattr(errno, 'EISNAM', 120) # Windows 不支持
EREMOTEIO = getattr(errno, 'EREMOTEIO', 121) # Windows 不支持
EDQUOT = getattr(errno, 'EDQUOT', 10069)
ENOMEDIUM = getattr(errno, 'ENOMEDIUM', 123) # Windows 不支持
EMEDIUMTYPE = getattr(errno, 'EMEDIUMTYPE', 124) # Windows 不支持
ECANCELED = getattr(errno, 'ECANCELED', 105)
ENOKEY = getattr(errno, 'ENOKEY', 126) # Windows 不支持
EKEYEXPIRED = getattr(errno, 'EKEYEXPIRED', 127) # Windows 不支持
EKEYREVOKED = getattr(errno, 'EKEYREVOKED', 128) # Windows 不支持
EKEYREJECTED = getattr(errno, 'EKEYREJECTED', 129) # Windows 不支持
EOWNERDEAD = getattr(errno, 'EOWNERDEAD', 133)
ENOTRECOVERABLE = getattr(errno, 'ENOTRECOVERABLE', 127)
ERFKILL = getattr(errno, 'ERFKILL', 132) # Windows 不支持
EHWPOISON = getattr(errno, 'EHWPOISON', 1001) # Windows 不支持
def __init__(self):
super().__init__()