never-primp 1.2.2__cp38-abi3-macosx_11_0_arm64.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.
@@ -0,0 +1,591 @@
1
+ from __future__ import annotations
2
+
3
+ import sys
4
+ from collections.abc import MutableMapping
5
+ from typing import Any, Iterator, Literal, TypedDict
6
+
7
+ if sys.version_info <= (3, 11):
8
+ from typing_extensions import Unpack
9
+ else:
10
+ from typing import Unpack
11
+
12
+ HttpMethod = Literal["GET", "HEAD", "OPTIONS", "DELETE", "POST", "PUT", "PATCH"]
13
+ IMPERSONATE = Literal[
14
+ "chrome_100", "chrome_101", "chrome_104", "chrome_105", "chrome_106",
15
+ "chrome_107", "chrome_108", "chrome_109", "chrome_114", "chrome_116",
16
+ "chrome_117", "chrome_118", "chrome_119", "chrome_120", "chrome_123",
17
+ "chrome_124", "chrome_126", "chrome_127", "chrome_128", "chrome_129",
18
+ "chrome_130", "chrome_131", "chrome_133", "chrome_134", "chrome_135",
19
+ "chrome_136", "chrome_137", "chrome_138", "chrome_139",
20
+ "chrome_140","chrome_141","chrome_142",
21
+ "safari_15.3", "safari_15.5", "safari_15.6.1", "safari_16",
22
+ "safari_16.5", "safari_17.0", "safari_17.2.1", "safari_17.4.1",
23
+ "safari_17.5", "safari_18", "safari_18.2","safari_18.3","safari_18.3.1","safari_18.5",
24
+ "safari_ios_16.5", "safari_ios_17.2", "safari_ios_17.4.1", "safari_ios_18.1.1",
25
+ "safari_ipad_18","safari_26","safari_ipad_26","safari_ios_26",
26
+ "okhttp_3.9", "okhttp_3.11", "okhttp_3.13", "okhttp_3.14", "okhttp_4.9",
27
+ "okhttp_4.10", "okhttp_4.12","okhttp_5",
28
+ "edge_101", "edge_122", "edge_127", "edge_131","edge_134",
29
+ "opera_116", "opera_117", "opera_118", "opera_119",
30
+ "firefox_109", "firefox_117", "firefox_128", "firefox_133", "firefox_135",
31
+ "firefox_136", "firefox_139", "firefox_142", "firefox_143", "firefox_android_135",
32
+ "firefox_private_135", "firefox_private_136",
33
+ "random",
34
+ ] # fmt: skip
35
+ IMPERSONATE_OS = Literal["android", "ios", "linux", "macos", "windows", "random"]
36
+
37
+ class RequestParams(TypedDict, total=False):
38
+ auth: tuple[str, str | None] | None
39
+ auth_bearer: str | None
40
+ params: dict[str, str] | None
41
+ headers: dict[str, str] | None
42
+ cookies: dict[str, str] | None
43
+ timeout: float | None
44
+ content: bytes | None
45
+ data: dict[str, Any] | None
46
+ json: Any | None
47
+ files: dict[str, str] | None
48
+ follow_redirects: bool | None
49
+ proxy: str | None
50
+ verify: bool | None
51
+
52
+ class ClientRequestParams(RequestParams):
53
+ impersonate: IMPERSONATE | None
54
+ impersonate_os: IMPERSONATE_OS | None
55
+ ca_cert_file: str | None
56
+
57
+ class Response:
58
+ @property
59
+ def content(self) -> bytes: ...
60
+ @property
61
+ def cookies(self) -> dict[str, str]: ...
62
+ @property
63
+ def headers(self) -> dict[str, str]: ...
64
+ @property
65
+ def status_code(self) -> int: ...
66
+ @property
67
+ def url(self) -> str: ...
68
+ @property
69
+ def encoding(self) -> str: ...
70
+ @property
71
+ def text(self) -> str: ...
72
+ def json(self) -> Any: ...
73
+ def stream(self) -> Iterator[bytes]: ...
74
+ @property
75
+ def text_markdown(self) -> str: ...
76
+ @property
77
+ def text_plain(self) -> str: ...
78
+ @property
79
+ def text_rich(self) -> str: ...
80
+
81
+ class HeadersJar(MutableMapping[str, str]):
82
+ """Dict-like container for managing HTTP headers."""
83
+ def __getitem__(self, name: str) -> str: ...
84
+ def __setitem__(self, name: str, value: str) -> None: ...
85
+ def __delitem__(self, name: str) -> None: ...
86
+ def __iter__(self) -> Iterator[str]: ...
87
+ def __len__(self) -> int: ...
88
+ def get(self, name: str, default: str | None = None) -> str | None: ...
89
+ def update(self, headers: dict[str, str]) -> None: ...
90
+ def clear(self) -> None: ...
91
+
92
+ class CookieJar(MutableMapping[str, str]):
93
+ """Dict-like container for managing HTTP cookies."""
94
+ def __getitem__(self, name: str) -> str: ...
95
+ def __setitem__(self, name: str, value: str) -> None: ...
96
+ def __delitem__(self, name: str) -> None: ...
97
+ def __iter__(self) -> Iterator[str]: ...
98
+ def __len__(self) -> int: ...
99
+ def get(self, name: str, default: str | None = None) -> str | None: ...
100
+ def update(self, cookies: dict[str, str], domain: str | None = None, path: str | None = None) -> None: ...
101
+ def clear(self) -> None: ...
102
+
103
+ class RClient:
104
+ def __init__(
105
+ self,
106
+ auth: tuple[str, str | None] | None = None,
107
+ auth_bearer: str | None = None,
108
+ params: dict[str, str] | None = None,
109
+ headers: dict[str, str] | None = None,
110
+ cookies: dict[str, str] | None = None,
111
+ cookie_store: bool | None = True,
112
+ split_cookies: bool | None = False,
113
+ referer: bool | None = True,
114
+ proxy: str | None = None,
115
+ timeout: float | None = None,
116
+ impersonate: IMPERSONATE | None = None,
117
+ impersonate_os: IMPERSONATE_OS | None = None,
118
+ follow_redirects: bool | None = True,
119
+ max_redirects: int | None = 20,
120
+ verify: bool | None = True,
121
+ ca_cert_file: str | None = None,
122
+ https_only: bool | None = False,
123
+ http1_only: bool | None = False,
124
+ http2_only: bool | None = False,
125
+ pool_idle_timeout: float | None = None,
126
+ pool_max_idle_per_host: int | None = None,
127
+ tcp_nodelay: bool | None = None,
128
+ tcp_keepalive: float | None = None,
129
+ ): ...
130
+ @property
131
+ def headers(self) -> HeadersJar: ...
132
+ @property
133
+ def cookies(self) -> CookieJar: ...
134
+ def headers_update(self, headers: dict[str, str]) -> None: ...
135
+ # Cookie management methods (no URL required)
136
+ def get_all_cookies(self) -> dict[str, str]: ...
137
+ def set_cookie(self, name: str, value: str, domain: str | None = None, path: str | None = None) -> None: ...
138
+ def get_cookie(self, name: str) -> str | None: ...
139
+ def update_cookies(self, cookies: dict[str, str], domain: str | None = None, path: str | None = None) -> None: ...
140
+ def delete_cookie(self, name: str) -> None: ...
141
+ def clear_cookies(self) -> None: ...
142
+ # Header management methods
143
+ def set_header(self, name: str, value: str) -> None: ...
144
+ def get_header(self, name: str) -> str | None: ...
145
+ def delete_header(self, name: str) -> None: ...
146
+ def clear_headers(self) -> None: ...
147
+ # Client properties
148
+ @property
149
+ def auth(self) -> tuple[str, str | None] | None: ...
150
+ @auth.setter
151
+ def auth(self, auth: tuple[str, str | None] | None) -> None: ...
152
+ @property
153
+ def auth_bearer(self) -> str | None: ...
154
+ @auth_bearer.setter
155
+ def auth_bearer(self, auth_bearer: str | None) -> None: ...
156
+ @property
157
+ def params(self) -> dict[str, str] | None: ...
158
+ @params.setter
159
+ def params(self, params: dict[str, str] | None) -> None: ...
160
+ @property
161
+ def timeout(self) -> float | None: ...
162
+ @timeout.setter
163
+ def timeout(self, timeout: float | None) -> None: ...
164
+ @property
165
+ def split_cookies(self) -> bool | None: ...
166
+ @split_cookies.setter
167
+ def split_cookies(self, split_cookies: bool | None) -> None: ...
168
+ @property
169
+ def proxy(self) -> str | None: ...
170
+ @proxy.setter
171
+ def proxy(self, proxy: str) -> None: ...
172
+ @property
173
+ def impersonate(self) -> str | None: ...
174
+ @impersonate.setter
175
+ def impersonate(self, impersonate: IMPERSONATE) -> None: ...
176
+ @property
177
+ def impersonate_os(self) -> str | None: ...
178
+ @impersonate_os.setter
179
+ def impersonate_os(self, impersonate: IMPERSONATE_OS) -> None: ...
180
+ # Request methods with explicit parameters for better IDE support
181
+ def request(
182
+ self,
183
+ method: HttpMethod,
184
+ url: str,
185
+ *,
186
+ params: dict[str, str] | None = None,
187
+ headers: dict[str, str] | None = None,
188
+ cookies: dict[str, str] | None = None,
189
+ auth: tuple[str, str | None] | None = None,
190
+ auth_bearer: str | None = None,
191
+ timeout: float | None = None,
192
+ content: bytes | None = None,
193
+ data: dict[str, Any] | None = None,
194
+ json: Any | None = None,
195
+ files: dict[str, str] | None = None,
196
+ proxy: str | None = None,
197
+ verify: bool | None = None,
198
+ ) -> Response: ...
199
+ def get(
200
+ self,
201
+ url: str,
202
+ *,
203
+ params: dict[str, str] | None = None,
204
+ headers: dict[str, str] | None = None,
205
+ cookies: dict[str, str] | None = None,
206
+ auth: tuple[str, str | None] | None = None,
207
+ auth_bearer: str | None = None,
208
+ timeout: float | None = None,
209
+ proxy: str | None = None,
210
+ verify: bool | None = None,
211
+ ) -> Response: ...
212
+ def head(
213
+ self,
214
+ url: str,
215
+ *,
216
+ params: dict[str, str] | None = None,
217
+ headers: dict[str, str] | None = None,
218
+ cookies: dict[str, str] | None = None,
219
+ auth: tuple[str, str | None] | None = None,
220
+ auth_bearer: str | None = None,
221
+ timeout: float | None = None,
222
+ proxy: str | None = None,
223
+ verify: bool | None = None,
224
+ ) -> Response: ...
225
+ def options(
226
+ self,
227
+ url: str,
228
+ *,
229
+ params: dict[str, str] | None = None,
230
+ headers: dict[str, str] | None = None,
231
+ cookies: dict[str, str] | None = None,
232
+ auth: tuple[str, str | None] | None = None,
233
+ auth_bearer: str | None = None,
234
+ timeout: float | None = None,
235
+ proxy: str | None = None,
236
+ verify: bool | None = None,
237
+ ) -> Response: ...
238
+ def delete(
239
+ self,
240
+ url: str,
241
+ *,
242
+ params: dict[str, str] | None = None,
243
+ headers: dict[str, str] | None = None,
244
+ cookies: dict[str, str] | None = None,
245
+ auth: tuple[str, str | None] | None = None,
246
+ auth_bearer: str | None = None,
247
+ timeout: float | None = None,
248
+ content: bytes | None = None,
249
+ data: dict[str, Any] | None = None,
250
+ json: Any | None = None,
251
+ proxy: str | None = None,
252
+ verify: bool | None = None,
253
+ ) -> Response: ...
254
+ def post(
255
+ self,
256
+ url: str,
257
+ *,
258
+ params: dict[str, str] | None = None,
259
+ headers: dict[str, str] | None = None,
260
+ cookies: dict[str, str] | None = None,
261
+ auth: tuple[str, str | None] | None = None,
262
+ auth_bearer: str | None = None,
263
+ timeout: float | None = None,
264
+ content: bytes | None = None,
265
+ data: dict[str, Any] | None = None,
266
+ json: Any | None = None,
267
+ files: dict[str, str] | None = None,
268
+ proxy: str | None = None,
269
+ verify: bool | None = None,
270
+ ) -> Response: ...
271
+ def put(
272
+ self,
273
+ url: str,
274
+ *,
275
+ params: dict[str, str] | None = None,
276
+ headers: dict[str, str] | None = None,
277
+ cookies: dict[str, str] | None = None,
278
+ auth: tuple[str, str | None] | None = None,
279
+ auth_bearer: str | None = None,
280
+ timeout: float | None = None,
281
+ content: bytes | None = None,
282
+ data: dict[str, Any] | None = None,
283
+ json: Any | None = None,
284
+ files: dict[str, str] | None = None,
285
+ proxy: str | None = None,
286
+ verify: bool | None = None,
287
+ ) -> Response: ...
288
+ def patch(
289
+ self,
290
+ url: str,
291
+ *,
292
+ params: dict[str, str] | None = None,
293
+ headers: dict[str, str] | None = None,
294
+ cookies: dict[str, str] | None = None,
295
+ auth: tuple[str, str | None] | None = None,
296
+ auth_bearer: str | None = None,
297
+ timeout: float | None = None,
298
+ content: bytes | None = None,
299
+ data: dict[str, Any] | None = None,
300
+ json: Any | None = None,
301
+ files: dict[str, str] | None = None,
302
+ proxy: str | None = None,
303
+ verify: bool | None = None,
304
+ ) -> Response: ...
305
+
306
+ class Client(RClient):
307
+ """HTTP client with dict-like cookies and headers management."""
308
+ @property
309
+ def headers(self) -> HeadersJar: ...
310
+ @property
311
+ def cookies(self) -> CookieJar: ...
312
+ def __enter__(self) -> Client: ...
313
+ def __exit__(self, *args) -> None: ...
314
+
315
+ class AsyncClient(Client):
316
+ """Async HTTP client with dict-like cookies and headers management."""
317
+ async def __aenter__(self) -> AsyncClient: ...
318
+ async def __aexit__(self, *args) -> None: ...
319
+ async def request(
320
+ self,
321
+ method: HttpMethod,
322
+ url: str,
323
+ *,
324
+ params: dict[str, str] | None = None,
325
+ headers: dict[str, str] | None = None,
326
+ cookies: dict[str, str] | None = None,
327
+ auth: tuple[str, str | None] | None = None,
328
+ auth_bearer: str | None = None,
329
+ timeout: float | None = None,
330
+ content: bytes | None = None,
331
+ data: dict[str, Any] | None = None,
332
+ json: Any | None = None,
333
+ files: dict[str, str] | None = None,
334
+ proxy: str | None = None,
335
+ verify: bool | None = None,
336
+ ) -> Response: ...
337
+ async def get(
338
+ self,
339
+ url: str,
340
+ *,
341
+ params: dict[str, str] | None = None,
342
+ headers: dict[str, str] | None = None,
343
+ cookies: dict[str, str] | None = None,
344
+ auth: tuple[str, str | None] | None = None,
345
+ auth_bearer: str | None = None,
346
+ timeout: float | None = None,
347
+ proxy: str | None = None,
348
+ verify: bool | None = None,
349
+ ) -> Response: ...
350
+ async def head(
351
+ self,
352
+ url: str,
353
+ *,
354
+ params: dict[str, str] | None = None,
355
+ headers: dict[str, str] | None = None,
356
+ cookies: dict[str, str] | None = None,
357
+ auth: tuple[str, str | None] | None = None,
358
+ auth_bearer: str | None = None,
359
+ timeout: float | None = None,
360
+ proxy: str | None = None,
361
+ verify: bool | None = None,
362
+ ) -> Response: ...
363
+ async def options(
364
+ self,
365
+ url: str,
366
+ *,
367
+ params: dict[str, str] | None = None,
368
+ headers: dict[str, str] | None = None,
369
+ cookies: dict[str, str] | None = None,
370
+ auth: tuple[str, str | None] | None = None,
371
+ auth_bearer: str | None = None,
372
+ timeout: float | None = None,
373
+ proxy: str | None = None,
374
+ verify: bool | None = None,
375
+ ) -> Response: ...
376
+ async def delete(
377
+ self,
378
+ url: str,
379
+ *,
380
+ params: dict[str, str] | None = None,
381
+ headers: dict[str, str] | None = None,
382
+ cookies: dict[str, str] | None = None,
383
+ auth: tuple[str, str | None] | None = None,
384
+ auth_bearer: str | None = None,
385
+ timeout: float | None = None,
386
+ content: bytes | None = None,
387
+ data: dict[str, Any] | None = None,
388
+ json: Any | None = None,
389
+ proxy: str | None = None,
390
+ verify: bool | None = None,
391
+ ) -> Response: ...
392
+ async def post(
393
+ self,
394
+ url: str,
395
+ *,
396
+ params: dict[str, str] | None = None,
397
+ headers: dict[str, str] | None = None,
398
+ cookies: dict[str, str] | None = None,
399
+ auth: tuple[str, str | None] | None = None,
400
+ auth_bearer: str | None = None,
401
+ timeout: float | None = None,
402
+ content: bytes | None = None,
403
+ data: dict[str, Any] | None = None,
404
+ json: Any | None = None,
405
+ files: dict[str, str] | None = None,
406
+ proxy: str | None = None,
407
+ verify: bool | None = None,
408
+ ) -> Response: ...
409
+ async def put(
410
+ self,
411
+ url: str,
412
+ *,
413
+ params: dict[str, str] | None = None,
414
+ headers: dict[str, str] | None = None,
415
+ cookies: dict[str, str] | None = None,
416
+ auth: tuple[str, str | None] | None = None,
417
+ auth_bearer: str | None = None,
418
+ timeout: float | None = None,
419
+ content: bytes | None = None,
420
+ data: dict[str, Any] | None = None,
421
+ json: Any | None = None,
422
+ files: dict[str, str] | None = None,
423
+ proxy: str | None = None,
424
+ verify: bool | None = None,
425
+ ) -> Response: ...
426
+ async def patch(
427
+ self,
428
+ url: str,
429
+ *,
430
+ params: dict[str, str] | None = None,
431
+ headers: dict[str, str] | None = None,
432
+ cookies: dict[str, str] | None = None,
433
+ auth: tuple[str, str | None] | None = None,
434
+ auth_bearer: str | None = None,
435
+ timeout: float | None = None,
436
+ content: bytes | None = None,
437
+ data: dict[str, Any] | None = None,
438
+ json: Any | None = None,
439
+ files: dict[str, str] | None = None,
440
+ proxy: str | None = None,
441
+ verify: bool | None = None,
442
+ ) -> Response: ...
443
+
444
+ # Module-level convenience functions with explicit parameters
445
+ def request(
446
+ method: HttpMethod,
447
+ url: str,
448
+ *,
449
+ params: dict[str, str] | None = None,
450
+ headers: dict[str, str] | None = None,
451
+ cookies: dict[str, str] | None = None,
452
+ auth: tuple[str, str | None] | None = None,
453
+ auth_bearer: str | None = None,
454
+ timeout: float | None = None,
455
+ content: bytes | None = None,
456
+ data: dict[str, Any] | None = None,
457
+ json: Any | None = None,
458
+ files: dict[str, str] | None = None,
459
+ impersonate: IMPERSONATE | None = None,
460
+ impersonate_os: IMPERSONATE_OS | None = None,
461
+ proxy: str | None = None,
462
+ verify: bool | None = True,
463
+ ca_cert_file: str | None = None,
464
+ ) -> Response: ...
465
+
466
+ def get(
467
+ url: str,
468
+ *,
469
+ params: dict[str, str] | None = None,
470
+ headers: dict[str, str] | None = None,
471
+ cookies: dict[str, str] | None = None,
472
+ auth: tuple[str, str | None] | None = None,
473
+ auth_bearer: str | None = None,
474
+ timeout: float | None = None,
475
+ impersonate: IMPERSONATE | None = None,
476
+ impersonate_os: IMPERSONATE_OS | None = None,
477
+ proxy: str | None = None,
478
+ verify: bool | None = True,
479
+ ca_cert_file: str | None = None,
480
+ ) -> Response: ...
481
+
482
+ def head(
483
+ url: str,
484
+ *,
485
+ params: dict[str, str] | None = None,
486
+ headers: dict[str, str] | None = None,
487
+ cookies: dict[str, str] | None = None,
488
+ auth: tuple[str, str | None] | None = None,
489
+ auth_bearer: str | None = None,
490
+ timeout: float | None = None,
491
+ impersonate: IMPERSONATE | None = None,
492
+ impersonate_os: IMPERSONATE_OS | None = None,
493
+ proxy: str | None = None,
494
+ verify: bool | None = True,
495
+ ca_cert_file: str | None = None,
496
+ ) -> Response: ...
497
+
498
+ def options(
499
+ url: str,
500
+ *,
501
+ params: dict[str, str] | None = None,
502
+ headers: dict[str, str] | None = None,
503
+ cookies: dict[str, str] | None = None,
504
+ auth: tuple[str, str | None] | None = None,
505
+ auth_bearer: str | None = None,
506
+ timeout: float | None = None,
507
+ impersonate: IMPERSONATE | None = None,
508
+ impersonate_os: IMPERSONATE_OS | None = None,
509
+ proxy: str | None = None,
510
+ verify: bool | None = True,
511
+ ca_cert_file: str | None = None,
512
+ ) -> Response: ...
513
+
514
+ def delete(
515
+ url: str,
516
+ *,
517
+ params: dict[str, str] | None = None,
518
+ headers: dict[str, str] | None = None,
519
+ cookies: dict[str, str] | None = None,
520
+ auth: tuple[str, str | None] | None = None,
521
+ auth_bearer: str | None = None,
522
+ timeout: float | None = None,
523
+ content: bytes | None = None,
524
+ data: dict[str, Any] | None = None,
525
+ json: Any | None = None,
526
+ impersonate: IMPERSONATE | None = None,
527
+ impersonate_os: IMPERSONATE_OS | None = None,
528
+ proxy: str | None = None,
529
+ verify: bool | None = True,
530
+ ca_cert_file: str | None = None,
531
+ ) -> Response: ...
532
+
533
+ def post(
534
+ url: str,
535
+ *,
536
+ params: dict[str, str] | None = None,
537
+ headers: dict[str, str] | None = None,
538
+ cookies: dict[str, str] | None = None,
539
+ auth: tuple[str, str | None] | None = None,
540
+ auth_bearer: str | None = None,
541
+ timeout: float | None = None,
542
+ content: bytes | None = None,
543
+ data: dict[str, Any] | None = None,
544
+ json: Any | None = None,
545
+ files: dict[str, str] | None = None,
546
+ impersonate: IMPERSONATE | None = None,
547
+ impersonate_os: IMPERSONATE_OS | None = None,
548
+ proxy: str | None = None,
549
+ verify: bool | None = True,
550
+ ca_cert_file: str | None = None,
551
+ ) -> Response: ...
552
+
553
+ def put(
554
+ url: str,
555
+ *,
556
+ params: dict[str, str] | None = None,
557
+ headers: dict[str, str] | None = None,
558
+ cookies: dict[str, str] | None = None,
559
+ auth: tuple[str, str | None] | None = None,
560
+ auth_bearer: str | None = None,
561
+ timeout: float | None = None,
562
+ content: bytes | None = None,
563
+ data: dict[str, Any] | None = None,
564
+ json: Any | None = None,
565
+ files: dict[str, str] | None = None,
566
+ impersonate: IMPERSONATE | None = None,
567
+ impersonate_os: IMPERSONATE_OS | None = None,
568
+ proxy: str | None = None,
569
+ verify: bool | None = True,
570
+ ca_cert_file: str | None = None,
571
+ ) -> Response: ...
572
+
573
+ def patch(
574
+ url: str,
575
+ *,
576
+ params: dict[str, str] | None = None,
577
+ headers: dict[str, str] | None = None,
578
+ cookies: dict[str, str] | None = None,
579
+ auth: tuple[str, str | None] | None = None,
580
+ auth_bearer: str | None = None,
581
+ timeout: float | None = None,
582
+ content: bytes | None = None,
583
+ data: dict[str, Any] | None = None,
584
+ json: Any | None = None,
585
+ files: dict[str, str] | None = None,
586
+ impersonate: IMPERSONATE | None = None,
587
+ impersonate_os: IMPERSONATE_OS | None = None,
588
+ proxy: str | None = None,
589
+ verify: bool | None = True,
590
+ ca_cert_file: str | None = None,
591
+ ) -> Response: ...
never_primp/py.typed ADDED
File without changes