Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/httpx/_api.py: 57%

28 statements  

« prev     ^ index     » next       coverage.py v7.2.2, created at 2023-03-26 06:12 +0000

1import typing 

2from contextlib import contextmanager 

3 

4from ._client import Client 

5from ._config import DEFAULT_TIMEOUT_CONFIG 

6from ._models import Response 

7from ._types import ( 

8 AuthTypes, 

9 CertTypes, 

10 CookieTypes, 

11 HeaderTypes, 

12 ProxiesTypes, 

13 QueryParamTypes, 

14 RequestContent, 

15 RequestData, 

16 RequestFiles, 

17 TimeoutTypes, 

18 URLTypes, 

19 VerifyTypes, 

20) 

21 

22 

23def request( 

24 method: str, 

25 url: URLTypes, 

26 *, 

27 params: typing.Optional[QueryParamTypes] = None, 

28 content: typing.Optional[RequestContent] = None, 

29 data: typing.Optional[RequestData] = None, 

30 files: typing.Optional[RequestFiles] = None, 

31 json: typing.Optional[typing.Any] = None, 

32 headers: typing.Optional[HeaderTypes] = None, 

33 cookies: typing.Optional[CookieTypes] = None, 

34 auth: typing.Optional[AuthTypes] = None, 

35 proxies: typing.Optional[ProxiesTypes] = None, 

36 timeout: TimeoutTypes = DEFAULT_TIMEOUT_CONFIG, 

37 follow_redirects: bool = False, 

38 verify: VerifyTypes = True, 

39 cert: typing.Optional[CertTypes] = None, 

40 trust_env: bool = True, 

41) -> Response: 

42 """ 

43 Sends an HTTP request. 

44 

45 **Parameters:** 

46 

47 * **method** - HTTP method for the new `Request` object: `GET`, `OPTIONS`, 

48 `HEAD`, `POST`, `PUT`, `PATCH`, or `DELETE`. 

49 * **url** - URL for the new `Request` object. 

50 * **params** - *(optional)* Query parameters to include in the URL, as a 

51 string, dictionary, or sequence of two-tuples. 

52 * **content** - *(optional)* Binary content to include in the body of the 

53 request, as bytes or a byte iterator. 

54 * **data** - *(optional)* Form data to include in the body of the request, 

55 as a dictionary. 

56 * **files** - *(optional)* A dictionary of upload files to include in the 

57 body of the request. 

58 * **json** - *(optional)* A JSON serializable object to include in the body 

59 of the request. 

60 * **headers** - *(optional)* Dictionary of HTTP headers to include in the 

61 request. 

62 * **cookies** - *(optional)* Dictionary of Cookie items to include in the 

63 request. 

64 * **auth** - *(optional)* An authentication class to use when sending the 

65 request. 

66 * **proxies** - *(optional)* A dictionary mapping proxy keys to proxy URLs. 

67 * **timeout** - *(optional)* The timeout configuration to use when sending 

68 the request. 

69 * **follow_redirects** - *(optional)* Enables or disables HTTP redirects. 

70 * **verify** - *(optional)* SSL certificates (a.k.a CA bundle) used to 

71 verify the identity of requested hosts. Either `True` (default CA bundle), 

72 a path to an SSL certificate file, an `ssl.SSLContext`, or `False` 

73 (which will disable verification). 

74 * **cert** - *(optional)* An SSL certificate used by the requested host 

75 to authenticate the client. Either a path to an SSL certificate file, or 

76 two-tuple of (certificate file, key file), or a three-tuple of (certificate 

77 file, key file, password). 

78 * **trust_env** - *(optional)* Enables or disables usage of environment 

79 variables for configuration. 

80 

81 **Returns:** `Response` 

82 

83 Usage: 

84 

85 ``` 

86 >>> import httpx 

87 >>> response = httpx.request('GET', 'https://httpbin.org/get') 

88 >>> response 

89 <Response [200 OK]> 

90 ``` 

91 """ 

92 with Client( 

93 cookies=cookies, 

94 proxies=proxies, 

95 cert=cert, 

96 verify=verify, 

97 timeout=timeout, 

98 trust_env=trust_env, 

99 ) as client: 

100 return client.request( 

101 method=method, 

102 url=url, 

103 content=content, 

104 data=data, 

105 files=files, 

106 json=json, 

107 params=params, 

108 headers=headers, 

109 auth=auth, 

110 follow_redirects=follow_redirects, 

111 ) 

112 

113 

114@contextmanager 

115def stream( 

116 method: str, 

117 url: URLTypes, 

118 *, 

119 params: typing.Optional[QueryParamTypes] = None, 

120 content: typing.Optional[RequestContent] = None, 

121 data: typing.Optional[RequestData] = None, 

122 files: typing.Optional[RequestFiles] = None, 

123 json: typing.Optional[typing.Any] = None, 

124 headers: typing.Optional[HeaderTypes] = None, 

125 cookies: typing.Optional[CookieTypes] = None, 

126 auth: typing.Optional[AuthTypes] = None, 

127 proxies: typing.Optional[ProxiesTypes] = None, 

128 timeout: TimeoutTypes = DEFAULT_TIMEOUT_CONFIG, 

129 follow_redirects: bool = False, 

130 verify: VerifyTypes = True, 

131 cert: typing.Optional[CertTypes] = None, 

132 trust_env: bool = True, 

133) -> typing.Iterator[Response]: 

134 """ 

135 Alternative to `httpx.request()` that streams the response body 

136 instead of loading it into memory at once. 

137 

138 **Parameters**: See `httpx.request`. 

139 

140 See also: [Streaming Responses][0] 

141 

142 [0]: /quickstart#streaming-responses 

143 """ 

144 with Client( 

145 cookies=cookies, 

146 proxies=proxies, 

147 cert=cert, 

148 verify=verify, 

149 timeout=timeout, 

150 trust_env=trust_env, 

151 ) as client: 

152 with client.stream( 

153 method=method, 

154 url=url, 

155 content=content, 

156 data=data, 

157 files=files, 

158 json=json, 

159 params=params, 

160 headers=headers, 

161 auth=auth, 

162 follow_redirects=follow_redirects, 

163 ) as response: 

164 yield response 

165 

166 

167def get( 

168 url: URLTypes, 

169 *, 

170 params: typing.Optional[QueryParamTypes] = None, 

171 headers: typing.Optional[HeaderTypes] = None, 

172 cookies: typing.Optional[CookieTypes] = None, 

173 auth: typing.Optional[AuthTypes] = None, 

174 proxies: typing.Optional[ProxiesTypes] = None, 

175 follow_redirects: bool = False, 

176 cert: typing.Optional[CertTypes] = None, 

177 verify: VerifyTypes = True, 

178 timeout: TimeoutTypes = DEFAULT_TIMEOUT_CONFIG, 

179 trust_env: bool = True, 

180) -> Response: 

181 """ 

182 Sends a `GET` request. 

183 

184 **Parameters**: See `httpx.request`. 

185 

186 Note that the `data`, `files`, `json` and `content` parameters are not available 

187 on this function, as `GET` requests should not include a request body. 

188 """ 

189 return request( 

190 "GET", 

191 url, 

192 params=params, 

193 headers=headers, 

194 cookies=cookies, 

195 auth=auth, 

196 proxies=proxies, 

197 follow_redirects=follow_redirects, 

198 cert=cert, 

199 verify=verify, 

200 timeout=timeout, 

201 trust_env=trust_env, 

202 ) 

203 

204 

205def options( 

206 url: URLTypes, 

207 *, 

208 params: typing.Optional[QueryParamTypes] = None, 

209 headers: typing.Optional[HeaderTypes] = None, 

210 cookies: typing.Optional[CookieTypes] = None, 

211 auth: typing.Optional[AuthTypes] = None, 

212 proxies: typing.Optional[ProxiesTypes] = None, 

213 follow_redirects: bool = False, 

214 cert: typing.Optional[CertTypes] = None, 

215 verify: VerifyTypes = True, 

216 timeout: TimeoutTypes = DEFAULT_TIMEOUT_CONFIG, 

217 trust_env: bool = True, 

218) -> Response: 

219 """ 

220 Sends an `OPTIONS` request. 

221 

222 **Parameters**: See `httpx.request`. 

223 

224 Note that the `data`, `files`, `json` and `content` parameters are not available 

225 on this function, as `OPTIONS` requests should not include a request body. 

226 """ 

227 return request( 

228 "OPTIONS", 

229 url, 

230 params=params, 

231 headers=headers, 

232 cookies=cookies, 

233 auth=auth, 

234 proxies=proxies, 

235 follow_redirects=follow_redirects, 

236 cert=cert, 

237 verify=verify, 

238 timeout=timeout, 

239 trust_env=trust_env, 

240 ) 

241 

242 

243def head( 

244 url: URLTypes, 

245 *, 

246 params: typing.Optional[QueryParamTypes] = None, 

247 headers: typing.Optional[HeaderTypes] = None, 

248 cookies: typing.Optional[CookieTypes] = None, 

249 auth: typing.Optional[AuthTypes] = None, 

250 proxies: typing.Optional[ProxiesTypes] = None, 

251 follow_redirects: bool = False, 

252 cert: typing.Optional[CertTypes] = None, 

253 verify: VerifyTypes = True, 

254 timeout: TimeoutTypes = DEFAULT_TIMEOUT_CONFIG, 

255 trust_env: bool = True, 

256) -> Response: 

257 """ 

258 Sends a `HEAD` request. 

259 

260 **Parameters**: See `httpx.request`. 

261 

262 Note that the `data`, `files`, `json` and `content` parameters are not available 

263 on this function, as `HEAD` requests should not include a request body. 

264 """ 

265 return request( 

266 "HEAD", 

267 url, 

268 params=params, 

269 headers=headers, 

270 cookies=cookies, 

271 auth=auth, 

272 proxies=proxies, 

273 follow_redirects=follow_redirects, 

274 cert=cert, 

275 verify=verify, 

276 timeout=timeout, 

277 trust_env=trust_env, 

278 ) 

279 

280 

281def post( 

282 url: URLTypes, 

283 *, 

284 content: typing.Optional[RequestContent] = None, 

285 data: typing.Optional[RequestData] = None, 

286 files: typing.Optional[RequestFiles] = None, 

287 json: typing.Optional[typing.Any] = None, 

288 params: typing.Optional[QueryParamTypes] = None, 

289 headers: typing.Optional[HeaderTypes] = None, 

290 cookies: typing.Optional[CookieTypes] = None, 

291 auth: typing.Optional[AuthTypes] = None, 

292 proxies: typing.Optional[ProxiesTypes] = None, 

293 follow_redirects: bool = False, 

294 cert: typing.Optional[CertTypes] = None, 

295 verify: VerifyTypes = True, 

296 timeout: TimeoutTypes = DEFAULT_TIMEOUT_CONFIG, 

297 trust_env: bool = True, 

298) -> Response: 

299 """ 

300 Sends a `POST` request. 

301 

302 **Parameters**: See `httpx.request`. 

303 """ 

304 return request( 

305 "POST", 

306 url, 

307 content=content, 

308 data=data, 

309 files=files, 

310 json=json, 

311 params=params, 

312 headers=headers, 

313 cookies=cookies, 

314 auth=auth, 

315 proxies=proxies, 

316 follow_redirects=follow_redirects, 

317 cert=cert, 

318 verify=verify, 

319 timeout=timeout, 

320 trust_env=trust_env, 

321 ) 

322 

323 

324def put( 

325 url: URLTypes, 

326 *, 

327 content: typing.Optional[RequestContent] = None, 

328 data: typing.Optional[RequestData] = None, 

329 files: typing.Optional[RequestFiles] = None, 

330 json: typing.Optional[typing.Any] = None, 

331 params: typing.Optional[QueryParamTypes] = None, 

332 headers: typing.Optional[HeaderTypes] = None, 

333 cookies: typing.Optional[CookieTypes] = None, 

334 auth: typing.Optional[AuthTypes] = None, 

335 proxies: typing.Optional[ProxiesTypes] = None, 

336 follow_redirects: bool = False, 

337 cert: typing.Optional[CertTypes] = None, 

338 verify: VerifyTypes = True, 

339 timeout: TimeoutTypes = DEFAULT_TIMEOUT_CONFIG, 

340 trust_env: bool = True, 

341) -> Response: 

342 """ 

343 Sends a `PUT` request. 

344 

345 **Parameters**: See `httpx.request`. 

346 """ 

347 return request( 

348 "PUT", 

349 url, 

350 content=content, 

351 data=data, 

352 files=files, 

353 json=json, 

354 params=params, 

355 headers=headers, 

356 cookies=cookies, 

357 auth=auth, 

358 proxies=proxies, 

359 follow_redirects=follow_redirects, 

360 cert=cert, 

361 verify=verify, 

362 timeout=timeout, 

363 trust_env=trust_env, 

364 ) 

365 

366 

367def patch( 

368 url: URLTypes, 

369 *, 

370 content: typing.Optional[RequestContent] = None, 

371 data: typing.Optional[RequestData] = None, 

372 files: typing.Optional[RequestFiles] = None, 

373 json: typing.Optional[typing.Any] = None, 

374 params: typing.Optional[QueryParamTypes] = None, 

375 headers: typing.Optional[HeaderTypes] = None, 

376 cookies: typing.Optional[CookieTypes] = None, 

377 auth: typing.Optional[AuthTypes] = None, 

378 proxies: typing.Optional[ProxiesTypes] = None, 

379 follow_redirects: bool = False, 

380 cert: typing.Optional[CertTypes] = None, 

381 verify: VerifyTypes = True, 

382 timeout: TimeoutTypes = DEFAULT_TIMEOUT_CONFIG, 

383 trust_env: bool = True, 

384) -> Response: 

385 """ 

386 Sends a `PATCH` request. 

387 

388 **Parameters**: See `httpx.request`. 

389 """ 

390 return request( 

391 "PATCH", 

392 url, 

393 content=content, 

394 data=data, 

395 files=files, 

396 json=json, 

397 params=params, 

398 headers=headers, 

399 cookies=cookies, 

400 auth=auth, 

401 proxies=proxies, 

402 follow_redirects=follow_redirects, 

403 cert=cert, 

404 verify=verify, 

405 timeout=timeout, 

406 trust_env=trust_env, 

407 ) 

408 

409 

410def delete( 

411 url: URLTypes, 

412 *, 

413 params: typing.Optional[QueryParamTypes] = None, 

414 headers: typing.Optional[HeaderTypes] = None, 

415 cookies: typing.Optional[CookieTypes] = None, 

416 auth: typing.Optional[AuthTypes] = None, 

417 proxies: typing.Optional[ProxiesTypes] = None, 

418 follow_redirects: bool = False, 

419 cert: typing.Optional[CertTypes] = None, 

420 verify: VerifyTypes = True, 

421 timeout: TimeoutTypes = DEFAULT_TIMEOUT_CONFIG, 

422 trust_env: bool = True, 

423) -> Response: 

424 """ 

425 Sends a `DELETE` request. 

426 

427 **Parameters**: See `httpx.request`. 

428 

429 Note that the `data`, `files`, `json` and `content` parameters are not available 

430 on this function, as `DELETE` requests should not include a request body. 

431 """ 

432 return request( 

433 "DELETE", 

434 url, 

435 params=params, 

436 headers=headers, 

437 cookies=cookies, 

438 auth=auth, 

439 proxies=proxies, 

440 follow_redirects=follow_redirects, 

441 cert=cert, 

442 verify=verify, 

443 timeout=timeout, 

444 trust_env=trust_env, 

445 )