pycares 4.6.0__cp310-cp310-win32.whl → 4.7.0__cp310-cp310-win32.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pycares/__init__.py +27 -1
- pycares/_cares.pyd +0 -0
- pycares/_version.py +1 -1
- pycares/errno.py +56 -38
- {pycares-4.6.0.dist-info → pycares-4.7.0.dist-info}/METADATA +1 -1
- pycares-4.7.0.dist-info/RECORD +12 -0
- {pycares-4.6.0.dist-info → pycares-4.7.0.dist-info}/WHEEL +1 -1
- pycares-4.6.0.dist-info/RECORD +0 -12
- {pycares-4.6.0.dist-info → pycares-4.7.0.dist-info}/licenses/LICENSE +0 -0
- {pycares-4.6.0.dist-info → pycares-4.7.0.dist-info}/top_level.txt +0 -0
pycares/__init__.py
CHANGED
@@ -332,7 +332,8 @@ class Channel:
|
|
332
332
|
rotate: bool = False,
|
333
333
|
local_ip: Union[str, bytes, None] = None,
|
334
334
|
local_dev: Optional[str] = None,
|
335
|
-
resolvconf_path: Union[str, bytes, None] = None
|
335
|
+
resolvconf_path: Union[str, bytes, None] = None,
|
336
|
+
event_thread: bool = False) -> None:
|
336
337
|
|
337
338
|
channel = _ffi.new("ares_channel *")
|
338
339
|
options = _ffi.new("struct ares_options *")
|
@@ -373,6 +374,8 @@ class Channel:
|
|
373
374
|
if sock_state_cb:
|
374
375
|
if not callable(sock_state_cb):
|
375
376
|
raise TypeError("sock_state_cb is not callable")
|
377
|
+
if event_thread:
|
378
|
+
raise RuntimeError("sock_state_cb and event_thread cannot be used together")
|
376
379
|
|
377
380
|
userdata = _ffi.new_handle(sock_state_cb)
|
378
381
|
|
@@ -383,6 +386,14 @@ class Channel:
|
|
383
386
|
options.sock_state_cb_data = userdata
|
384
387
|
optmask = optmask | _lib.ARES_OPT_SOCK_STATE_CB
|
385
388
|
|
389
|
+
if event_thread:
|
390
|
+
if not ares_threadsafety():
|
391
|
+
raise RuntimeError("c-ares is not built with thread safety")
|
392
|
+
if sock_state_cb:
|
393
|
+
raise RuntimeError("sock_state_cb and event_thread cannot be used together")
|
394
|
+
optmask = optmask | _lib.ARES_OPT_EVENT_THREAD
|
395
|
+
options.evsys = _lib.ARES_EVSYS_DEFAULT
|
396
|
+
|
386
397
|
if lookups:
|
387
398
|
options.lookups = _ffi.new('char[]', ascii_bytes(lookups))
|
388
399
|
optmask = optmask | _lib.ARES_OPT_LOOKUPS
|
@@ -422,6 +433,11 @@ class Channel:
|
|
422
433
|
def cancel(self) -> None:
|
423
434
|
_lib.ares_cancel(self._channel[0])
|
424
435
|
|
436
|
+
def reinit(self) -> None:
|
437
|
+
r = _lib.ares_reinit(self._channel[0])
|
438
|
+
if r != _lib.ARES_SUCCESS:
|
439
|
+
raise AresError(r, errno.strerror(r))
|
440
|
+
|
425
441
|
@property
|
426
442
|
def servers(self) -> list[str]:
|
427
443
|
servers = _ffi.new("struct ares_addr_node **")
|
@@ -847,6 +863,15 @@ class ares_addrinfo_result(AresResult):
|
|
847
863
|
_lib.ares_freeaddrinfo(ares_addrinfo)
|
848
864
|
|
849
865
|
|
866
|
+
def ares_threadsafety() -> bool:
|
867
|
+
"""
|
868
|
+
Check if c-ares was compiled with thread safety support.
|
869
|
+
|
870
|
+
:return: True if thread-safe, False otherwise.
|
871
|
+
:rtype: bool
|
872
|
+
"""
|
873
|
+
return bool(_lib.ares_threadsafety())
|
874
|
+
|
850
875
|
__all__ = (
|
851
876
|
"ARES_FLAG_USEVC",
|
852
877
|
"ARES_FLAG_PRIMARY",
|
@@ -903,6 +928,7 @@ __all__ = (
|
|
903
928
|
"ARES_VERSION",
|
904
929
|
"AresError",
|
905
930
|
"Channel",
|
931
|
+
"ares_threadsafety",
|
906
932
|
"errno",
|
907
933
|
"__version__"
|
908
934
|
)
|
pycares/_cares.pyd
CHANGED
Binary file
|
pycares/_version.py
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
|
2
|
-
__version__ = '4.
|
2
|
+
__version__ = '4.7.0'
|
pycares/errno.py
CHANGED
@@ -3,49 +3,67 @@ from typing import Union
|
|
3
3
|
from ._cares import ffi as _ffi, lib as _lib
|
4
4
|
from .utils import maybe_str
|
5
5
|
|
6
|
+
ARES_SUCCESS = _lib.ARES_SUCCESS
|
7
|
+
# error codes
|
8
|
+
ARES_ENODATA = _lib.ARES_ENODATA
|
9
|
+
ARES_EFORMERR = _lib.ARES_EFORMERR
|
10
|
+
ARES_ESERVFAIL = _lib.ARES_ESERVFAIL
|
11
|
+
ARES_ENOTFOUND = _lib.ARES_ENOTFOUND
|
12
|
+
ARES_ENOTIMP = _lib.ARES_ENOTIMP
|
13
|
+
ARES_EREFUSED = _lib.ARES_EREFUSED
|
14
|
+
ARES_EBADQUERY = _lib.ARES_EBADQUERY
|
15
|
+
ARES_EBADNAME = _lib.ARES_EBADNAME
|
16
|
+
ARES_EBADFAMILY = _lib.ARES_EBADFAMILY
|
17
|
+
ARES_EBADRESP = _lib.ARES_EBADRESP
|
18
|
+
ARES_ECONNREFUSED = _lib.ARES_ECONNREFUSED
|
19
|
+
ARES_ETIMEOUT = _lib.ARES_ETIMEOUT
|
20
|
+
ARES_EOF = _lib.ARES_EOF
|
21
|
+
ARES_EFILE = _lib.ARES_EFILE
|
22
|
+
ARES_ENOMEM = _lib.ARES_ENOMEM
|
23
|
+
ARES_EDESTRUCTION = _lib.ARES_EDESTRUCTION
|
24
|
+
ARES_EBADSTR = _lib.ARES_EBADSTR
|
25
|
+
ARES_EBADFLAGS = _lib.ARES_EBADFLAGS
|
26
|
+
ARES_ENONAME = _lib.ARES_ENONAME
|
27
|
+
ARES_EBADHINTS = _lib.ARES_EBADHINTS
|
28
|
+
ARES_ENOTINITIALIZED = _lib.ARES_ENOTINITIALIZED
|
29
|
+
ARES_ELOADIPHLPAPI = _lib.ARES_ELOADIPHLPAPI
|
30
|
+
ARES_EADDRGETNETWORKPARAMS = _lib.ARES_EADDRGETNETWORKPARAMS
|
31
|
+
ARES_ECANCELLED = _lib.ARES_ECANCELLED
|
32
|
+
ARES_ESERVICE = _lib.ARES_ESERVICE
|
6
33
|
|
7
|
-
|
8
|
-
|
34
|
+
errorcode = {
|
35
|
+
ARES_SUCCESS: "ARES_SUCCESS",
|
9
36
|
# error codes
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
errorcode = {}
|
38
|
-
|
39
|
-
for symbol in exported_pycares_symbols:
|
40
|
-
value = getattr(_lib, symbol)
|
41
|
-
globals()[symbol] = value
|
42
|
-
globals()["errorcode"][value] = symbol
|
37
|
+
ARES_ENODATA: "ARES_ENODATA",
|
38
|
+
ARES_EFORMERR: "ARES_EFORMERR",
|
39
|
+
ARES_ESERVFAIL: "ARES_ESERVFAIL",
|
40
|
+
ARES_ENOTFOUND: "ARES_ENOTFOUND",
|
41
|
+
ARES_ENOTIMP: "ARES_ENOTIMP",
|
42
|
+
ARES_EREFUSED: "ARES_EREFUSED",
|
43
|
+
ARES_EBADQUERY: "ARES_EBADQUERY",
|
44
|
+
ARES_EBADNAME: "ARES_EBADNAME",
|
45
|
+
ARES_EBADFAMILY: "ARES_EBADFAMILY",
|
46
|
+
ARES_EBADRESP: "ARES_EBADRESP",
|
47
|
+
ARES_ECONNREFUSED: "ARES_ECONNREFUSED",
|
48
|
+
ARES_ETIMEOUT: "ARES_ETIMEOUT",
|
49
|
+
ARES_EOF: "ARES_EOF",
|
50
|
+
ARES_EFILE: "ARES_EFILE",
|
51
|
+
ARES_ENOMEM: "ARES_ENOMEM",
|
52
|
+
ARES_EDESTRUCTION: "ARES_EDESTRUCTION",
|
53
|
+
ARES_EBADSTR: "ARES_EBADSTR",
|
54
|
+
ARES_EBADFLAGS: "ARES_EBADFLAGS",
|
55
|
+
ARES_ENONAME: "ARES_ENONAME",
|
56
|
+
ARES_EBADHINTS: "ARES_EBADHINTS",
|
57
|
+
ARES_ENOTINITIALIZED: "ARES_ENOTINITIALIZED",
|
58
|
+
ARES_ELOADIPHLPAPI: "ARES_ELOADIPHLPAPI",
|
59
|
+
ARES_EADDRGETNETWORKPARAMS: "ARES_EADDRGETNETWORKPARAMS",
|
60
|
+
ARES_ECANCELLED: "ARES_ECANCELLED",
|
61
|
+
ARES_ESERVICE: "ARES_ESERVICE",
|
62
|
+
}
|
43
63
|
|
44
64
|
|
45
65
|
def strerror(code: int) -> Union[str, bytes]:
|
46
66
|
return maybe_str(_ffi.string(_lib.ares_strerror(code)))
|
47
67
|
|
48
68
|
|
49
|
-
__all__ =
|
50
|
-
|
51
|
-
del exported_pycares_symbols
|
69
|
+
__all__ = ("errorcode", "strerror", *errorcode.values())
|
@@ -0,0 +1,12 @@
|
|
1
|
+
pycares/__init__.py,sha256=4pcVxQtqN2b3dYejSn0-5UhVQtnFf-giLhXNhdxO6pg,33615
|
2
|
+
pycares/__main__.py,sha256=-WwwGX4NQ8hpOqrNuCy59quCQJt7IAwQXdQjga5s4WA,2880
|
3
|
+
pycares/_cares.pyd,sha256=QZpGljj769IfyBTDUlly4WQtVmSSysMQl2WFTnZDB30,183808
|
4
|
+
pycares/_version.py,sha256=fQhP4tP6n6MNeE-3CN7K72JQzxJdhExDFIpuwM1P1lI,25
|
5
|
+
pycares/errno.py,sha256=32f2SnSjYACq7peW9Iqb7cvDvwup6LDpNMWGHWhLnWI,2340
|
6
|
+
pycares/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
7
|
+
pycares/utils.py,sha256=ZzjEdkygbU3_B1g4SVwlDS949PhttJG2gK735_6G5Ps,1344
|
8
|
+
pycares-4.7.0.dist-info/licenses/LICENSE,sha256=ZzIVbIpf5QFzaiLCDSjxhvH5EViAWLVO-W4ZgBzWvb8,1090
|
9
|
+
pycares-4.7.0.dist-info/METADATA,sha256=lxElNQ2gWW8BVtKR3xS9FukhHz6roZi698VnT8KKCHI,4622
|
10
|
+
pycares-4.7.0.dist-info/WHEEL,sha256=yfRWACNKjr6OSXtz0eFfp9MlgTi3VwUGdYsrYzhFUcc,97
|
11
|
+
pycares-4.7.0.dist-info/top_level.txt,sha256=nIeo7L2XUVBQZO2YE6pH7tlKaBWTfmmRcXbqe_NWYCw,15
|
12
|
+
pycares-4.7.0.dist-info/RECORD,,
|
pycares-4.6.0.dist-info/RECORD
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
pycares/__init__.py,sha256=FUE_1XczxLUO4f9jWARbumO4oAWM4eF1UBS9Cs0EiQw,32626
|
2
|
-
pycares/__main__.py,sha256=-WwwGX4NQ8hpOqrNuCy59quCQJt7IAwQXdQjga5s4WA,2880
|
3
|
-
pycares/_cares.pyd,sha256=xK8IwK6Ldsiw4iQoYhhcGvFbyv20xHFUp4WB0IH_ONk,106496
|
4
|
-
pycares/_version.py,sha256=MJZC_xBqothvBje6hgJoAUxF_5eXQehYQJjvordXTlQ,25
|
5
|
-
pycares/errno.py,sha256=87ma2-f61ZbeU-9o5rUUscHsD4_i7aU5eyU2e7bzruQ,1141
|
6
|
-
pycares/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
7
|
-
pycares/utils.py,sha256=ZzjEdkygbU3_B1g4SVwlDS949PhttJG2gK735_6G5Ps,1344
|
8
|
-
pycares-4.6.0.dist-info/licenses/LICENSE,sha256=ZzIVbIpf5QFzaiLCDSjxhvH5EViAWLVO-W4ZgBzWvb8,1090
|
9
|
-
pycares-4.6.0.dist-info/METADATA,sha256=6ztMhOO8J7uN5j4lwhCs9YnOpryWYEsr-l_1NUl82tM,4622
|
10
|
-
pycares-4.6.0.dist-info/WHEEL,sha256=xlKrXzr_1K18tdVBurRRTekMRqWYEwTju41b3f8kJkQ,97
|
11
|
-
pycares-4.6.0.dist-info/top_level.txt,sha256=nIeo7L2XUVBQZO2YE6pH7tlKaBWTfmmRcXbqe_NWYCw,15
|
12
|
-
pycares-4.6.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|