pycares 4.5.0__cp311-cp311-win32.whl → 4.6.1__cp311-cp311-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 CHANGED
@@ -9,79 +9,68 @@ from . import errno
9
9
  from .utils import ascii_bytes, maybe_str, parse_name
10
10
  from ._version import __version__
11
11
 
12
- import collections.abc
13
12
  import socket
14
13
  import math
15
14
  import functools
16
15
  import sys
17
-
18
-
19
- exported_pycares_symbols = [
20
- # Flag values
21
- 'ARES_FLAG_USEVC',
22
- 'ARES_FLAG_PRIMARY',
23
- 'ARES_FLAG_IGNTC',
24
- 'ARES_FLAG_NORECURSE',
25
- 'ARES_FLAG_STAYOPEN',
26
- 'ARES_FLAG_NOSEARCH',
27
- 'ARES_FLAG_NOALIASES',
28
- 'ARES_FLAG_NOCHECKRESP',
29
-
30
- # Nameinfo flag values
31
- 'ARES_NI_NOFQDN',
32
- 'ARES_NI_NUMERICHOST',
33
- 'ARES_NI_NAMEREQD',
34
- 'ARES_NI_NUMERICSERV',
35
- 'ARES_NI_DGRAM',
36
- 'ARES_NI_TCP',
37
- 'ARES_NI_UDP',
38
- 'ARES_NI_SCTP',
39
- 'ARES_NI_DCCP',
40
- 'ARES_NI_NUMERICSCOPE',
41
- 'ARES_NI_LOOKUPHOST',
42
- 'ARES_NI_LOOKUPSERVICE',
43
- 'ARES_NI_IDN',
44
- 'ARES_NI_IDN_ALLOW_UNASSIGNED',
45
- 'ARES_NI_IDN_USE_STD3_ASCII_RULES',
46
-
47
- # Bad socket
48
- 'ARES_SOCKET_BAD',
49
- ]
50
-
51
- for symbol in exported_pycares_symbols:
52
- globals()[symbol] = getattr(_lib, symbol)
53
-
54
-
55
- exported_pycares_symbols_map = {
56
- # Query types
57
- "QUERY_TYPE_A" : "T_A",
58
- "QUERY_TYPE_AAAA" : "T_AAAA",
59
- "QUERY_TYPE_ANY" : "T_ANY",
60
- "QUERY_TYPE_CAA" : "T_CAA",
61
- "QUERY_TYPE_CNAME" : "T_CNAME",
62
- "QUERY_TYPE_MX" : "T_MX",
63
- "QUERY_TYPE_NAPTR" : "T_NAPTR",
64
- "QUERY_TYPE_NS" : "T_NS",
65
- "QUERY_TYPE_PTR" : "T_PTR",
66
- "QUERY_TYPE_SOA" : "T_SOA",
67
- "QUERY_TYPE_SRV" : "T_SRV",
68
- "QUERY_TYPE_TXT" : "T_TXT",
69
-
70
- # Query classes
71
- "QUERY_CLASS_IN" : "C_IN",
72
- "QUERY_CLASS_CHAOS": "C_CHAOS",
73
- "QUERY_CLASS_HS" : "C_HS",
74
- "QUERY_CLASS_NONE" :"C_NONE",
75
- "QUERY_CLASS_ANY" : "C_ANY",
76
- }
77
-
78
- for k, v in exported_pycares_symbols_map.items():
79
- globals()[k] = getattr(_lib, v)
80
-
81
-
82
- globals()['ARES_VERSION'] = maybe_str(_ffi.string(_lib.ares_version(_ffi.NULL)))
83
-
84
-
16
+ from collections.abc import Callable, Iterable
17
+ from typing import Any, Optional, Union
18
+
19
+ IP4 = tuple[str, int]
20
+ IP6 = tuple[str, int, int, int]
21
+
22
+ # Flag values
23
+ ARES_FLAG_USEVC = _lib.ARES_FLAG_USEVC
24
+ ARES_FLAG_PRIMARY = _lib.ARES_FLAG_PRIMARY
25
+ ARES_FLAG_IGNTC = _lib.ARES_FLAG_IGNTC
26
+ ARES_FLAG_NORECURSE = _lib.ARES_FLAG_NORECURSE
27
+ ARES_FLAG_STAYOPEN = _lib.ARES_FLAG_STAYOPEN
28
+ ARES_FLAG_NOSEARCH = _lib.ARES_FLAG_NOSEARCH
29
+ ARES_FLAG_NOALIASES = _lib.ARES_FLAG_NOALIASES
30
+ ARES_FLAG_NOCHECKRESP = _lib.ARES_FLAG_NOCHECKRESP
31
+
32
+ # Nameinfo flag values
33
+ ARES_NI_NOFQDN = _lib.ARES_NI_NOFQDN
34
+ ARES_NI_NUMERICHOST = _lib.ARES_NI_NUMERICHOST
35
+ ARES_NI_NAMEREQD = _lib.ARES_NI_NAMEREQD
36
+ ARES_NI_NUMERICSERV = _lib.ARES_NI_NUMERICSERV
37
+ ARES_NI_DGRAM = _lib.ARES_NI_DGRAM
38
+ ARES_NI_TCP = _lib.ARES_NI_TCP
39
+ ARES_NI_UDP = _lib.ARES_NI_UDP
40
+ ARES_NI_SCTP = _lib.ARES_NI_SCTP
41
+ ARES_NI_DCCP = _lib.ARES_NI_DCCP
42
+ ARES_NI_NUMERICSCOPE = _lib.ARES_NI_NUMERICSCOPE
43
+ ARES_NI_LOOKUPHOST = _lib.ARES_NI_LOOKUPHOST
44
+ ARES_NI_LOOKUPSERVICE = _lib.ARES_NI_LOOKUPSERVICE
45
+ ARES_NI_IDN = _lib.ARES_NI_IDN
46
+ ARES_NI_IDN_ALLOW_UNASSIGNED = _lib.ARES_NI_IDN_ALLOW_UNASSIGNED
47
+ ARES_NI_IDN_USE_STD3_ASCII_RULES = _lib.ARES_NI_IDN_USE_STD3_ASCII_RULES
48
+
49
+ # Bad socket
50
+ ARES_SOCKET_BAD = _lib.ARES_SOCKET_BAD
51
+
52
+ # Query types
53
+ QUERY_TYPE_A = _lib.T_A
54
+ QUERY_TYPE_AAAA = _lib.T_AAAA
55
+ QUERY_TYPE_ANY = _lib.T_ANY
56
+ QUERY_TYPE_CAA = _lib.T_CAA
57
+ QUERY_TYPE_CNAME = _lib.T_CNAME
58
+ QUERY_TYPE_MX = _lib.T_MX
59
+ QUERY_TYPE_NAPTR = _lib.T_NAPTR
60
+ QUERY_TYPE_NS = _lib.T_NS
61
+ QUERY_TYPE_PTR = _lib.T_PTR
62
+ QUERY_TYPE_SOA = _lib.T_SOA
63
+ QUERY_TYPE_SRV = _lib.T_SRV
64
+ QUERY_TYPE_TXT = _lib.T_TXT
65
+
66
+ # Query classes
67
+ QUERY_CLASS_IN = _lib.C_IN
68
+ QUERY_CLASS_CHAOS = _lib.C_CHAOS
69
+ QUERY_CLASS_HS = _lib.C_HS
70
+ QUERY_CLASS_NONE = _lib.C_NONE
71
+ QUERY_CLASS_ANY = _lib.C_ANY
72
+
73
+ ARES_VERSION = maybe_str(_ffi.string(_lib.ares_version(_ffi.NULL)))
85
74
  PYCARES_ADDRTTL_SIZE = 256
86
75
 
87
76
 
@@ -138,7 +127,7 @@ def _query_cb(arg, status, timeouts, abuf, alen):
138
127
  result = None
139
128
  break
140
129
  if r is not None:
141
- if isinstance(r, collections.abc.Iterable):
130
+ if isinstance(r, Iterable):
142
131
  result.extend(r)
143
132
  else:
144
133
  result.append(r)
@@ -328,22 +317,22 @@ class Channel:
328
317
  __qclasses__ = (_lib.C_IN, _lib.C_CHAOS, _lib.C_HS, _lib.C_NONE, _lib.C_ANY)
329
318
 
330
319
  def __init__(self,
331
- flags = None,
332
- timeout = None,
333
- tries = None,
334
- ndots = None,
335
- tcp_port = None,
336
- udp_port = None,
337
- servers = None,
338
- domains = None,
339
- lookups = None,
340
- sock_state_cb = None,
341
- socket_send_buffer_size = None,
342
- socket_receive_buffer_size = None,
343
- rotate = False,
344
- local_ip = None,
345
- local_dev = None,
346
- resolvconf_path = None):
320
+ flags: Optional[int] = None,
321
+ timeout: Optional[float] = None,
322
+ tries: Optional[int] = None,
323
+ ndots: Optional[int] = None,
324
+ tcp_port: Optional[int] = None,
325
+ udp_port: Optional[int] = None,
326
+ servers: Optional[Iterable[Union[str, bytes]]] = None,
327
+ domains: Optional[Iterable[Union[str, bytes]]] = None,
328
+ lookups: Union[str, bytes, None] = None,
329
+ sock_state_cb: Optional[Callable[[int, bool, bool], None]] = None,
330
+ socket_send_buffer_size: Optional[int] = None,
331
+ socket_receive_buffer_size: Optional[int] = None,
332
+ rotate: bool = False,
333
+ local_ip: Union[str, bytes, None] = None,
334
+ local_dev: Optional[str] = None,
335
+ resolvconf_path: Union[str, bytes, None] = None):
347
336
 
348
337
  channel = _ffi.new("ares_channel *")
349
338
  options = _ffi.new("struct ares_options *")
@@ -430,11 +419,11 @@ class Channel:
430
419
  if local_dev:
431
420
  self.set_local_dev(local_dev)
432
421
 
433
- def cancel(self):
422
+ def cancel(self) -> None:
434
423
  _lib.ares_cancel(self._channel[0])
435
424
 
436
425
  @property
437
- def servers(self):
426
+ def servers(self) -> list[str]:
438
427
  servers = _ffi.new("struct ares_addr_node **")
439
428
 
440
429
  r = _lib.ares_get_servers(self._channel[0], servers)
@@ -457,7 +446,7 @@ class Channel:
457
446
  return server_list
458
447
 
459
448
  @servers.setter
460
- def servers(self, servers):
449
+ def servers(self, servers: Iterable[Union[str, bytes]]) -> None:
461
450
  c = _ffi.new("struct ares_addr_node[%d]" % len(servers))
462
451
  for i, server in enumerate(servers):
463
452
  if _lib.ares_inet_pton(socket.AF_INET, ascii_bytes(server), _ffi.addressof(c[i].addr.addr4)) == 1:
@@ -487,7 +476,7 @@ class Channel:
487
476
 
488
477
  return rfds, wfds
489
478
 
490
- def process_fd(self, read_fd, write_fd):
479
+ def process_fd(self, read_fd: int, write_fd: int) -> None:
491
480
  _lib.ares_process_fd(self._channel[0], _ffi.cast("ares_socket_t", read_fd), _ffi.cast("ares_socket_t", write_fd))
492
481
 
493
482
  def timeout(self, t = None):
@@ -509,7 +498,7 @@ class Channel:
509
498
 
510
499
  return (tv.tv_sec + tv.tv_usec / 1000000.0)
511
500
 
512
- def gethostbyaddr(self, addr, callback):
501
+ def gethostbyaddr(self, addr: str, callback: Callable[[Any, int], None]) -> None:
513
502
  if not callable(callback):
514
503
  raise TypeError("a callable is required")
515
504
 
@@ -528,7 +517,7 @@ class Channel:
528
517
  _global_set.add(userdata)
529
518
  _lib.ares_gethostbyaddr(self._channel[0], address, _ffi.sizeof(address[0]), family, _lib._host_cb, userdata)
530
519
 
531
- def gethostbyname(self, name, family, callback):
520
+ def gethostbyname(self, name: str, family: socket.AddressFamily, callback: Callable[[Any, int], None]) -> None:
532
521
  if not callable(callback):
533
522
  raise TypeError("a callable is required")
534
523
 
@@ -536,7 +525,16 @@ class Channel:
536
525
  _global_set.add(userdata)
537
526
  _lib.ares_gethostbyname(self._channel[0], parse_name(name), family, _lib._host_cb, userdata)
538
527
 
539
- def getaddrinfo(self, host, port, callback, family=0, type=0, proto=0, flags=0):
528
+ def getaddrinfo(
529
+ self,
530
+ host: str,
531
+ port: Optional[int],
532
+ callback: Callable[[Any, int], None],
533
+ family: socket.AddressFamily = 0,
534
+ type: int = 0,
535
+ proto: int = 0,
536
+ flags: int = 0
537
+ ) -> None:
540
538
  if not callable(callback):
541
539
  raise TypeError("a callable is required")
542
540
 
@@ -557,7 +555,7 @@ class Channel:
557
555
  hints.ai_protocol = proto
558
556
  _lib.ares_getaddrinfo(self._channel[0], parse_name(host), service, hints, _lib._addrinfo_cb, userdata)
559
557
 
560
- def query(self, name, query_type, callback, query_class=None):
558
+ def query(self, name: str, query_type: str, callback: Callable[[Any, int], None], query_class: Optional[str] = None) -> None:
561
559
  self._do_query(_lib.ares_query, name, query_type, callback, query_class=query_class)
562
560
 
563
561
  def search(self, name, query_type, callback, query_class=None):
@@ -590,7 +588,7 @@ class Channel:
590
588
  else:
591
589
  raise ValueError("invalid IP address")
592
590
 
593
- def getnameinfo(self, address, flags, callback):
591
+ def getnameinfo(self, address: Union[IP4, IP6], flags: int, callback: Callable[[Any, int], None]) -> None:
594
592
  if not callable(callback):
595
593
  raise TypeError("a callable is required")
596
594
 
@@ -849,7 +847,62 @@ class ares_addrinfo_result(AresResult):
849
847
  _lib.ares_freeaddrinfo(ares_addrinfo)
850
848
 
851
849
 
850
+ __all__ = (
851
+ "ARES_FLAG_USEVC",
852
+ "ARES_FLAG_PRIMARY",
853
+ "ARES_FLAG_IGNTC",
854
+ "ARES_FLAG_NORECURSE",
855
+ "ARES_FLAG_STAYOPEN",
856
+ "ARES_FLAG_NOSEARCH",
857
+ "ARES_FLAG_NOALIASES",
858
+ "ARES_FLAG_NOCHECKRESP",
859
+
860
+ # Nameinfo flag values
861
+ "ARES_NI_NOFQDN",
862
+ "ARES_NI_NUMERICHOST",
863
+ "ARES_NI_NAMEREQD",
864
+ "ARES_NI_NUMERICSERV",
865
+ "ARES_NI_DGRAM",
866
+ "ARES_NI_TCP",
867
+ "ARES_NI_UDP",
868
+ "ARES_NI_SCTP",
869
+ "ARES_NI_DCCP",
870
+ "ARES_NI_NUMERICSCOPE",
871
+ "ARES_NI_LOOKUPHOST",
872
+ "ARES_NI_LOOKUPSERVICE",
873
+ "ARES_NI_IDN",
874
+ "ARES_NI_IDN_ALLOW_UNASSIGNED",
875
+ "ARES_NI_IDN_USE_STD3_ASCII_RULES",
876
+
877
+ # Bad socket
878
+ "ARES_SOCKET_BAD",
852
879
 
853
- __all__ = exported_pycares_symbols + list(exported_pycares_symbols_map.keys()) + ['AresError', 'Channel', 'errno', '__version__']
854
880
 
855
- del exported_pycares_symbols, exported_pycares_symbols_map
881
+ # Query types
882
+ "QUERY_TYPE_A",
883
+ "QUERY_TYPE_AAAA",
884
+ "QUERY_TYPE_ANY",
885
+ "QUERY_TYPE_CAA",
886
+ "QUERY_TYPE_CNAME",
887
+ "QUERY_TYPE_MX",
888
+ "QUERY_TYPE_NAPTR",
889
+ "QUERY_TYPE_NS",
890
+ "QUERY_TYPE_PTR",
891
+ "QUERY_TYPE_SOA",
892
+ "QUERY_TYPE_SRV",
893
+ "QUERY_TYPE_TXT",
894
+
895
+ # Query classes
896
+ "QUERY_CLASS_IN",
897
+ "QUERY_CLASS_CHAOS",
898
+ "QUERY_CLASS_HS",
899
+ "QUERY_CLASS_NONE",
900
+ "QUERY_CLASS_ANY",
901
+
902
+
903
+ "ARES_VERSION",
904
+ "AresError",
905
+ "Channel",
906
+ "errno",
907
+ "__version__"
908
+ )
pycares/_cares.pyd CHANGED
Binary file
pycares/_version.py CHANGED
@@ -1,2 +1,2 @@
1
1
 
2
- __version__ = '4.5.0'
2
+ __version__ = '4.6.1'
pycares/errno.py CHANGED
@@ -1,50 +1,69 @@
1
+ from typing import Union
1
2
 
2
3
  from ._cares import ffi as _ffi, lib as _lib
3
4
  from .utils import maybe_str
4
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
5
33
 
6
- exported_pycares_symbols = [
7
- 'ARES_SUCCESS',
34
+ errorcode = {
35
+ ARES_SUCCESS: "ARES_SUCCESS",
8
36
  # error codes
9
- 'ARES_ENODATA',
10
- 'ARES_EFORMERR',
11
- 'ARES_ESERVFAIL',
12
- 'ARES_ENOTFOUND',
13
- 'ARES_ENOTIMP',
14
- 'ARES_EREFUSED',
15
- 'ARES_EBADQUERY',
16
- 'ARES_EBADNAME',
17
- 'ARES_EBADFAMILY',
18
- 'ARES_EBADRESP',
19
- 'ARES_ECONNREFUSED',
20
- 'ARES_ETIMEOUT',
21
- 'ARES_EOF',
22
- 'ARES_EFILE',
23
- 'ARES_ENOMEM',
24
- 'ARES_EDESTRUCTION',
25
- 'ARES_EBADSTR',
26
- 'ARES_EBADFLAGS',
27
- 'ARES_ENONAME',
28
- 'ARES_EBADHINTS',
29
- 'ARES_ENOTINITIALIZED',
30
- 'ARES_ELOADIPHLPAPI',
31
- 'ARES_EADDRGETNETWORKPARAMS',
32
- 'ARES_ECANCELLED',
33
- 'ARES_ESERVICE'
34
- ]
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
+ }
35
63
 
36
- errorcode = {}
37
64
 
38
- for symbol in exported_pycares_symbols:
39
- value = getattr(_lib, symbol)
40
- globals()[symbol] = value
41
- globals()["errorcode"][value] = symbol
42
-
43
-
44
- def strerror(code):
65
+ def strerror(code: int) -> Union[str, bytes]:
45
66
  return maybe_str(_ffi.string(_lib.ares_strerror(code)))
46
67
 
47
68
 
48
- __all__ = exported_pycares_symbols + ['errorcode', 'strerror']
49
-
50
- del exported_pycares_symbols
69
+ __all__ = ("errorcode", "strerror", *errorcode.values())
pycares/py.typed ADDED
File without changes
pycares/utils.py CHANGED
@@ -1,4 +1,6 @@
1
1
 
2
+ from typing import Union
3
+
2
4
  try:
3
5
  import idna as idna2008
4
6
  except ImportError:
@@ -24,25 +26,20 @@ def maybe_str(data):
24
26
  raise TypeError('only str (ascii encoding) and bytes are supported')
25
27
 
26
28
 
27
- def is_all_ascii(text):
28
- for c in text:
29
- if ord(c) > 0x7f:
30
- return False
31
- return True
32
-
33
- def parse_name_idna2008(name):
29
+ def parse_name_idna2008(name: str) -> str:
34
30
  parts = name.split('.')
35
31
  r = []
36
32
  for part in parts:
37
- if is_all_ascii(part):
33
+ if part.isascii():
38
34
  r.append(part.encode('ascii'))
39
35
  else:
40
36
  r.append(idna2008.encode(part))
41
37
  return b'.'.join(r)
42
38
 
43
- def parse_name(name):
39
+
40
+ def parse_name(name: Union[str, bytes]) -> bytes:
44
41
  if isinstance(name, str):
45
- if is_all_ascii(name):
42
+ if name.isascii():
46
43
  return name.encode('ascii')
47
44
  if idna2008 is not None:
48
45
  return parse_name_idna2008(name)
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: pycares
3
- Version: 4.5.0
3
+ Version: 4.6.1
4
4
  Summary: Python interface for c-ares
5
5
  Home-page: http://github.com/saghul/pycares
6
6
  Author: Saúl Ibarra Corretgé
@@ -28,6 +28,19 @@ License-File: LICENSE
28
28
  Requires-Dist: cffi>=1.5.0
29
29
  Provides-Extra: idna
30
30
  Requires-Dist: idna>=2.1; extra == "idna"
31
+ Dynamic: author
32
+ Dynamic: author-email
33
+ Dynamic: classifier
34
+ Dynamic: description
35
+ Dynamic: description-content-type
36
+ Dynamic: home-page
37
+ Dynamic: license
38
+ Dynamic: license-file
39
+ Dynamic: platform
40
+ Dynamic: provides-extra
41
+ Dynamic: requires-dist
42
+ Dynamic: requires-python
43
+ Dynamic: summary
31
44
 
32
45
  Looking for new maintainers
33
46
  ===========================
@@ -0,0 +1,12 @@
1
+ pycares/__init__.py,sha256=FUE_1XczxLUO4f9jWARbumO4oAWM4eF1UBS9Cs0EiQw,32626
2
+ pycares/__main__.py,sha256=-WwwGX4NQ8hpOqrNuCy59quCQJt7IAwQXdQjga5s4WA,2880
3
+ pycares/_cares.pyd,sha256=xiz3F3wqm4YVwvfTYh-vzpkNBGYNyM10HPTc3GDNVSk,106496
4
+ pycares/_version.py,sha256=nMxGyGYNJ1000wnb1Janrs5k6aKCiMEh6a7VTHwXuaI,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.6.1.dist-info/licenses/LICENSE,sha256=ZzIVbIpf5QFzaiLCDSjxhvH5EViAWLVO-W4ZgBzWvb8,1090
9
+ pycares-4.6.1.dist-info/METADATA,sha256=RA-2SXrzVC5VSMorEwbeyn1F8QTt2tpHQxwVsh1plp8,4622
10
+ pycares-4.6.1.dist-info/WHEEL,sha256=DApSp2fVBcwjixy5fByHmy6Cqp6XJz36CWw6PPmLE_s,97
11
+ pycares-4.6.1.dist-info/top_level.txt,sha256=nIeo7L2XUVBQZO2YE6pH7tlKaBWTfmmRcXbqe_NWYCw,15
12
+ pycares-4.6.1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.6.0)
2
+ Generator: setuptools (78.1.1)
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp311-cp311-win32
5
5
 
@@ -1,11 +0,0 @@
1
- pycares/__init__.py,sha256=EIkDaFs0MmRAYi6Ce2VzcA3H14-25zPyiD_6TfSBCSQ,30609
2
- pycares/__main__.py,sha256=-WwwGX4NQ8hpOqrNuCy59quCQJt7IAwQXdQjga5s4WA,2880
3
- pycares/_cares.pyd,sha256=5_CHq5NwU8s2RAS5dNVhB0W-Ur0iXS_PFHJM80kubgY,106496
4
- pycares/_version.py,sha256=LndxDVTCo2jR91ipCX7gSKfdLq7B21t2ofpRE-CSa_E,25
5
- pycares/errno.py,sha256=cForwpErZsnPUQYttEgUjWZgi37cyrOGCWxUcO76HUE,1089
6
- pycares/utils.py,sha256=lKohvVcx0fjDcbkK0hGgvgY5WWnshj1Snxy-gGRbDNo,1399
7
- pycares-4.5.0.dist-info/LICENSE,sha256=ZzIVbIpf5QFzaiLCDSjxhvH5EViAWLVO-W4ZgBzWvb8,1090
8
- pycares-4.5.0.dist-info/METADATA,sha256=2zq6M_4O0AU22YCieCf9t1DXPLZzHvlce5fYCA1JFYs,4331
9
- pycares-4.5.0.dist-info/WHEEL,sha256=CUEEiZcEHBQHmNAhE1m6c3jIKGBZTzLJKgzKvvbu8OI,97
10
- pycares-4.5.0.dist-info/top_level.txt,sha256=nIeo7L2XUVBQZO2YE6pH7tlKaBWTfmmRcXbqe_NWYCw,15
11
- pycares-4.5.0.dist-info/RECORD,,