tigrcorn-http 0.3.16.dev5__tar.gz → 0.3.16.dev12__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 (20) hide show
  1. {tigrcorn_http-0.3.16.dev5 → tigrcorn_http-0.3.16.dev12}/PKG-INFO +73 -17
  2. tigrcorn_http-0.3.16.dev12/README.md +100 -0
  3. {tigrcorn_http-0.3.16.dev5 → tigrcorn_http-0.3.16.dev12}/pyproject.toml +5 -3
  4. {tigrcorn_http-0.3.16.dev5 → tigrcorn_http-0.3.16.dev12}/src/tigrcorn_http/conditional.py +3 -3
  5. {tigrcorn_http-0.3.16.dev5 → tigrcorn_http-0.3.16.dev12}/src/tigrcorn_http.egg-info/PKG-INFO +73 -17
  6. {tigrcorn_http-0.3.16.dev5 → tigrcorn_http-0.3.16.dev12}/src/tigrcorn_http.egg-info/requires.txt +1 -1
  7. tigrcorn_http-0.3.16.dev5/README.md +0 -46
  8. {tigrcorn_http-0.3.16.dev5 → tigrcorn_http-0.3.16.dev12}/LICENSE +0 -0
  9. {tigrcorn_http-0.3.16.dev5 → tigrcorn_http-0.3.16.dev12}/setup.cfg +0 -0
  10. {tigrcorn_http-0.3.16.dev5 → tigrcorn_http-0.3.16.dev12}/src/tigrcorn_http/__init__.py +0 -0
  11. {tigrcorn_http-0.3.16.dev5 → tigrcorn_http-0.3.16.dev12}/src/tigrcorn_http/alt_svc.py +0 -0
  12. {tigrcorn_http-0.3.16.dev5 → tigrcorn_http-0.3.16.dev12}/src/tigrcorn_http/early_hints.py +0 -0
  13. {tigrcorn_http-0.3.16.dev5 → tigrcorn_http-0.3.16.dev12}/src/tigrcorn_http/entity.py +0 -0
  14. {tigrcorn_http-0.3.16.dev5 → tigrcorn_http-0.3.16.dev12}/src/tigrcorn_http/etag.py +0 -0
  15. {tigrcorn_http-0.3.16.dev5 → tigrcorn_http-0.3.16.dev12}/src/tigrcorn_http/py.typed +0 -0
  16. {tigrcorn_http-0.3.16.dev5 → tigrcorn_http-0.3.16.dev12}/src/tigrcorn_http/range.py +0 -0
  17. {tigrcorn_http-0.3.16.dev5 → tigrcorn_http-0.3.16.dev12}/src/tigrcorn_http/structured_fields.py +0 -0
  18. {tigrcorn_http-0.3.16.dev5 → tigrcorn_http-0.3.16.dev12}/src/tigrcorn_http.egg-info/SOURCES.txt +0 -0
  19. {tigrcorn_http-0.3.16.dev5 → tigrcorn_http-0.3.16.dev12}/src/tigrcorn_http.egg-info/dependency_links.txt +0 -0
  20. {tigrcorn_http-0.3.16.dev5 → tigrcorn_http-0.3.16.dev12}/src/tigrcorn_http.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tigrcorn-http
3
- Version: 0.3.16.dev5
3
+ Version: 0.3.16.dev12
4
4
  Summary: HTTP utilities for Tigrcorn headers, entity tags, content coding, range requests, and Python web server responses.
5
5
  Author-email: Jacob Stewart <jacob@swarmauri.com>
6
6
  License: Apache License
@@ -175,63 +175,119 @@ Classifier: License :: OSI Approved :: Apache Software License
175
175
  Classifier: Operating System :: OS Independent
176
176
  Classifier: Programming Language :: Python :: 3
177
177
  Classifier: Programming Language :: Python :: 3 :: Only
178
+ Classifier: Programming Language :: Python :: 3.10
178
179
  Classifier: Programming Language :: Python :: 3.11
179
180
  Classifier: Programming Language :: Python :: 3.12
180
181
  Classifier: Programming Language :: Python :: 3.13
182
+ Classifier: Programming Language :: Python :: 3.14
181
183
  Classifier: Topic :: Internet :: WWW/HTTP
182
184
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
183
185
  Classifier: Typing :: Typed
184
- Requires-Python: >=3.11
186
+ Requires-Python: <3.15,>=3.10
185
187
  Description-Content-Type: text/markdown
186
188
  License-File: LICENSE
187
- Requires-Dist: tigrcorn-core==0.3.16.dev5
189
+ Requires-Dist: tigrcorn-core==0.3.16.dev12
188
190
  Provides-Extra: compression
189
191
  Requires-Dist: brotli>=1.1.0; extra == "compression"
190
192
  Dynamic: license-file
191
193
 
192
194
  <div align="center">
193
195
  <h1>tigrcorn-http</h1>
196
+ <img
197
+ src="https://raw.githubusercontent.com/Tigrbl/tigrcorn/master/assets/tigrcorn_logo.png"
198
+ alt="Tigrcorn tiger-unicorn logo"
199
+ width="140"
200
+ />
194
201
 
195
202
  <p><strong>HTTP utilities for Tigrcorn headers, entity tags, content coding, range requests, and Python web server responses.</strong></p>
196
203
 
197
204
  <a href="https://pypi.org/project/tigrcorn-http/"><img alt="PyPI version for tigrcorn-http" src="https://img.shields.io/pypi/v/tigrcorn-http?label=PyPI"></a>
198
205
  <a href="https://pypi.org/project/tigrcorn-http/"><img alt="tigrcorn-http package on PyPI" src="https://img.shields.io/badge/package-PyPI-blue"></a>
206
+ <a href="https://pepy.tech/project/tigrcorn-http"><img alt="Downloads for tigrcorn-http" src="https://static.pepy.tech/badge/tigrcorn-http"></a>
207
+ <a href="https://github.com/tigrbl/tigrcorn/blob/master/pkgs/tigrcorn-http/README.md"><img alt="Hits for tigrcorn-http README" src="https://hits.sh/github.com/tigrbl/tigrcorn/blob/master/pkgs/tigrcorn-http/README.md.svg?label=hits"></a>
199
208
  <a href="LICENSE"><img alt="Apache 2.0 license" src="https://img.shields.io/badge/license-Apache%202.0-525252"></a>
200
- <a href="pyproject.toml"><img alt="Python 3.11 supported" src="https://img.shields.io/badge/python-3.11-3776ab"></a>
201
- <a href="pyproject.toml"><img alt="Python 3.12 supported" src="https://img.shields.io/badge/python-3.12-3776ab"></a>
202
- <a href="pyproject.toml"><img alt="Python 3.13 supported" src="https://img.shields.io/badge/python-3.13-3776ab"></a>
203
- <a href="src/tigrcorn_http/py.typed"><img alt="typed package" src="https://img.shields.io/badge/typed-py.typed-2f7ed8"></a>
209
+ <a href="pyproject.toml"><img alt="Python 3.10 | 3.11 | 3.12 | 3.13 | 3.14 supported" src="https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12%20%7C%203.13%20%7C%203.14-3776ab"></a>
204
210
  <a href="https://pypi.org/project/tigrcorn-http/"><img alt="http role package" src="https://img.shields.io/badge/role-http-0a7f5a"></a>
205
211
  </div>
206
212
 
213
+ <p align="center"><a href="https://github.com/Tigrbl/tigrcorn/blob/master/.ssot/registry.json"><img alt="SSOT governed" src="https://img.shields.io/badge/SSOT-governed-2f6f4e.svg"></a> <a href="https://discord.gg/jzvrbEtTtt"><img alt="Discord" src="https://img.shields.io/badge/Discord-Join%20chat-5865F2?logo=discord&amp;logoColor=white"></a></p>
214
+
207
215
  ## Install
208
216
 
209
- ~~~bash
217
+ ```bash
218
+ uv add tigrcorn-http
219
+ ```
220
+
221
+ ```bash
210
222
  pip install tigrcorn-http
211
- ~~~
223
+ ```
212
224
 
213
225
  Use the aggregate [tigrcorn](https://pypi.org/project/tigrcorn/) distribution when you want the full ASGI3 Python web server stack. Install <code>tigrcorn-http</code> directly when you want only this package boundary and its declared dependencies.
214
226
 
215
227
  ## What It Owns
216
228
 
217
- <code>tigrcorn-http</code> owns structured fields, range requests, entity validators, Alt-Svc, Early Hints, headers, and HTTP response utilities. Its import package is <code>tigrcorn_http</code>, and its declared package dependencies are: tigrcorn-core.
229
+ <code>tigrcorn-http</code> owns structured fields, range requests, entity validators, alt-svc, and early hints. Its import package is <code>tigrcorn_http</code>, and its declared package dependencies are: tigrcorn-core.
230
+
231
+ This package page is written for developers searching for Tigrcorn ASGI3 server components, Python web server packages, HTTP/3 and QUIC support, WebSocket and WebTransport-adjacent surfaces, and Apache 2.0 licensed infrastructure.
232
+
233
+ ## Why Use This?
234
+
235
+ Use <code>tigrcorn-http</code> when you want the http layer as a direct install target instead of the full server bundle. It lets application, operator, or certification workflows depend on this boundary explicitly while keeping the broader Tigrcorn runtime assembled from smaller repo-owned package surfaces.
236
+
237
+ ## FAQ
238
+
239
+ ### What does this package export?
240
+
241
+ The package exports through the <code>tigrcorn_http</code> namespace and keeps the root <code>tigrcorn</code> package as the compatibility umbrella.
242
+
243
+ ### Which boundary does this package own?
244
+
245
+ It is the package boundary for structured fields, range requests, entity validators, alt-svc, and early hints in the Tigrcorn package graph.
218
246
 
219
- This package page is written for developers searching for Tigrcorn ASGI3 server components, Python web server packages, HTTP/3 and QUIC support, WebSocket and WebTransport runtime surfaces, typed package boundaries, and Apache 2.0 licensed infrastructure.
247
+ ### Which HTTP concerns live here?
248
+
249
+ This package owns structured fields, entity tags, range handling, conditional request logic, Alt-Svc helpers, Early Hints helpers, and related response-semantic utilities.
250
+
251
+ ## Features
252
+
253
+ - Owns structured fields, range requests, entity validators, alt-svc, and early hints inside the Tigrcorn split-package architecture.
254
+ - Publishes the <code>tigrcorn_http</code> import surface for named public helpers and entrypoints.
255
+ - Declared runtime dependencies: tigrcorn-core.
256
+ - Optional dependency surface: brotli.
257
+ - Supports Python 3.10, 3.11, 3.12, 3.13, and 3.14.
220
258
 
221
259
  ## Use It When
222
260
 
223
- Use <code>tigrcorn-http</code> when you need reusable HTTP utility logic for Tigrcorn packages without importing protocol handlers or the server runtime. It is part of Tigrcorn's split-package architecture, so it can be installed independently while remaining linked to the rest of the Tigrcorn package family on PyPI.
261
+ Use <code>tigrcorn-http</code> when you need http-level behavior without pulling the entire server stack into the import surface. It is part of Tigrcorn's split-package architecture, so it can be installed independently while remaining linked to the rest of the Tigrcorn package family on PyPI.
224
262
 
225
263
  ## Import Surface
226
264
 
227
- ~~~python
228
- import tigrcorn_http
265
+ ```python
266
+ from tigrcorn_http import format_etag, generate_entity_tag
229
267
 
230
- print(tigrcorn_http.__name__)
231
- ~~~
268
+ etag = generate_entity_tag(b"hello")
269
+ print(format_etag(etag))
270
+ ```
271
+
272
+ Namespace discovery starts with `import tigrcorn_http`.
232
273
 
233
274
  The package exposes its supported public surface through the <code>tigrcorn_http</code> namespace. The root [tigrcorn](https://pypi.org/project/tigrcorn/) package keeps compatibility shims for users who install the full server distribution.
234
275
 
276
+ ## Related Packages
277
+
278
+ - [tigrcorn-core](https://pypi.org/project/tigrcorn-core/)
279
+ - [tigrcorn](https://pypi.org/project/tigrcorn/)
280
+
235
281
  ## Package Graph
236
282
 
237
- [tigrcorn](https://pypi.org/project/tigrcorn/) | [tigrcorn-core](https://pypi.org/project/tigrcorn-core/) | [tigrcorn-config](https://pypi.org/project/tigrcorn-config/) | [tigrcorn-asgi](https://pypi.org/project/tigrcorn-asgi/) | [tigrcorn-contract](https://pypi.org/project/tigrcorn-contract/) | [tigrcorn-transports](https://pypi.org/project/tigrcorn-transports/) | [tigrcorn-protocols](https://pypi.org/project/tigrcorn-protocols/) | [tigrcorn-http](https://pypi.org/project/tigrcorn-http/) | [tigrcorn-security](https://pypi.org/project/tigrcorn-security/) | [tigrcorn-runtime](https://pypi.org/project/tigrcorn-runtime/) | [tigrcorn-static](https://pypi.org/project/tigrcorn-static/) | [tigrcorn-observability](https://pypi.org/project/tigrcorn-observability/) | [tigrcorn-compat](https://pypi.org/project/tigrcorn-compat/) | [tigrcorn-certification](https://pypi.org/project/tigrcorn-certification/)
283
+ [tigrcorn-core](https://pypi.org/project/tigrcorn-core/) | [tigrcorn-config](https://pypi.org/project/tigrcorn-config/) | [tigrcorn-http](https://pypi.org/project/tigrcorn-http/) | [tigrcorn-asgi](https://pypi.org/project/tigrcorn-asgi/) | [tigrcorn-contract](https://pypi.org/project/tigrcorn-contract/) | [tigrcorn-transports](https://pypi.org/project/tigrcorn-transports/) | [tigrcorn-security](https://pypi.org/project/tigrcorn-security/) | [tigrcorn-protocols](https://pypi.org/project/tigrcorn-protocols/) | [tigrcorn-static](https://pypi.org/project/tigrcorn-static/) | [tigrcorn-observability](https://pypi.org/project/tigrcorn-observability/) | [tigrcorn-runtime](https://pypi.org/project/tigrcorn-runtime/) | [tigrcorn-compat](https://pypi.org/project/tigrcorn-compat/) | [tigrcorn-certification](https://pypi.org/project/tigrcorn-certification/)
284
+
285
+ ## Best Practices
286
+
287
+ - Use these helpers for ETag, range, and conditional semantics instead of reimplementing HTTP edge logic in handlers.
288
+ - Keep entity and response-semantics changes aligned with the documented HTTP boundary.
289
+ - Pull optional content-coding dependencies only when your deployment actually needs them.
290
+
291
+ ## License
292
+
293
+ Apache-2.0
@@ -0,0 +1,100 @@
1
+ <div align="center">
2
+ <h1>tigrcorn-http</h1>
3
+ <img
4
+ src="https://raw.githubusercontent.com/Tigrbl/tigrcorn/master/assets/tigrcorn_logo.png"
5
+ alt="Tigrcorn tiger-unicorn logo"
6
+ width="140"
7
+ />
8
+
9
+ <p><strong>HTTP utilities for Tigrcorn headers, entity tags, content coding, range requests, and Python web server responses.</strong></p>
10
+
11
+ <a href="https://pypi.org/project/tigrcorn-http/"><img alt="PyPI version for tigrcorn-http" src="https://img.shields.io/pypi/v/tigrcorn-http?label=PyPI"></a>
12
+ <a href="https://pypi.org/project/tigrcorn-http/"><img alt="tigrcorn-http package on PyPI" src="https://img.shields.io/badge/package-PyPI-blue"></a>
13
+ <a href="https://pepy.tech/project/tigrcorn-http"><img alt="Downloads for tigrcorn-http" src="https://static.pepy.tech/badge/tigrcorn-http"></a>
14
+ <a href="https://github.com/tigrbl/tigrcorn/blob/master/pkgs/tigrcorn-http/README.md"><img alt="Hits for tigrcorn-http README" src="https://hits.sh/github.com/tigrbl/tigrcorn/blob/master/pkgs/tigrcorn-http/README.md.svg?label=hits"></a>
15
+ <a href="LICENSE"><img alt="Apache 2.0 license" src="https://img.shields.io/badge/license-Apache%202.0-525252"></a>
16
+ <a href="pyproject.toml"><img alt="Python 3.10 | 3.11 | 3.12 | 3.13 | 3.14 supported" src="https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12%20%7C%203.13%20%7C%203.14-3776ab"></a>
17
+ <a href="https://pypi.org/project/tigrcorn-http/"><img alt="http role package" src="https://img.shields.io/badge/role-http-0a7f5a"></a>
18
+ </div>
19
+
20
+ <p align="center"><a href="https://github.com/Tigrbl/tigrcorn/blob/master/.ssot/registry.json"><img alt="SSOT governed" src="https://img.shields.io/badge/SSOT-governed-2f6f4e.svg"></a> <a href="https://discord.gg/jzvrbEtTtt"><img alt="Discord" src="https://img.shields.io/badge/Discord-Join%20chat-5865F2?logo=discord&amp;logoColor=white"></a></p>
21
+
22
+ ## Install
23
+
24
+ ```bash
25
+ uv add tigrcorn-http
26
+ ```
27
+
28
+ ```bash
29
+ pip install tigrcorn-http
30
+ ```
31
+
32
+ Use the aggregate [tigrcorn](https://pypi.org/project/tigrcorn/) distribution when you want the full ASGI3 Python web server stack. Install <code>tigrcorn-http</code> directly when you want only this package boundary and its declared dependencies.
33
+
34
+ ## What It Owns
35
+
36
+ <code>tigrcorn-http</code> owns structured fields, range requests, entity validators, alt-svc, and early hints. Its import package is <code>tigrcorn_http</code>, and its declared package dependencies are: tigrcorn-core.
37
+
38
+ This package page is written for developers searching for Tigrcorn ASGI3 server components, Python web server packages, HTTP/3 and QUIC support, WebSocket and WebTransport-adjacent surfaces, and Apache 2.0 licensed infrastructure.
39
+
40
+ ## Why Use This?
41
+
42
+ Use <code>tigrcorn-http</code> when you want the http layer as a direct install target instead of the full server bundle. It lets application, operator, or certification workflows depend on this boundary explicitly while keeping the broader Tigrcorn runtime assembled from smaller repo-owned package surfaces.
43
+
44
+ ## FAQ
45
+
46
+ ### What does this package export?
47
+
48
+ The package exports through the <code>tigrcorn_http</code> namespace and keeps the root <code>tigrcorn</code> package as the compatibility umbrella.
49
+
50
+ ### Which boundary does this package own?
51
+
52
+ It is the package boundary for structured fields, range requests, entity validators, alt-svc, and early hints in the Tigrcorn package graph.
53
+
54
+ ### Which HTTP concerns live here?
55
+
56
+ This package owns structured fields, entity tags, range handling, conditional request logic, Alt-Svc helpers, Early Hints helpers, and related response-semantic utilities.
57
+
58
+ ## Features
59
+
60
+ - Owns structured fields, range requests, entity validators, alt-svc, and early hints inside the Tigrcorn split-package architecture.
61
+ - Publishes the <code>tigrcorn_http</code> import surface for named public helpers and entrypoints.
62
+ - Declared runtime dependencies: tigrcorn-core.
63
+ - Optional dependency surface: brotli.
64
+ - Supports Python 3.10, 3.11, 3.12, 3.13, and 3.14.
65
+
66
+ ## Use It When
67
+
68
+ Use <code>tigrcorn-http</code> when you need http-level behavior without pulling the entire server stack into the import surface. It is part of Tigrcorn's split-package architecture, so it can be installed independently while remaining linked to the rest of the Tigrcorn package family on PyPI.
69
+
70
+ ## Import Surface
71
+
72
+ ```python
73
+ from tigrcorn_http import format_etag, generate_entity_tag
74
+
75
+ etag = generate_entity_tag(b"hello")
76
+ print(format_etag(etag))
77
+ ```
78
+
79
+ Namespace discovery starts with `import tigrcorn_http`.
80
+
81
+ The package exposes its supported public surface through the <code>tigrcorn_http</code> namespace. The root [tigrcorn](https://pypi.org/project/tigrcorn/) package keeps compatibility shims for users who install the full server distribution.
82
+
83
+ ## Related Packages
84
+
85
+ - [tigrcorn-core](https://pypi.org/project/tigrcorn-core/)
86
+ - [tigrcorn](https://pypi.org/project/tigrcorn/)
87
+
88
+ ## Package Graph
89
+
90
+ [tigrcorn-core](https://pypi.org/project/tigrcorn-core/) | [tigrcorn-config](https://pypi.org/project/tigrcorn-config/) | [tigrcorn-http](https://pypi.org/project/tigrcorn-http/) | [tigrcorn-asgi](https://pypi.org/project/tigrcorn-asgi/) | [tigrcorn-contract](https://pypi.org/project/tigrcorn-contract/) | [tigrcorn-transports](https://pypi.org/project/tigrcorn-transports/) | [tigrcorn-security](https://pypi.org/project/tigrcorn-security/) | [tigrcorn-protocols](https://pypi.org/project/tigrcorn-protocols/) | [tigrcorn-static](https://pypi.org/project/tigrcorn-static/) | [tigrcorn-observability](https://pypi.org/project/tigrcorn-observability/) | [tigrcorn-runtime](https://pypi.org/project/tigrcorn-runtime/) | [tigrcorn-compat](https://pypi.org/project/tigrcorn-compat/) | [tigrcorn-certification](https://pypi.org/project/tigrcorn-certification/)
91
+
92
+ ## Best Practices
93
+
94
+ - Use these helpers for ETag, range, and conditional semantics instead of reimplementing HTTP edge logic in handlers.
95
+ - Keep entity and response-semantics changes aligned with the documented HTTP boundary.
96
+ - Pull optional content-coding dependencies only when your deployment actually needs them.
97
+
98
+ ## License
99
+
100
+ Apache-2.0
@@ -4,10 +4,10 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "tigrcorn-http"
7
- version = "0.3.16.dev5"
7
+ version = "0.3.16.dev12"
8
8
  description = "HTTP utilities for Tigrcorn headers, entity tags, content coding, range requests, and Python web server responses."
9
9
  readme = "README.md"
10
- requires-python = ">=3.11"
10
+ requires-python = ">=3.10,<3.15"
11
11
  license = {file = "LICENSE"}
12
12
  authors = [{name = "Jacob Stewart", email = "jacob@swarmauri.com"}]
13
13
  keywords = ["tigrcorn", "http", "headers", "etag", "content-coding", "range-requests", "http-utilities"]
@@ -19,14 +19,16 @@ classifiers = [
19
19
  "Operating System :: OS Independent",
20
20
  "Programming Language :: Python :: 3",
21
21
  "Programming Language :: Python :: 3 :: Only",
22
+ "Programming Language :: Python :: 3.10",
22
23
  "Programming Language :: Python :: 3.11",
23
24
  "Programming Language :: Python :: 3.12",
24
25
  "Programming Language :: Python :: 3.13",
26
+ "Programming Language :: Python :: 3.14",
25
27
  "Topic :: Internet :: WWW/HTTP",
26
28
  "Topic :: Software Development :: Libraries :: Python Modules",
27
29
  "Typing :: Typed",
28
30
  ]
29
- dependencies = ["tigrcorn-core==0.3.16.dev5"]
31
+ dependencies = ["tigrcorn-core==0.3.16.dev12"]
30
32
 
31
33
  [project.optional-dependencies]
32
34
  compression = ["brotli>=1.1.0"]
@@ -1,7 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from dataclasses import dataclass
4
- from datetime import UTC, datetime
4
+ from datetime import datetime, timezone
5
5
  from email.utils import parsedate_to_datetime
6
6
 
7
7
  from tigrcorn_http.etag import EntityTag, EntityTagList, parse_entity_tag, parse_entity_tag_list, strong_compare, weak_compare
@@ -31,8 +31,8 @@ def parse_http_date(value: bytes | str | None) -> datetime | None:
31
31
  if dt is None:
32
32
  return None
33
33
  if dt.tzinfo is None:
34
- dt = dt.replace(tzinfo=UTC)
35
- return dt.astimezone(UTC).replace(microsecond=0)
34
+ dt = dt.replace(tzinfo=timezone.utc)
35
+ return dt.astimezone(timezone.utc).replace(microsecond=0)
36
36
 
37
37
 
38
38
  def _current_validators(headers: HeaderList) -> tuple[EntityTag | None, bytes | None, datetime | None, bytes | None]:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tigrcorn-http
3
- Version: 0.3.16.dev5
3
+ Version: 0.3.16.dev12
4
4
  Summary: HTTP utilities for Tigrcorn headers, entity tags, content coding, range requests, and Python web server responses.
5
5
  Author-email: Jacob Stewart <jacob@swarmauri.com>
6
6
  License: Apache License
@@ -175,63 +175,119 @@ Classifier: License :: OSI Approved :: Apache Software License
175
175
  Classifier: Operating System :: OS Independent
176
176
  Classifier: Programming Language :: Python :: 3
177
177
  Classifier: Programming Language :: Python :: 3 :: Only
178
+ Classifier: Programming Language :: Python :: 3.10
178
179
  Classifier: Programming Language :: Python :: 3.11
179
180
  Classifier: Programming Language :: Python :: 3.12
180
181
  Classifier: Programming Language :: Python :: 3.13
182
+ Classifier: Programming Language :: Python :: 3.14
181
183
  Classifier: Topic :: Internet :: WWW/HTTP
182
184
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
183
185
  Classifier: Typing :: Typed
184
- Requires-Python: >=3.11
186
+ Requires-Python: <3.15,>=3.10
185
187
  Description-Content-Type: text/markdown
186
188
  License-File: LICENSE
187
- Requires-Dist: tigrcorn-core==0.3.16.dev5
189
+ Requires-Dist: tigrcorn-core==0.3.16.dev12
188
190
  Provides-Extra: compression
189
191
  Requires-Dist: brotli>=1.1.0; extra == "compression"
190
192
  Dynamic: license-file
191
193
 
192
194
  <div align="center">
193
195
  <h1>tigrcorn-http</h1>
196
+ <img
197
+ src="https://raw.githubusercontent.com/Tigrbl/tigrcorn/master/assets/tigrcorn_logo.png"
198
+ alt="Tigrcorn tiger-unicorn logo"
199
+ width="140"
200
+ />
194
201
 
195
202
  <p><strong>HTTP utilities for Tigrcorn headers, entity tags, content coding, range requests, and Python web server responses.</strong></p>
196
203
 
197
204
  <a href="https://pypi.org/project/tigrcorn-http/"><img alt="PyPI version for tigrcorn-http" src="https://img.shields.io/pypi/v/tigrcorn-http?label=PyPI"></a>
198
205
  <a href="https://pypi.org/project/tigrcorn-http/"><img alt="tigrcorn-http package on PyPI" src="https://img.shields.io/badge/package-PyPI-blue"></a>
206
+ <a href="https://pepy.tech/project/tigrcorn-http"><img alt="Downloads for tigrcorn-http" src="https://static.pepy.tech/badge/tigrcorn-http"></a>
207
+ <a href="https://github.com/tigrbl/tigrcorn/blob/master/pkgs/tigrcorn-http/README.md"><img alt="Hits for tigrcorn-http README" src="https://hits.sh/github.com/tigrbl/tigrcorn/blob/master/pkgs/tigrcorn-http/README.md.svg?label=hits"></a>
199
208
  <a href="LICENSE"><img alt="Apache 2.0 license" src="https://img.shields.io/badge/license-Apache%202.0-525252"></a>
200
- <a href="pyproject.toml"><img alt="Python 3.11 supported" src="https://img.shields.io/badge/python-3.11-3776ab"></a>
201
- <a href="pyproject.toml"><img alt="Python 3.12 supported" src="https://img.shields.io/badge/python-3.12-3776ab"></a>
202
- <a href="pyproject.toml"><img alt="Python 3.13 supported" src="https://img.shields.io/badge/python-3.13-3776ab"></a>
203
- <a href="src/tigrcorn_http/py.typed"><img alt="typed package" src="https://img.shields.io/badge/typed-py.typed-2f7ed8"></a>
209
+ <a href="pyproject.toml"><img alt="Python 3.10 | 3.11 | 3.12 | 3.13 | 3.14 supported" src="https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12%20%7C%203.13%20%7C%203.14-3776ab"></a>
204
210
  <a href="https://pypi.org/project/tigrcorn-http/"><img alt="http role package" src="https://img.shields.io/badge/role-http-0a7f5a"></a>
205
211
  </div>
206
212
 
213
+ <p align="center"><a href="https://github.com/Tigrbl/tigrcorn/blob/master/.ssot/registry.json"><img alt="SSOT governed" src="https://img.shields.io/badge/SSOT-governed-2f6f4e.svg"></a> <a href="https://discord.gg/jzvrbEtTtt"><img alt="Discord" src="https://img.shields.io/badge/Discord-Join%20chat-5865F2?logo=discord&amp;logoColor=white"></a></p>
214
+
207
215
  ## Install
208
216
 
209
- ~~~bash
217
+ ```bash
218
+ uv add tigrcorn-http
219
+ ```
220
+
221
+ ```bash
210
222
  pip install tigrcorn-http
211
- ~~~
223
+ ```
212
224
 
213
225
  Use the aggregate [tigrcorn](https://pypi.org/project/tigrcorn/) distribution when you want the full ASGI3 Python web server stack. Install <code>tigrcorn-http</code> directly when you want only this package boundary and its declared dependencies.
214
226
 
215
227
  ## What It Owns
216
228
 
217
- <code>tigrcorn-http</code> owns structured fields, range requests, entity validators, Alt-Svc, Early Hints, headers, and HTTP response utilities. Its import package is <code>tigrcorn_http</code>, and its declared package dependencies are: tigrcorn-core.
229
+ <code>tigrcorn-http</code> owns structured fields, range requests, entity validators, alt-svc, and early hints. Its import package is <code>tigrcorn_http</code>, and its declared package dependencies are: tigrcorn-core.
230
+
231
+ This package page is written for developers searching for Tigrcorn ASGI3 server components, Python web server packages, HTTP/3 and QUIC support, WebSocket and WebTransport-adjacent surfaces, and Apache 2.0 licensed infrastructure.
232
+
233
+ ## Why Use This?
234
+
235
+ Use <code>tigrcorn-http</code> when you want the http layer as a direct install target instead of the full server bundle. It lets application, operator, or certification workflows depend on this boundary explicitly while keeping the broader Tigrcorn runtime assembled from smaller repo-owned package surfaces.
236
+
237
+ ## FAQ
238
+
239
+ ### What does this package export?
240
+
241
+ The package exports through the <code>tigrcorn_http</code> namespace and keeps the root <code>tigrcorn</code> package as the compatibility umbrella.
242
+
243
+ ### Which boundary does this package own?
244
+
245
+ It is the package boundary for structured fields, range requests, entity validators, alt-svc, and early hints in the Tigrcorn package graph.
218
246
 
219
- This package page is written for developers searching for Tigrcorn ASGI3 server components, Python web server packages, HTTP/3 and QUIC support, WebSocket and WebTransport runtime surfaces, typed package boundaries, and Apache 2.0 licensed infrastructure.
247
+ ### Which HTTP concerns live here?
248
+
249
+ This package owns structured fields, entity tags, range handling, conditional request logic, Alt-Svc helpers, Early Hints helpers, and related response-semantic utilities.
250
+
251
+ ## Features
252
+
253
+ - Owns structured fields, range requests, entity validators, alt-svc, and early hints inside the Tigrcorn split-package architecture.
254
+ - Publishes the <code>tigrcorn_http</code> import surface for named public helpers and entrypoints.
255
+ - Declared runtime dependencies: tigrcorn-core.
256
+ - Optional dependency surface: brotli.
257
+ - Supports Python 3.10, 3.11, 3.12, 3.13, and 3.14.
220
258
 
221
259
  ## Use It When
222
260
 
223
- Use <code>tigrcorn-http</code> when you need reusable HTTP utility logic for Tigrcorn packages without importing protocol handlers or the server runtime. It is part of Tigrcorn's split-package architecture, so it can be installed independently while remaining linked to the rest of the Tigrcorn package family on PyPI.
261
+ Use <code>tigrcorn-http</code> when you need http-level behavior without pulling the entire server stack into the import surface. It is part of Tigrcorn's split-package architecture, so it can be installed independently while remaining linked to the rest of the Tigrcorn package family on PyPI.
224
262
 
225
263
  ## Import Surface
226
264
 
227
- ~~~python
228
- import tigrcorn_http
265
+ ```python
266
+ from tigrcorn_http import format_etag, generate_entity_tag
229
267
 
230
- print(tigrcorn_http.__name__)
231
- ~~~
268
+ etag = generate_entity_tag(b"hello")
269
+ print(format_etag(etag))
270
+ ```
271
+
272
+ Namespace discovery starts with `import tigrcorn_http`.
232
273
 
233
274
  The package exposes its supported public surface through the <code>tigrcorn_http</code> namespace. The root [tigrcorn](https://pypi.org/project/tigrcorn/) package keeps compatibility shims for users who install the full server distribution.
234
275
 
276
+ ## Related Packages
277
+
278
+ - [tigrcorn-core](https://pypi.org/project/tigrcorn-core/)
279
+ - [tigrcorn](https://pypi.org/project/tigrcorn/)
280
+
235
281
  ## Package Graph
236
282
 
237
- [tigrcorn](https://pypi.org/project/tigrcorn/) | [tigrcorn-core](https://pypi.org/project/tigrcorn-core/) | [tigrcorn-config](https://pypi.org/project/tigrcorn-config/) | [tigrcorn-asgi](https://pypi.org/project/tigrcorn-asgi/) | [tigrcorn-contract](https://pypi.org/project/tigrcorn-contract/) | [tigrcorn-transports](https://pypi.org/project/tigrcorn-transports/) | [tigrcorn-protocols](https://pypi.org/project/tigrcorn-protocols/) | [tigrcorn-http](https://pypi.org/project/tigrcorn-http/) | [tigrcorn-security](https://pypi.org/project/tigrcorn-security/) | [tigrcorn-runtime](https://pypi.org/project/tigrcorn-runtime/) | [tigrcorn-static](https://pypi.org/project/tigrcorn-static/) | [tigrcorn-observability](https://pypi.org/project/tigrcorn-observability/) | [tigrcorn-compat](https://pypi.org/project/tigrcorn-compat/) | [tigrcorn-certification](https://pypi.org/project/tigrcorn-certification/)
283
+ [tigrcorn-core](https://pypi.org/project/tigrcorn-core/) | [tigrcorn-config](https://pypi.org/project/tigrcorn-config/) | [tigrcorn-http](https://pypi.org/project/tigrcorn-http/) | [tigrcorn-asgi](https://pypi.org/project/tigrcorn-asgi/) | [tigrcorn-contract](https://pypi.org/project/tigrcorn-contract/) | [tigrcorn-transports](https://pypi.org/project/tigrcorn-transports/) | [tigrcorn-security](https://pypi.org/project/tigrcorn-security/) | [tigrcorn-protocols](https://pypi.org/project/tigrcorn-protocols/) | [tigrcorn-static](https://pypi.org/project/tigrcorn-static/) | [tigrcorn-observability](https://pypi.org/project/tigrcorn-observability/) | [tigrcorn-runtime](https://pypi.org/project/tigrcorn-runtime/) | [tigrcorn-compat](https://pypi.org/project/tigrcorn-compat/) | [tigrcorn-certification](https://pypi.org/project/tigrcorn-certification/)
284
+
285
+ ## Best Practices
286
+
287
+ - Use these helpers for ETag, range, and conditional semantics instead of reimplementing HTTP edge logic in handlers.
288
+ - Keep entity and response-semantics changes aligned with the documented HTTP boundary.
289
+ - Pull optional content-coding dependencies only when your deployment actually needs them.
290
+
291
+ ## License
292
+
293
+ Apache-2.0
@@ -1,4 +1,4 @@
1
- tigrcorn-core==0.3.16.dev5
1
+ tigrcorn-core==0.3.16.dev12
2
2
 
3
3
  [compression]
4
4
  brotli>=1.1.0
@@ -1,46 +0,0 @@
1
- <div align="center">
2
- <h1>tigrcorn-http</h1>
3
-
4
- <p><strong>HTTP utilities for Tigrcorn headers, entity tags, content coding, range requests, and Python web server responses.</strong></p>
5
-
6
- <a href="https://pypi.org/project/tigrcorn-http/"><img alt="PyPI version for tigrcorn-http" src="https://img.shields.io/pypi/v/tigrcorn-http?label=PyPI"></a>
7
- <a href="https://pypi.org/project/tigrcorn-http/"><img alt="tigrcorn-http package on PyPI" src="https://img.shields.io/badge/package-PyPI-blue"></a>
8
- <a href="LICENSE"><img alt="Apache 2.0 license" src="https://img.shields.io/badge/license-Apache%202.0-525252"></a>
9
- <a href="pyproject.toml"><img alt="Python 3.11 supported" src="https://img.shields.io/badge/python-3.11-3776ab"></a>
10
- <a href="pyproject.toml"><img alt="Python 3.12 supported" src="https://img.shields.io/badge/python-3.12-3776ab"></a>
11
- <a href="pyproject.toml"><img alt="Python 3.13 supported" src="https://img.shields.io/badge/python-3.13-3776ab"></a>
12
- <a href="src/tigrcorn_http/py.typed"><img alt="typed package" src="https://img.shields.io/badge/typed-py.typed-2f7ed8"></a>
13
- <a href="https://pypi.org/project/tigrcorn-http/"><img alt="http role package" src="https://img.shields.io/badge/role-http-0a7f5a"></a>
14
- </div>
15
-
16
- ## Install
17
-
18
- ~~~bash
19
- pip install tigrcorn-http
20
- ~~~
21
-
22
- Use the aggregate [tigrcorn](https://pypi.org/project/tigrcorn/) distribution when you want the full ASGI3 Python web server stack. Install <code>tigrcorn-http</code> directly when you want only this package boundary and its declared dependencies.
23
-
24
- ## What It Owns
25
-
26
- <code>tigrcorn-http</code> owns structured fields, range requests, entity validators, Alt-Svc, Early Hints, headers, and HTTP response utilities. Its import package is <code>tigrcorn_http</code>, and its declared package dependencies are: tigrcorn-core.
27
-
28
- This package page is written for developers searching for Tigrcorn ASGI3 server components, Python web server packages, HTTP/3 and QUIC support, WebSocket and WebTransport runtime surfaces, typed package boundaries, and Apache 2.0 licensed infrastructure.
29
-
30
- ## Use It When
31
-
32
- Use <code>tigrcorn-http</code> when you need reusable HTTP utility logic for Tigrcorn packages without importing protocol handlers or the server runtime. It is part of Tigrcorn's split-package architecture, so it can be installed independently while remaining linked to the rest of the Tigrcorn package family on PyPI.
33
-
34
- ## Import Surface
35
-
36
- ~~~python
37
- import tigrcorn_http
38
-
39
- print(tigrcorn_http.__name__)
40
- ~~~
41
-
42
- The package exposes its supported public surface through the <code>tigrcorn_http</code> namespace. The root [tigrcorn](https://pypi.org/project/tigrcorn/) package keeps compatibility shims for users who install the full server distribution.
43
-
44
- ## Package Graph
45
-
46
- [tigrcorn](https://pypi.org/project/tigrcorn/) | [tigrcorn-core](https://pypi.org/project/tigrcorn-core/) | [tigrcorn-config](https://pypi.org/project/tigrcorn-config/) | [tigrcorn-asgi](https://pypi.org/project/tigrcorn-asgi/) | [tigrcorn-contract](https://pypi.org/project/tigrcorn-contract/) | [tigrcorn-transports](https://pypi.org/project/tigrcorn-transports/) | [tigrcorn-protocols](https://pypi.org/project/tigrcorn-protocols/) | [tigrcorn-http](https://pypi.org/project/tigrcorn-http/) | [tigrcorn-security](https://pypi.org/project/tigrcorn-security/) | [tigrcorn-runtime](https://pypi.org/project/tigrcorn-runtime/) | [tigrcorn-static](https://pypi.org/project/tigrcorn-static/) | [tigrcorn-observability](https://pypi.org/project/tigrcorn-observability/) | [tigrcorn-compat](https://pypi.org/project/tigrcorn-compat/) | [tigrcorn-certification](https://pypi.org/project/tigrcorn-certification/)