Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.10/site-packages/zmq/__init__.py: 49%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

43 statements  

1"""Python bindings for 0MQ""" 

2 

3# Copyright (C) PyZMQ Developers 

4# Distributed under the terms of the Modified BSD License. 

5 

6from __future__ import annotations 

7 

8import os 

9import sys 

10from contextlib import contextmanager 

11 

12 

13@contextmanager 

14def _libs_on_path(): 

15 """context manager for libs directory on $PATH 

16 

17 Works around mysterious issue where os.add_dll_directory 

18 does not resolve imports (conda-forge Python >= 3.8) 

19 """ 

20 

21 if not sys.platform.startswith("win"): 

22 yield 

23 return 

24 

25 libs_dir = os.path.abspath( 

26 os.path.join( 

27 os.path.dirname(__file__), 

28 os.pardir, 

29 "pyzmq.libs", 

30 ) 

31 ) 

32 if not os.path.exists(libs_dir): 

33 # no bundled libs 

34 yield 

35 return 

36 

37 path_before = os.environ.get("PATH") 

38 try: 

39 os.environ["PATH"] = os.pathsep.join([path_before or "", libs_dir]) 

40 yield 

41 finally: 

42 if path_before is None: 

43 os.environ.pop("PATH") 

44 else: 

45 os.environ["PATH"] = path_before 

46 

47 

48# zmq top-level imports 

49 

50# workaround for Windows 

51with _libs_on_path(): 

52 from zmq import backend 

53 

54from . import constants # noqa 

55from .constants import * # noqa 

56from zmq.backend import * # noqa 

57from zmq import sugar 

58from zmq.sugar import * # noqa 

59 

60 

61def get_includes(): 

62 """Return a list of directories to include for linking against pyzmq with cython.""" 

63 from os.path import abspath, dirname, exists, join, pardir 

64 

65 base = dirname(__file__) 

66 parent = abspath(join(base, pardir)) 

67 includes = [parent] + [join(parent, base, subdir) for subdir in ('utils',)] 

68 if exists(join(parent, base, 'include')): 

69 includes.append(join(parent, base, 'include')) 

70 return includes 

71 

72 

73def get_library_dirs(): 

74 """Return a list of directories used to link against pyzmq's bundled libzmq.""" 

75 from os.path import abspath, dirname, join, pardir 

76 

77 base = dirname(__file__) 

78 parent = abspath(join(base, pardir)) 

79 return [join(parent, base)] 

80 

81 

82COPY_THRESHOLD = 65536 

83DRAFT_API = backend.has("draft") 

84 

85__all__ = ( 

86 [ 

87 'get_includes', 

88 'COPY_THRESHOLD', 

89 'DRAFT_API', 

90 ] 

91 + constants.__all__ 

92 + sugar.__all__ 

93 + backend.__all__ 

94)