reqstorm 2.4.1__tar.gz → 2.4.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 (54) hide show
  1. {reqstorm-2.4.1/reqstorm.egg-info → reqstorm-2.4.2}/PKG-INFO +36 -4
  2. {reqstorm-2.4.1 → reqstorm-2.4.2}/README.md +25 -1
  3. {reqstorm-2.4.1 → reqstorm-2.4.2}/pyproject.toml +11 -2
  4. {reqstorm-2.4.1 → reqstorm-2.4.2}/reqstorm/__init__.py +1 -1
  5. {reqstorm-2.4.1 → reqstorm-2.4.2/reqstorm.egg-info}/PKG-INFO +36 -4
  6. {reqstorm-2.4.1 → reqstorm-2.4.2}/LICENSE +0 -0
  7. {reqstorm-2.4.1 → reqstorm-2.4.2}/reqstorm/__main__.py +0 -0
  8. {reqstorm-2.4.1 → reqstorm-2.4.2}/reqstorm/_adaptive.py +0 -0
  9. {reqstorm-2.4.1 → reqstorm-2.4.2}/reqstorm/_auth.py +0 -0
  10. {reqstorm-2.4.1 → reqstorm-2.4.2}/reqstorm/_cache.py +0 -0
  11. {reqstorm-2.4.1 → reqstorm-2.4.2}/reqstorm/_cli.py +0 -0
  12. {reqstorm-2.4.1 → reqstorm-2.4.2}/reqstorm/_client.py +0 -0
  13. {reqstorm-2.4.1 → reqstorm-2.4.2}/reqstorm/_files.py +0 -0
  14. {reqstorm-2.4.1 → reqstorm-2.4.2}/reqstorm/_legacy.py +0 -0
  15. {reqstorm-2.4.1 → reqstorm-2.4.2}/reqstorm/_limits.py +0 -0
  16. {reqstorm-2.4.1 → reqstorm-2.4.2}/reqstorm/_observe.py +0 -0
  17. {reqstorm-2.4.1 → reqstorm-2.4.2}/reqstorm/_paginate.py +0 -0
  18. {reqstorm-2.4.1 → reqstorm-2.4.2}/reqstorm/_plan.py +0 -0
  19. {reqstorm-2.4.1 → reqstorm-2.4.2}/reqstorm/_progress.py +0 -0
  20. {reqstorm-2.4.1 → reqstorm-2.4.2}/reqstorm/_pydantic.py +0 -0
  21. {reqstorm-2.4.1 → reqstorm-2.4.2}/reqstorm/_report.py +0 -0
  22. {reqstorm-2.4.1 → reqstorm-2.4.2}/reqstorm/_schema.py +0 -0
  23. {reqstorm-2.4.1 → reqstorm-2.4.2}/reqstorm/_schema_sinks.py +0 -0
  24. {reqstorm-2.4.1 → reqstorm-2.4.2}/reqstorm/_socks.py +0 -0
  25. {reqstorm-2.4.1 → reqstorm-2.4.2}/reqstorm/_sync.py +0 -0
  26. {reqstorm-2.4.1 → reqstorm-2.4.2}/reqstorm/_template.py +0 -0
  27. {reqstorm-2.4.1 → reqstorm-2.4.2}/reqstorm/py.typed +0 -0
  28. {reqstorm-2.4.1 → reqstorm-2.4.2}/reqstorm.egg-info/SOURCES.txt +0 -0
  29. {reqstorm-2.4.1 → reqstorm-2.4.2}/reqstorm.egg-info/dependency_links.txt +0 -0
  30. {reqstorm-2.4.1 → reqstorm-2.4.2}/reqstorm.egg-info/entry_points.txt +0 -0
  31. {reqstorm-2.4.1 → reqstorm-2.4.2}/reqstorm.egg-info/requires.txt +0 -0
  32. {reqstorm-2.4.1 → reqstorm-2.4.2}/reqstorm.egg-info/top_level.txt +0 -0
  33. {reqstorm-2.4.1 → reqstorm-2.4.2}/setup.cfg +0 -0
  34. {reqstorm-2.4.1 → reqstorm-2.4.2}/tests/test_adaptive.py +0 -0
  35. {reqstorm-2.4.1 → reqstorm-2.4.2}/tests/test_auth.py +0 -0
  36. {reqstorm-2.4.1 → reqstorm-2.4.2}/tests/test_cache_proxy.py +0 -0
  37. {reqstorm-2.4.1 → reqstorm-2.4.2}/tests/test_cli.py +0 -0
  38. {reqstorm-2.4.1 → reqstorm-2.4.2}/tests/test_fetch_all.py +0 -0
  39. {reqstorm-2.4.1 → reqstorm-2.4.2}/tests/test_files.py +0 -0
  40. {reqstorm-2.4.1 → reqstorm-2.4.2}/tests/test_legacy.py +0 -0
  41. {reqstorm-2.4.1 → reqstorm-2.4.2}/tests/test_limits.py +0 -0
  42. {reqstorm-2.4.1 → reqstorm-2.4.2}/tests/test_observe.py +0 -0
  43. {reqstorm-2.4.1 → reqstorm-2.4.2}/tests/test_ordered_and_db.py +0 -0
  44. {reqstorm-2.4.1 → reqstorm-2.4.2}/tests/test_paginate.py +0 -0
  45. {reqstorm-2.4.1 → reqstorm-2.4.2}/tests/test_pydantic.py +0 -0
  46. {reqstorm-2.4.1 → reqstorm-2.4.2}/tests/test_report.py +0 -0
  47. {reqstorm-2.4.1 → reqstorm-2.4.2}/tests/test_run_report.py +0 -0
  48. {reqstorm-2.4.1 → reqstorm-2.4.2}/tests/test_schema.py +0 -0
  49. {reqstorm-2.4.1 → reqstorm-2.4.2}/tests/test_schema_db.py +0 -0
  50. {reqstorm-2.4.1 → reqstorm-2.4.2}/tests/test_socks_backoff.py +0 -0
  51. {reqstorm-2.4.1 → reqstorm-2.4.2}/tests/test_stream.py +0 -0
  52. {reqstorm-2.4.1 → reqstorm-2.4.2}/tests/test_sync.py +0 -0
  53. {reqstorm-2.4.1 → reqstorm-2.4.2}/tests/test_template.py +0 -0
  54. {reqstorm-2.4.1 → reqstorm-2.4.2}/tests/test_tls.py +0 -0
@@ -1,17 +1,22 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: reqstorm
3
- Version: 2.4.1
4
- Summary: Send large numbers of HTTP requests concurrently with asyncio, with retries, timeouts and per-request results.
3
+ Version: 2.4.2
4
+ Summary: Send thousands of HTTP requests from Python or the command line, with per-host rate limits, retries, pagination, progress and logs, and results written to files or databases.
5
5
  Author-email: Melih Colpan <colpanmelih@gmail.com>
6
6
  License-Expression: MIT
7
7
  Project-URL: Homepage, https://reqstorm.github.io
8
+ Project-URL: Documentation, https://reqstorm.github.io
8
9
  Project-URL: Source, https://github.com/melihcolpan/reqstorm
9
10
  Project-URL: Changelog, https://github.com/melihcolpan/reqstorm/blob/master/CHANGELOG.md
10
11
  Project-URL: Issues, https://github.com/melihcolpan/reqstorm/issues
11
- Keywords: asyncio,aiohttp,http,requests,concurrent,bulk,rate-limit,retry,crawler,scraping
12
+ Keywords: http,http-client,asyncio,aiohttp,bulk-requests,batch,concurrency,rate-limit,retry,backoff,pagination,api-client,cli,socks,jsonl,sqlite,postgresql
12
13
  Classifier: Development Status :: 5 - Production/Stable
14
+ Classifier: Environment :: Console
13
15
  Classifier: Framework :: AsyncIO
16
+ Classifier: Framework :: Pydantic :: 2
14
17
  Classifier: Intended Audience :: Developers
18
+ Classifier: Intended Audience :: Science/Research
19
+ Classifier: Intended Audience :: System Administrators
15
20
  Classifier: Operating System :: OS Independent
16
21
  Classifier: Programming Language :: Python :: 3
17
22
  Classifier: Programming Language :: Python :: 3 :: Only
@@ -20,7 +25,10 @@ Classifier: Programming Language :: Python :: 3.10
20
25
  Classifier: Programming Language :: Python :: 3.11
21
26
  Classifier: Programming Language :: Python :: 3.12
22
27
  Classifier: Programming Language :: Python :: 3.13
28
+ Classifier: Topic :: Database
23
29
  Classifier: Topic :: Internet :: WWW/HTTP
30
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
31
+ Classifier: Topic :: Utilities
24
32
  Classifier: Typing :: Typed
25
33
  Requires-Python: >=3.9
26
34
  Description-Content-Type: text/markdown
@@ -144,11 +152,35 @@ reqstorm does all of that for you, with one call.
144
152
 
145
153
  ## Installation
146
154
 
155
+ **In your Python code:**
156
+
147
157
  ```console
148
158
  $ python -m pip install reqstorm
149
159
  ```
150
160
 
151
- reqstorm supports Python 3.9 to 3.13 on Linux, macOS and Windows. Its only dependency is [aiohttp](https://docs.aiohttp.org). For PostgreSQL or MySQL output, install the driver you already use (`psycopg`, `psycopg2`, `pymysql`, `mysqlclient` or `mysql-connector-python`). To use Pydantic models as schemas, install `reqstorm[pydantic]`; for SOCKS proxies, `reqstorm[socks]`.
161
+ **As a command** (`reqstorm urls.txt -o out.jsonl`), pick what you already use:
162
+
163
+ | You have | Install with |
164
+ |---|---|
165
+ | Homebrew (macOS, Linux) | `brew install melihcolpan/tap/reqstorm` |
166
+ | pipx | `pipx install "reqstorm[socks]"` |
167
+ | uv | `uv tool install "reqstorm[socks]"` |
168
+ | Docker | nothing to install, see below |
169
+
170
+ ```console
171
+ $ docker run --rm -v "$PWD:/data" \
172
+ ghcr.io/melihcolpan/reqstorm \
173
+ urls.txt -o results.jsonl
174
+ ```
175
+
176
+ Python 3.9 to 3.13 on Linux, macOS and Windows. The only required dependency is [aiohttp](https://docs.aiohttp.org). Optional extras:
177
+
178
+ | Extra | Adds |
179
+ |---|---|
180
+ | `reqstorm[socks]` | SOCKS4/5 proxies |
181
+ | `reqstorm[pydantic]` | Pydantic models as schemas |
182
+
183
+ For PostgreSQL or MySQL output, install the driver you already use (`psycopg`, `psycopg2`, `pymysql`, `mysqlclient` or `mysql-connector-python`).
152
184
 
153
185
  ## Quick start
154
186
 
@@ -99,11 +99,35 @@ reqstorm does all of that for you, with one call.
99
99
 
100
100
  ## Installation
101
101
 
102
+ **In your Python code:**
103
+
102
104
  ```console
103
105
  $ python -m pip install reqstorm
104
106
  ```
105
107
 
106
- reqstorm supports Python 3.9 to 3.13 on Linux, macOS and Windows. Its only dependency is [aiohttp](https://docs.aiohttp.org). For PostgreSQL or MySQL output, install the driver you already use (`psycopg`, `psycopg2`, `pymysql`, `mysqlclient` or `mysql-connector-python`). To use Pydantic models as schemas, install `reqstorm[pydantic]`; for SOCKS proxies, `reqstorm[socks]`.
108
+ **As a command** (`reqstorm urls.txt -o out.jsonl`), pick what you already use:
109
+
110
+ | You have | Install with |
111
+ |---|---|
112
+ | Homebrew (macOS, Linux) | `brew install melihcolpan/tap/reqstorm` |
113
+ | pipx | `pipx install "reqstorm[socks]"` |
114
+ | uv | `uv tool install "reqstorm[socks]"` |
115
+ | Docker | nothing to install, see below |
116
+
117
+ ```console
118
+ $ docker run --rm -v "$PWD:/data" \
119
+ ghcr.io/melihcolpan/reqstorm \
120
+ urls.txt -o results.jsonl
121
+ ```
122
+
123
+ Python 3.9 to 3.13 on Linux, macOS and Windows. The only required dependency is [aiohttp](https://docs.aiohttp.org). Optional extras:
124
+
125
+ | Extra | Adds |
126
+ |---|---|
127
+ | `reqstorm[socks]` | SOCKS4/5 proxies |
128
+ | `reqstorm[pydantic]` | Pydantic models as schemas |
129
+
130
+ For PostgreSQL or MySQL output, install the driver you already use (`psycopg`, `psycopg2`, `pymysql`, `mysqlclient` or `mysql-connector-python`).
107
131
 
108
132
  ## Quick start
109
133
 
@@ -5,18 +5,23 @@ build-backend = "setuptools.build_meta"
5
5
  [project]
6
6
  name = "reqstorm"
7
7
  dynamic = ["version"]
8
- description = "Send large numbers of HTTP requests concurrently with asyncio, with retries, timeouts and per-request results."
8
+ description = "Send thousands of HTTP requests from Python or the command line, with per-host rate limits, retries, pagination, progress and logs, and results written to files or databases."
9
9
  readme = "README.md"
10
10
  license = "MIT"
11
11
  license-files = ["LICENSE"]
12
12
  authors = [{ name = "Melih Colpan", email = "colpanmelih@gmail.com" }]
13
13
  requires-python = ">=3.9"
14
14
  dependencies = ["aiohttp>=3.9,<4"]
15
- keywords = ["asyncio", "aiohttp", "http", "requests", "concurrent", "bulk", "rate-limit", "retry", "crawler", "scraping"]
15
+ keywords = ["http", "http-client", "asyncio", "aiohttp", "bulk-requests", "batch", "concurrency", "rate-limit",
16
+ "retry", "backoff", "pagination", "api-client", "cli", "socks", "jsonl", "sqlite", "postgresql"]
16
17
  classifiers = [
17
18
  "Development Status :: 5 - Production/Stable",
19
+ "Environment :: Console",
18
20
  "Framework :: AsyncIO",
21
+ "Framework :: Pydantic :: 2",
19
22
  "Intended Audience :: Developers",
23
+ "Intended Audience :: Science/Research",
24
+ "Intended Audience :: System Administrators",
20
25
  "Operating System :: OS Independent",
21
26
  "Programming Language :: Python :: 3",
22
27
  "Programming Language :: Python :: 3 :: Only",
@@ -25,7 +30,10 @@ classifiers = [
25
30
  "Programming Language :: Python :: 3.11",
26
31
  "Programming Language :: Python :: 3.12",
27
32
  "Programming Language :: Python :: 3.13",
33
+ "Topic :: Database",
28
34
  "Topic :: Internet :: WWW/HTTP",
35
+ "Topic :: Software Development :: Libraries :: Python Modules",
36
+ "Topic :: Utilities",
29
37
  "Typing :: Typed",
30
38
  ]
31
39
 
@@ -40,6 +48,7 @@ reqstorm = "reqstorm._cli:main"
40
48
 
41
49
  [project.urls]
42
50
  Homepage = "https://reqstorm.github.io"
51
+ Documentation = "https://reqstorm.github.io"
43
52
  Source = "https://github.com/melihcolpan/reqstorm"
44
53
  Changelog = "https://github.com/melihcolpan/reqstorm/blob/master/CHANGELOG.md"
45
54
  Issues = "https://github.com/melihcolpan/reqstorm/issues"
@@ -33,7 +33,7 @@ from ._schema import Field, Schema, SchemaError, extract, infer_schema
33
33
  from ._sync import fetch_all_sync, fetch_to_db_sync, fetch_to_file_sync, stream_sync
34
34
  from ._template import from_template, read_csv, read_sql
35
35
 
36
- __version__ = "2.4.1"
36
+ __version__ = "2.4.2"
37
37
 
38
38
  __all__ = [
39
39
  "Attempt",
@@ -1,17 +1,22 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: reqstorm
3
- Version: 2.4.1
4
- Summary: Send large numbers of HTTP requests concurrently with asyncio, with retries, timeouts and per-request results.
3
+ Version: 2.4.2
4
+ Summary: Send thousands of HTTP requests from Python or the command line, with per-host rate limits, retries, pagination, progress and logs, and results written to files or databases.
5
5
  Author-email: Melih Colpan <colpanmelih@gmail.com>
6
6
  License-Expression: MIT
7
7
  Project-URL: Homepage, https://reqstorm.github.io
8
+ Project-URL: Documentation, https://reqstorm.github.io
8
9
  Project-URL: Source, https://github.com/melihcolpan/reqstorm
9
10
  Project-URL: Changelog, https://github.com/melihcolpan/reqstorm/blob/master/CHANGELOG.md
10
11
  Project-URL: Issues, https://github.com/melihcolpan/reqstorm/issues
11
- Keywords: asyncio,aiohttp,http,requests,concurrent,bulk,rate-limit,retry,crawler,scraping
12
+ Keywords: http,http-client,asyncio,aiohttp,bulk-requests,batch,concurrency,rate-limit,retry,backoff,pagination,api-client,cli,socks,jsonl,sqlite,postgresql
12
13
  Classifier: Development Status :: 5 - Production/Stable
14
+ Classifier: Environment :: Console
13
15
  Classifier: Framework :: AsyncIO
16
+ Classifier: Framework :: Pydantic :: 2
14
17
  Classifier: Intended Audience :: Developers
18
+ Classifier: Intended Audience :: Science/Research
19
+ Classifier: Intended Audience :: System Administrators
15
20
  Classifier: Operating System :: OS Independent
16
21
  Classifier: Programming Language :: Python :: 3
17
22
  Classifier: Programming Language :: Python :: 3 :: Only
@@ -20,7 +25,10 @@ Classifier: Programming Language :: Python :: 3.10
20
25
  Classifier: Programming Language :: Python :: 3.11
21
26
  Classifier: Programming Language :: Python :: 3.12
22
27
  Classifier: Programming Language :: Python :: 3.13
28
+ Classifier: Topic :: Database
23
29
  Classifier: Topic :: Internet :: WWW/HTTP
30
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
31
+ Classifier: Topic :: Utilities
24
32
  Classifier: Typing :: Typed
25
33
  Requires-Python: >=3.9
26
34
  Description-Content-Type: text/markdown
@@ -144,11 +152,35 @@ reqstorm does all of that for you, with one call.
144
152
 
145
153
  ## Installation
146
154
 
155
+ **In your Python code:**
156
+
147
157
  ```console
148
158
  $ python -m pip install reqstorm
149
159
  ```
150
160
 
151
- reqstorm supports Python 3.9 to 3.13 on Linux, macOS and Windows. Its only dependency is [aiohttp](https://docs.aiohttp.org). For PostgreSQL or MySQL output, install the driver you already use (`psycopg`, `psycopg2`, `pymysql`, `mysqlclient` or `mysql-connector-python`). To use Pydantic models as schemas, install `reqstorm[pydantic]`; for SOCKS proxies, `reqstorm[socks]`.
161
+ **As a command** (`reqstorm urls.txt -o out.jsonl`), pick what you already use:
162
+
163
+ | You have | Install with |
164
+ |---|---|
165
+ | Homebrew (macOS, Linux) | `brew install melihcolpan/tap/reqstorm` |
166
+ | pipx | `pipx install "reqstorm[socks]"` |
167
+ | uv | `uv tool install "reqstorm[socks]"` |
168
+ | Docker | nothing to install, see below |
169
+
170
+ ```console
171
+ $ docker run --rm -v "$PWD:/data" \
172
+ ghcr.io/melihcolpan/reqstorm \
173
+ urls.txt -o results.jsonl
174
+ ```
175
+
176
+ Python 3.9 to 3.13 on Linux, macOS and Windows. The only required dependency is [aiohttp](https://docs.aiohttp.org). Optional extras:
177
+
178
+ | Extra | Adds |
179
+ |---|---|
180
+ | `reqstorm[socks]` | SOCKS4/5 proxies |
181
+ | `reqstorm[pydantic]` | Pydantic models as schemas |
182
+
183
+ For PostgreSQL or MySQL output, install the driver you already use (`psycopg`, `psycopg2`, `pymysql`, `mysqlclient` or `mysql-connector-python`).
152
184
 
153
185
  ## Quick start
154
186
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes