opensafely 2.0.1__tar.gz → 2.0.2__tar.gz

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.
Files changed (286) hide show
  1. {opensafely-2.0.1 → opensafely-2.0.2}/PKG-INFO +4 -4
  2. opensafely-2.0.2/opensafely/VERSION +1 -0
  3. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/__init__.py +6 -6
  4. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/certifi/__init__.py +1 -1
  5. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/certifi/cacert.pem +213 -992
  6. opensafely-2.0.2/opensafely/_vendor/charset_normalizer/api.py +1065 -0
  7. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/charset_normalizer/cd.py +152 -80
  8. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/charset_normalizer/cli/__main__.py +34 -52
  9. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/charset_normalizer/constant.py +158 -118
  10. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/charset_normalizer/legacy.py +3 -4
  11. opensafely-2.0.2/opensafely/_vendor/charset_normalizer/md.py +1002 -0
  12. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/charset_normalizer/models.py +22 -12
  13. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/charset_normalizer/utils.py +136 -95
  14. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/charset_normalizer/version.py +1 -1
  15. opensafely-2.0.2/opensafely/_vendor/idna/__main__.py +6 -0
  16. opensafely-2.0.2/opensafely/_vendor/idna/cli.py +128 -0
  17. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/idna/codec.py +51 -14
  18. opensafely-2.0.2/opensafely/_vendor/idna/compat.py +41 -0
  19. opensafely-2.0.2/opensafely/_vendor/idna/core.py +648 -0
  20. opensafely-2.0.2/opensafely/_vendor/idna/idnadata.py +1897 -0
  21. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/idna/intranges.py +5 -7
  22. opensafely-2.0.2/opensafely/_vendor/idna/package_data.py +1 -0
  23. opensafely-2.0.2/opensafely/_vendor/idna/uts46data.py +16896 -0
  24. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/opentelemetry/_logs/__init__.py +2 -14
  25. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/opentelemetry/_logs/_internal/__init__.py +204 -50
  26. opensafely-2.0.2/opensafely/_vendor/opentelemetry/_logs/severity/__init__.py +44 -0
  27. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/opentelemetry/attributes/__init__.py +114 -73
  28. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/opentelemetry/baggage/__init__.py +8 -21
  29. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/opentelemetry/baggage/propagation/__init__.py +85 -46
  30. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/opentelemetry/context/__init__.py +19 -38
  31. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/opentelemetry/context/context.py +23 -14
  32. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/opentelemetry/context/contextvars_context.py +1 -12
  33. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/opentelemetry/environment_variables/__init__.py +1 -17
  34. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/opentelemetry/metrics/__init__.py +1 -12
  35. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/opentelemetry/metrics/_internal/__init__.py +51 -63
  36. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/opentelemetry/metrics/_internal/instrument.py +100 -75
  37. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/opentelemetry/metrics/_internal/observation.py +6 -18
  38. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/opentelemetry/propagate/__init__.py +57 -50
  39. opensafely-2.0.2/opensafely/_vendor/opentelemetry/propagators/_envcarrier.py +98 -0
  40. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/opentelemetry/propagators/composite.py +10 -19
  41. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/opentelemetry/propagators/textmap.py +15 -29
  42. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/opentelemetry/trace/__init__.py +68 -47
  43. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/opentelemetry/trace/propagation/__init__.py +3 -17
  44. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/opentelemetry/trace/propagation/tracecontext.py +4 -16
  45. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/opentelemetry/trace/span.py +58 -48
  46. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/opentelemetry/trace/status.py +3 -15
  47. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/opentelemetry/util/_decorator.py +8 -18
  48. opensafely-2.0.2/opensafely/_vendor/opentelemetry/util/_importlib_metadata.py +63 -0
  49. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/opentelemetry/util/_once.py +2 -13
  50. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/opentelemetry/util/_providers.py +6 -14
  51. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/opentelemetry/util/re.py +8 -17
  52. opensafely-2.0.2/opensafely/_vendor/opentelemetry/util/types.py +46 -0
  53. opensafely-2.0.2/opensafely/_vendor/opentelemetry/version/__init__.py +4 -0
  54. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/requests/__init__.py +57 -22
  55. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/requests/__version__.py +2 -2
  56. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/requests/_internal_utils.py +7 -6
  57. opensafely-2.0.2/opensafely/_vendor/requests/_types.py +183 -0
  58. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/requests/adapters.py +124 -95
  59. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/requests/api.py +31 -8
  60. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/requests/auth.py +84 -44
  61. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/requests/certs.py +1 -0
  62. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/requests/compat.py +12 -5
  63. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/requests/cookies.py +143 -79
  64. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/requests/exceptions.py +16 -5
  65. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/requests/help.py +15 -15
  66. opensafely-2.0.2/opensafely/_vendor/requests/hooks.py +48 -0
  67. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/requests/models.py +270 -129
  68. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/requests/sessions.py +168 -79
  69. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/requests/status_codes.py +2 -2
  70. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/requests/structures.py +51 -20
  71. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/requests/utils.py +177 -108
  72. opensafely-2.0.2/opensafely/_vendor/typing_extensions.py +4422 -0
  73. opensafely-2.0.2/opensafely/_vendor/typing_extensions.pyi +1 -0
  74. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/urllib3/__init__.py +62 -0
  75. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/urllib3/_base_connection.py +14 -19
  76. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/urllib3/_collections.py +19 -16
  77. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/urllib3/_request_methods.py +64 -3
  78. opensafely-2.0.2/opensafely/_vendor/urllib3/_version.py +24 -0
  79. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/urllib3/connection.py +268 -74
  80. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/urllib3/connectionpool.py +39 -30
  81. opensafely-2.0.2/opensafely/_vendor/urllib3/contrib/emscripten/__init__.py +17 -0
  82. opensafely-2.0.2/opensafely/_vendor/urllib3/contrib/emscripten/connection.py +260 -0
  83. opensafely-2.0.2/opensafely/_vendor/urllib3/contrib/emscripten/fetch.py +726 -0
  84. opensafely-2.0.2/opensafely/_vendor/urllib3/contrib/emscripten/request.py +22 -0
  85. opensafely-2.0.2/opensafely/_vendor/urllib3/contrib/emscripten/response.py +281 -0
  86. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/urllib3/contrib/pyopenssl.py +29 -14
  87. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/urllib3/contrib/socks.py +4 -6
  88. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/urllib3/exceptions.py +28 -11
  89. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/urllib3/fields.py +18 -22
  90. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/urllib3/filepost.py +1 -1
  91. opensafely-2.0.2/opensafely/_vendor/urllib3/http2/__init__.py +53 -0
  92. opensafely-2.0.2/opensafely/_vendor/urllib3/http2/connection.py +356 -0
  93. opensafely-2.0.2/opensafely/_vendor/urllib3/http2/probe.py +87 -0
  94. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/urllib3/poolmanager.py +28 -13
  95. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/urllib3/response.py +480 -117
  96. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/urllib3/util/connection.py +1 -1
  97. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/urllib3/util/request.py +20 -13
  98. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/urllib3/util/retry.py +31 -3
  99. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/urllib3/util/ssl_.py +59 -96
  100. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/urllib3/util/ssl_match_hostname.py +5 -11
  101. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/urllib3/util/ssltransport.py +8 -17
  102. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/urllib3/util/timeout.py +0 -4
  103. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/urllib3/util/url.py +2 -4
  104. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/clean.py +1 -1
  105. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/codelists.py +6 -3
  106. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/execute.py +4 -2
  107. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/info.py +4 -1
  108. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/jobrunner/cli/local_run.py +9 -7
  109. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/jobrunner/config.py +7 -8
  110. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/jobrunner/executors/local.py +32 -21
  111. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/jobrunner/executors/volumes.py +2 -10
  112. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/jobrunner/job_executor.py +1 -4
  113. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/jobrunner/lib/__init__.py +3 -3
  114. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/jobrunner/lib/docker.py +1 -1
  115. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/jobrunner/lib/git.py +1 -1
  116. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/jobrunner/lib/string_utils.py +1 -2
  117. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/jobrunner/lib/subprocess_utils.py +2 -1
  118. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/jobrunner/lib/yaml_utils.py +1 -1
  119. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/jobrunner/models.py +9 -5
  120. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/jobrunner/reusable_actions.py +1 -1
  121. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/jobrunner/run.py +30 -26
  122. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/jobrunner/tracing.py +4 -2
  123. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/launch.py +10 -10
  124. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/pull.py +9 -7
  125. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/unzip.py +6 -8
  126. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/utils.py +3 -3
  127. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely.egg-info/PKG-INFO +4 -4
  128. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely.egg-info/SOURCES.txt +15 -35
  129. opensafely-2.0.2/opensafely.egg-info/requires.txt +5 -0
  130. {opensafely-2.0.1 → opensafely-2.0.2}/pyproject.toml +15 -5
  131. {opensafely-2.0.1 → opensafely-2.0.2}/tests/test_codelists.py +3 -1
  132. {opensafely-2.0.1 → opensafely-2.0.2}/tests/test_info.py +1 -1
  133. {opensafely-2.0.1 → opensafely-2.0.2}/tests/test_init.py +9 -3
  134. {opensafely-2.0.1 → opensafely-2.0.2}/tests/test_packaging.py +4 -6
  135. {opensafely-2.0.1 → opensafely-2.0.2}/tests/test_pull.py +11 -13
  136. {opensafely-2.0.1 → opensafely-2.0.2}/tests/test_upgrade.py +2 -2
  137. opensafely-2.0.1/opensafely/VERSION +0 -1
  138. opensafely-2.0.1/opensafely/_vendor/charset_normalizer/api.py +0 -669
  139. opensafely-2.0.1/opensafely/_vendor/charset_normalizer/md.py +0 -635
  140. opensafely-2.0.1/opensafely/_vendor/deprecated/__init__.py +0 -15
  141. opensafely-2.0.1/opensafely/_vendor/deprecated/classic.py +0 -301
  142. opensafely-2.0.1/opensafely/_vendor/deprecated/sphinx.py +0 -281
  143. opensafely-2.0.1/opensafely/_vendor/deprecated.pyi +0 -1
  144. opensafely-2.0.1/opensafely/_vendor/idna/compat.py +0 -15
  145. opensafely-2.0.1/opensafely/_vendor/idna/core.py +0 -437
  146. opensafely-2.0.1/opensafely/_vendor/idna/idnadata.py +0 -4243
  147. opensafely-2.0.1/opensafely/_vendor/idna/package_data.py +0 -1
  148. opensafely-2.0.1/opensafely/_vendor/idna/uts46data.py +0 -8681
  149. opensafely-2.0.1/opensafely/_vendor/importlib_metadata/__init__.py +0 -1132
  150. opensafely-2.0.1/opensafely/_vendor/importlib_metadata/_adapters.py +0 -83
  151. opensafely-2.0.1/opensafely/_vendor/importlib_metadata/_collections.py +0 -30
  152. opensafely-2.0.1/opensafely/_vendor/importlib_metadata/_compat.py +0 -56
  153. opensafely-2.0.1/opensafely/_vendor/importlib_metadata/_functools.py +0 -104
  154. opensafely-2.0.1/opensafely/_vendor/importlib_metadata/_itertools.py +0 -171
  155. opensafely-2.0.1/opensafely/_vendor/importlib_metadata/_meta.py +0 -75
  156. opensafely-2.0.1/opensafely/_vendor/importlib_metadata/_text.py +0 -99
  157. opensafely-2.0.1/opensafely/_vendor/importlib_metadata/compat/py311.py +0 -22
  158. opensafely-2.0.1/opensafely/_vendor/importlib_metadata/compat/py39.py +0 -36
  159. opensafely-2.0.1/opensafely/_vendor/importlib_metadata/diagnose.py +0 -21
  160. opensafely-2.0.1/opensafely/_vendor/opentelemetry/_events/__init__.py +0 -224
  161. opensafely-2.0.1/opensafely/_vendor/opentelemetry/_logs/severity/__init__.py +0 -115
  162. opensafely-2.0.1/opensafely/_vendor/opentelemetry/util/_importlib_metadata.py +0 -37
  163. opensafely-2.0.1/opensafely/_vendor/opentelemetry/util/types.py +0 -59
  164. opensafely-2.0.1/opensafely/_vendor/opentelemetry/version/__init__.py +0 -15
  165. opensafely-2.0.1/opensafely/_vendor/requests/hooks.py +0 -33
  166. opensafely-2.0.1/opensafely/_vendor/requests.pyi +0 -1
  167. opensafely-2.0.1/opensafely/_vendor/ruyaml/py.typed +0 -0
  168. opensafely-2.0.1/opensafely/_vendor/urllib3/_version.py +0 -4
  169. opensafely-2.0.1/opensafely/_vendor/wrapt/__init__.py +0 -30
  170. opensafely-2.0.1/opensafely/_vendor/wrapt/__wrapt__.py +0 -14
  171. opensafely-2.0.1/opensafely/_vendor/wrapt/arguments.py +0 -38
  172. opensafely-2.0.1/opensafely/_vendor/wrapt/decorators.py +0 -541
  173. opensafely-2.0.1/opensafely/_vendor/wrapt/importer.py +0 -295
  174. opensafely-2.0.1/opensafely/_vendor/wrapt/patches.py +0 -141
  175. opensafely-2.0.1/opensafely/_vendor/wrapt/weakrefs.py +0 -98
  176. opensafely-2.0.1/opensafely/_vendor/wrapt/wrappers.py +0 -821
  177. opensafely-2.0.1/opensafely/_vendor/wrapt.pyi +0 -1
  178. opensafely-2.0.1/opensafely/_vendor/zipp/__init__.py +0 -452
  179. opensafely-2.0.1/opensafely/_vendor/zipp/compat/overlay.py +0 -37
  180. opensafely-2.0.1/opensafely/_vendor/zipp/compat/py310.py +0 -13
  181. opensafely-2.0.1/opensafely/_vendor/zipp/glob.py +0 -114
  182. opensafely-2.0.1/opensafely/_vendor/zipp.pyi +0 -1
  183. opensafely-2.0.1/opensafely/jobrunner/__init__.py +0 -0
  184. opensafely-2.0.1/opensafely/jobrunner/cli/__init__.py +0 -0
  185. opensafely-2.0.1/opensafely.egg-info/requires.txt +0 -5
  186. {opensafely-2.0.1 → opensafely-2.0.2}/LICENSE +0 -0
  187. {opensafely-2.0.1 → opensafely-2.0.2}/README.md +0 -0
  188. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/certifi/__main__.py +0 -0
  189. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/certifi/core.py +0 -0
  190. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/certifi/py.typed +0 -0
  191. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/charset_normalizer/__init__.py +0 -0
  192. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/charset_normalizer/__main__.py +0 -0
  193. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/charset_normalizer/cli/__init__.py +0 -0
  194. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/charset_normalizer/py.typed +0 -0
  195. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/distro/__init__.py +0 -0
  196. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/distro/__main__.py +0 -0
  197. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/distro/distro.py +0 -0
  198. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/distro/py.typed +0 -0
  199. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/idna/__init__.py +0 -0
  200. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/idna/py.typed +0 -0
  201. {opensafely-2.0.1/opensafely/_vendor/importlib_metadata → opensafely-2.0.2/opensafely/_vendor/opentelemetry/_logs}/py.typed +0 -0
  202. {opensafely-2.0.1/opensafely/_vendor/opentelemetry/_events → opensafely-2.0.2/opensafely/_vendor/opentelemetry/attributes}/py.typed +0 -0
  203. {opensafely-2.0.1/opensafely/_vendor/opentelemetry/_logs → opensafely-2.0.2/opensafely/_vendor/opentelemetry/baggage}/py.typed +0 -0
  204. {opensafely-2.0.1/opensafely/_vendor/opentelemetry/attributes → opensafely-2.0.2/opensafely/_vendor/opentelemetry/context}/py.typed +0 -0
  205. {opensafely-2.0.1/opensafely/_vendor/opentelemetry/baggage → opensafely-2.0.2/opensafely/_vendor/opentelemetry/environment_variables}/py.typed +0 -0
  206. {opensafely-2.0.1/opensafely/_vendor/opentelemetry/context → opensafely-2.0.2/opensafely/_vendor/opentelemetry/metrics}/py.typed +0 -0
  207. {opensafely-2.0.1/opensafely/_vendor/opentelemetry/environment_variables → opensafely-2.0.2/opensafely/_vendor/opentelemetry/propagate}/py.typed +0 -0
  208. {opensafely-2.0.1/opensafely/_vendor/opentelemetry/metrics → opensafely-2.0.2/opensafely/_vendor/opentelemetry/propagators}/py.typed +0 -0
  209. {opensafely-2.0.1/opensafely/_vendor/opentelemetry/propagate → opensafely-2.0.2/opensafely/_vendor/opentelemetry}/py.typed +0 -0
  210. {opensafely-2.0.1/opensafely/_vendor/opentelemetry/propagators → opensafely-2.0.2/opensafely/_vendor/opentelemetry/trace}/py.typed +0 -0
  211. {opensafely-2.0.1/opensafely/_vendor/opentelemetry → opensafely-2.0.2/opensafely/_vendor/opentelemetry/util}/py.typed +0 -0
  212. {opensafely-2.0.1/opensafely/_vendor/opentelemetry/trace → opensafely-2.0.2/opensafely/_vendor/opentelemetry/version}/py.typed +0 -0
  213. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/pipeline/__init__.py +0 -0
  214. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/pipeline/__main__.py +0 -0
  215. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/pipeline/constants.py +0 -0
  216. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/pipeline/exceptions.py +0 -0
  217. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/pipeline/features.py +0 -0
  218. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/pipeline/legacy.py +0 -0
  219. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/pipeline/loading.py +0 -0
  220. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/pipeline/main.py +0 -0
  221. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/pipeline/models.py +0 -0
  222. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/pipeline/outputs.py +0 -0
  223. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/pipeline/validation.py +0 -0
  224. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/pipeline.pyi +0 -0
  225. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/requests/packages.py +0 -0
  226. {opensafely-2.0.1/opensafely/_vendor/opentelemetry/util → opensafely-2.0.2/opensafely/_vendor/requests}/py.typed +0 -0
  227. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/ruyaml/__init__.py +0 -0
  228. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/ruyaml/anchor.py +0 -0
  229. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/ruyaml/comments.py +0 -0
  230. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/ruyaml/compat.py +0 -0
  231. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/ruyaml/composer.py +0 -0
  232. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/ruyaml/configobjwalker.py +0 -0
  233. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/ruyaml/constructor.py +0 -0
  234. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/ruyaml/cyaml.py +0 -0
  235. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/ruyaml/dumper.py +0 -0
  236. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/ruyaml/emitter.py +0 -0
  237. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/ruyaml/error.py +0 -0
  238. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/ruyaml/events.py +0 -0
  239. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/ruyaml/loader.py +0 -0
  240. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/ruyaml/main.py +0 -0
  241. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/ruyaml/nodes.py +0 -0
  242. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/ruyaml/parser.py +0 -0
  243. {opensafely-2.0.1/opensafely/_vendor/opentelemetry/version → opensafely-2.0.2/opensafely/_vendor/ruyaml}/py.typed +0 -0
  244. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/ruyaml/reader.py +0 -0
  245. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/ruyaml/representer.py +0 -0
  246. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/ruyaml/resolver.py +0 -0
  247. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/ruyaml/scalarbool.py +0 -0
  248. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/ruyaml/scalarfloat.py +0 -0
  249. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/ruyaml/scalarint.py +0 -0
  250. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/ruyaml/scalarstring.py +0 -0
  251. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/ruyaml/scanner.py +0 -0
  252. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/ruyaml/serializer.py +0 -0
  253. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/ruyaml/timestamp.py +0 -0
  254. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/ruyaml/tokens.py +0 -0
  255. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/ruyaml/util.py +0 -0
  256. {opensafely-2.0.1/opensafely/_vendor/importlib_metadata/compat → opensafely-2.0.2/opensafely/_vendor/urllib3/contrib}/__init__.py +0 -0
  257. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/urllib3/py.typed +0 -0
  258. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/urllib3/util/__init__.py +0 -0
  259. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/urllib3/util/proxy.py +0 -0
  260. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/urllib3/util/response.py +0 -0
  261. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/urllib3/util/util.py +0 -0
  262. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/_vendor/urllib3/util/wait.py +0 -0
  263. {opensafely-2.0.1/opensafely/_vendor/urllib3/contrib → opensafely-2.0.2/opensafely/jobrunner}/__init__.py +0 -0
  264. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/jobrunner/actions.py +0 -0
  265. {opensafely-2.0.1/opensafely/_vendor/zipp/compat → opensafely-2.0.2/opensafely/jobrunner/cli}/__init__.py +0 -0
  266. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/jobrunner/cli/migrate.py +0 -0
  267. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/jobrunner/create_or_update_jobs.py +0 -0
  268. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/jobrunner/executors/__init__.py +0 -0
  269. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/jobrunner/lib/database.py +0 -0
  270. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/jobrunner/lib/github_validators.py +0 -0
  271. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/jobrunner/lib/log_utils.py +0 -0
  272. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/jobrunner/lib/lru_dict.py +0 -0
  273. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/jobrunner/lib/path_utils.py +0 -0
  274. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/jobrunner/queries.py +0 -0
  275. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/jupyter.py +0 -0
  276. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/rstudio.py +0 -0
  277. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely/upgrade.py +0 -0
  278. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely.egg-info/dependency_links.txt +0 -0
  279. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely.egg-info/entry_points.txt +0 -0
  280. {opensafely-2.0.1 → opensafely-2.0.2}/opensafely.egg-info/top_level.txt +0 -0
  281. {opensafely-2.0.1 → opensafely-2.0.2}/setup.cfg +0 -0
  282. {opensafely-2.0.1 → opensafely-2.0.2}/tests/test_clean.py +0 -0
  283. {opensafely-2.0.1 → opensafely-2.0.2}/tests/test_execute.py +0 -0
  284. {opensafely-2.0.1 → opensafely-2.0.2}/tests/test_launch.py +0 -0
  285. {opensafely-2.0.1 → opensafely-2.0.2}/tests/test_unzip.py +0 -0
  286. {opensafely-2.0.1 → opensafely-2.0.2}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: opensafely
3
- Version: 2.0.1
3
+ Version: 2.0.2
4
4
  Summary: Command line tool for running OpenSAFELY studies locally.
5
5
  Author-email: OpenSAFELY <tech@opensafely.org>
6
6
  License: GPL-3.0
@@ -23,9 +23,9 @@ Requires-Python: >=3.10
23
23
  Description-Content-Type: text/markdown
24
24
  License-File: LICENSE
25
25
  Provides-Extra: tracing
26
- Requires-Dist: opentelemetry-api==1.33.1; extra == "tracing"
27
- Requires-Dist: opentelemetry-sdk==1.33.1; extra == "tracing"
28
- Requires-Dist: opentelemetry-exporter-otlp-proto-http==1.15.0; extra == "tracing"
26
+ Requires-Dist: opentelemetry-api>=1.44.0; extra == "tracing"
27
+ Requires-Dist: opentelemetry-sdk>=1.44.0; extra == "tracing"
28
+ Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.44.0; extra == "tracing"
29
29
  Dynamic: license-file
30
30
 
31
31
  # OpenSAFELY Command Line Interface
@@ -0,0 +1 @@
1
+ v2.0.2
@@ -4,10 +4,10 @@ import os
4
4
  import sys
5
5
  import tempfile
6
6
  import warnings
7
- from datetime import datetime, timedelta
7
+ from datetime import datetime, timedelta, timezone
8
8
  from pathlib import Path
9
9
 
10
- from opensafely import ( # noqa: E402
10
+ from opensafely import (
11
11
  clean,
12
12
  codelists,
13
13
  execute,
@@ -19,7 +19,7 @@ from opensafely import ( # noqa: E402
19
19
  unzip,
20
20
  upgrade,
21
21
  )
22
- from opensafely.jobrunner.cli import local_run # noqa: E402
22
+ from opensafely.jobrunner.cli import local_run
23
23
 
24
24
 
25
25
  # quieten unneeded loggers
@@ -56,7 +56,7 @@ def should_version_check():
56
56
  if not VERSION_FILE.exists():
57
57
  return True
58
58
 
59
- four_hours_ago = datetime.utcnow() - timedelta(hours=4)
59
+ four_hours_ago = datetime.now(tz=timezone.utc) - timedelta(hours=4)
60
60
 
61
61
  return VERSION_FILE.stat().st_mtime < four_hours_ago.timestamp()
62
62
 
@@ -119,7 +119,7 @@ def warn_if_updates_needed(argv):
119
119
  )
120
120
  # if we're out of date, don't warn the user about out of date images as well
121
121
  return
122
- except Exception:
122
+ except Exception: # noqa: S110
123
123
  pass
124
124
 
125
125
  # check for out of date images unless we are updating images.
@@ -134,7 +134,7 @@ def warn_if_updates_needed(argv):
134
134
  file=sys.stderr,
135
135
  )
136
136
 
137
- except Exception:
137
+ except Exception: # noqa: S110
138
138
  pass
139
139
 
140
140
  update_version_check()
@@ -1,4 +1,4 @@
1
1
  from .core import contents, where
2
2
 
3
3
  __all__ = ["contents", "where"]
4
- __version__ = "2025.08.03"
4
+ __version__ = "2026.07.22"