tigrcorn 0.3.18.dev2__py3-none-any.whl → 0.3.18.dev3__py3-none-any.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.
@@ -48,6 +48,7 @@ _CATALOG: tuple[CapabilityDefinition, ...] = (
48
48
  CapabilityDefinition("transport.inproc", "transport", "In-process transport", "inproc" in TRANSPORTS, certifiable=True, certified=False),
49
49
  CapabilityDefinition("transport.pipe", "transport", "Pipe transport", "pipe" in TRANSPORTS, certifiable=True, certified=False),
50
50
  CapabilityDefinition("transport.quic", "transport", "QUIC transport", "quic" in TRANSPORTS and importlib_util.find_spec("aioquic") is not None, certifiable=True, certified=True, optional=True),
51
+ CapabilityDefinition("transport.quic.congestion-control.v1", "transport", "Pluggable QUIC congestion control API v1", True, certifiable=True, certified=False),
51
52
  CapabilityDefinition("transport.tcp", "transport", "TCP transport", "tcp" in TRANSPORTS, certifiable=True, certified=True),
52
53
  CapabilityDefinition("transport.udp", "transport", "UDP transport", "udp" in TRANSPORTS, certifiable=True, certified=False),
53
54
  CapabilityDefinition("transport.unix", "transport", "Unix domain socket transport", "unix" in TRANSPORTS, certifiable=True, certified=False),
@@ -98,6 +99,7 @@ def _configured_capability_ids(config: Mapping[str, Any]) -> set[str]:
98
99
  configured.add("protocol.http3")
99
100
  configured.add("protocol.quic")
100
101
  configured.add("transport.quic")
102
+ configured.add("transport.quic.congestion-control.v1")
101
103
  if http.get("alt_svc_auto") or http.get("alt_svc_headers"):
102
104
  configured.add("protocol.http3")
103
105
  if http.get("content_codings"):
@@ -141,7 +143,7 @@ def _configured_capability_ids(config: Mapping[str, Any]) -> set[str]:
141
143
  configured.add(f"transport.{kind}")
142
144
  for protocol in value.get("protocols") or ():
143
145
  if protocol == "quic":
144
- configured.update({"protocol.quic", "transport.quic"})
146
+ configured.update({"protocol.quic", "transport.quic", "transport.quic.congestion-control.v1"})
145
147
  elif protocol in {"http1", "http2", "http3", "websocket", "webtransport"}:
146
148
  configured.add(f"protocol.{protocol}")
147
149
  for version in value.get("http_versions") or ():
@@ -150,7 +152,7 @@ def _configured_capability_ids(config: Mapping[str, Any]) -> set[str]:
150
152
  elif str(version) == "2":
151
153
  configured.add("protocol.http2")
152
154
  elif str(version) == "3":
153
- configured.update({"protocol.http3", "protocol.quic", "transport.quic"})
155
+ configured.update({"protocol.http3", "protocol.quic", "transport.quic", "transport.quic.congestion-control.v1"})
154
156
  if value.get("websocket"):
155
157
  configured.add("protocol.websocket")
156
158
  if value.get("alpn_protocols"):
tigrcorn/cli.py CHANGED
@@ -13,6 +13,13 @@ def _capabilities_parser() -> argparse.ArgumentParser:
13
13
  parser = argparse.ArgumentParser(prog="tigrcorn inspect capabilities")
14
14
  parser.add_argument("--json", action="store_true", dest="as_json", help="Emit JSON capability registry output")
15
15
  parser.add_argument("--profile", default="default", help="Blessed deployment profile to inspect")
16
+ parser.add_argument(
17
+ "--require",
18
+ action="append",
19
+ default=[],
20
+ dest="required_capabilities",
21
+ help="Require a capability id to be enabled for the selected profile",
22
+ )
16
23
  return parser
17
24
 
18
25
 
@@ -21,6 +28,12 @@ def _inspect_capabilities(argv: list[str]) -> int:
21
28
 
22
29
  parser = _capabilities_parser()
23
30
  ns = parser.parse_args(argv)
31
+ if ns.required_capabilities:
32
+ try:
33
+ capabilities.require_supported(ns.required_capabilities, profile=ns.profile)
34
+ except capabilities.UnsupportedCapabilityError as exc:
35
+ print(str(exc), file=sys.stderr)
36
+ return 2
24
37
  payload = capabilities.export(profile=ns.profile)
25
38
  if not ns.as_json:
26
39
  parser.error("inspect capabilities currently requires --json")
@@ -28,6 +41,21 @@ def _inspect_capabilities(argv: list[str]) -> int:
28
41
  return 0
29
42
 
30
43
 
44
+ def _certify(argv: list[str]) -> int:
45
+ if not argv:
46
+ print("missing certification surface", file=sys.stderr)
47
+ return 2
48
+ surface, *surface_argv = argv
49
+ if surface != "static":
50
+ print(f"unknown certification surface: {surface}", file=sys.stderr)
51
+ return 2
52
+
53
+ from . import capabilities
54
+ from tigrcorn_certification.certify.static import certify_static_main
55
+
56
+ return certify_static_main(surface_argv, require_supported=capabilities.require_supported)
57
+
58
+
31
59
  def build_parser() -> argparse.ArgumentParser:
32
60
  return build_server_parser()
33
61
 
@@ -36,5 +64,7 @@ def main(argv: list[str] | None = None) -> int:
36
64
  effective_argv = list(sys.argv[1:] if argv is None else argv)
37
65
  if effective_argv[:2] == ["inspect", "capabilities"]:
38
66
  return _inspect_capabilities(effective_argv[2:])
67
+ if effective_argv[:1] == ["certify"]:
68
+ return _certify(effective_argv[1:])
39
69
  _runtime_cli.run_config = run_config
40
70
  return _runtime_cli.main(effective_argv)
@@ -117,6 +117,10 @@
117
117
  "server_names": []
118
118
  },
119
119
  "quic": {
120
+ "congestion_control": {
121
+ "algorithm": "reno",
122
+ "options": {}
123
+ },
120
124
  "early_data_policy": "deny",
121
125
  "idle_timeout": 30.0,
122
126
  "max_datagram_size": 1200,
@@ -165,11 +169,21 @@
165
169
  "ping_timeout": null
166
170
  },
167
171
  "webtransport": {
172
+ "compatibility": "current",
173
+ "enabled": false,
168
174
  "max_datagram_size": null,
169
175
  "max_sessions": null,
170
176
  "max_streams": null,
171
177
  "origins": [],
172
- "path": null
178
+ "path": null,
179
+ "preferred_profile": "ietf-current",
180
+ "profiles": [
181
+ "draft02",
182
+ "draft13",
183
+ "ietf-current"
184
+ ],
185
+ "stream_receive_coalesce_bytes": 16384,
186
+ "stream_receive_max_delay_ms": 5
173
187
  }
174
188
  },
175
189
  "explicit_posture": {
@@ -121,6 +121,10 @@
121
121
  ]
122
122
  },
123
123
  "quic": {
124
+ "congestion_control": {
125
+ "algorithm": "reno",
126
+ "options": {}
127
+ },
124
128
  "early_data_policy": "deny",
125
129
  "idle_timeout": 30.0,
126
130
  "max_datagram_size": 1200,
@@ -169,11 +173,21 @@
169
173
  "ping_timeout": null
170
174
  },
171
175
  "webtransport": {
176
+ "compatibility": "current",
177
+ "enabled": false,
172
178
  "max_datagram_size": null,
173
179
  "max_sessions": null,
174
180
  "max_streams": null,
175
181
  "origins": [],
176
- "path": null
182
+ "path": null,
183
+ "preferred_profile": "ietf-current",
184
+ "profiles": [
185
+ "draft02",
186
+ "draft13",
187
+ "ietf-current"
188
+ ],
189
+ "stream_receive_coalesce_bytes": 16384,
190
+ "stream_receive_max_delay_ms": 5
177
191
  }
178
192
  },
179
193
  "explicit_posture": {
@@ -120,6 +120,10 @@
120
120
  ]
121
121
  },
122
122
  "quic": {
123
+ "congestion_control": {
124
+ "algorithm": "reno",
125
+ "options": {}
126
+ },
123
127
  "early_data_policy": "deny",
124
128
  "idle_timeout": 30.0,
125
129
  "max_datagram_size": 1200,
@@ -168,11 +172,21 @@
168
172
  "ping_timeout": null
169
173
  },
170
174
  "webtransport": {
175
+ "compatibility": "current",
176
+ "enabled": false,
171
177
  "max_datagram_size": null,
172
178
  "max_sessions": null,
173
179
  "max_streams": null,
174
180
  "origins": [],
175
- "path": null
181
+ "path": null,
182
+ "preferred_profile": "ietf-current",
183
+ "profiles": [
184
+ "draft02",
185
+ "draft13",
186
+ "ietf-current"
187
+ ],
188
+ "stream_receive_coalesce_bytes": 16384,
189
+ "stream_receive_max_delay_ms": 5
176
190
  }
177
191
  },
178
192
  "explicit_posture": {
@@ -121,6 +121,10 @@
121
121
  ]
122
122
  },
123
123
  "quic": {
124
+ "congestion_control": {
125
+ "algorithm": "reno",
126
+ "options": {}
127
+ },
124
128
  "early_data_policy": "deny",
125
129
  "idle_timeout": 30.0,
126
130
  "max_datagram_size": 1200,
@@ -168,11 +172,21 @@
168
172
  "ping_timeout": null
169
173
  },
170
174
  "webtransport": {
175
+ "compatibility": "current",
176
+ "enabled": false,
171
177
  "max_datagram_size": null,
172
178
  "max_sessions": null,
173
179
  "max_streams": null,
174
180
  "origins": [],
175
- "path": null
181
+ "path": null,
182
+ "preferred_profile": "ietf-current",
183
+ "profiles": [
184
+ "draft02",
185
+ "draft13",
186
+ "ietf-current"
187
+ ],
188
+ "stream_receive_coalesce_bytes": 16384,
189
+ "stream_receive_max_delay_ms": 5
176
190
  }
177
191
  },
178
192
  "explicit_posture": {
@@ -144,6 +144,10 @@
144
144
  ]
145
145
  },
146
146
  "quic": {
147
+ "congestion_control": {
148
+ "algorithm": "reno",
149
+ "options": {}
150
+ },
147
151
  "early_data_policy": "deny",
148
152
  "idle_timeout": 30.0,
149
153
  "max_datagram_size": 1200,
@@ -192,11 +196,21 @@
192
196
  "ping_timeout": null
193
197
  },
194
198
  "webtransport": {
199
+ "compatibility": "current",
200
+ "enabled": false,
195
201
  "max_datagram_size": null,
196
202
  "max_sessions": null,
197
203
  "max_streams": null,
198
204
  "origins": [],
199
- "path": null
205
+ "path": null,
206
+ "preferred_profile": "ietf-current",
207
+ "profiles": [
208
+ "draft02",
209
+ "draft13",
210
+ "ietf-current"
211
+ ],
212
+ "stream_receive_coalesce_bytes": 16384,
213
+ "stream_receive_max_delay_ms": 5
200
214
  }
201
215
  },
202
216
  "explicit_posture": {
@@ -123,6 +123,10 @@
123
123
  ]
124
124
  },
125
125
  "quic": {
126
+ "congestion_control": {
127
+ "algorithm": "reno",
128
+ "options": {}
129
+ },
126
130
  "early_data_policy": "deny",
127
131
  "idle_timeout": 30.0,
128
132
  "max_datagram_size": 1200,
@@ -170,11 +174,21 @@
170
174
  "ping_timeout": null
171
175
  },
172
176
  "webtransport": {
177
+ "compatibility": "current",
178
+ "enabled": false,
173
179
  "max_datagram_size": null,
174
180
  "max_sessions": null,
175
181
  "max_streams": null,
176
182
  "origins": [],
177
- "path": null
183
+ "path": null,
184
+ "preferred_profile": "ietf-current",
185
+ "profiles": [
186
+ "draft02",
187
+ "draft13",
188
+ "ietf-current"
189
+ ],
190
+ "stream_receive_coalesce_bytes": 16384,
191
+ "stream_receive_max_delay_ms": 5
178
192
  }
179
193
  },
180
194
  "explicit_posture": {
@@ -0,0 +1,7 @@
1
+ from __future__ import annotations
2
+
3
+ from importlib import import_module as _import_module
4
+ import sys as _sys
5
+
6
+ _module = _import_module("tigrcorn_protocols.sessions.inventory")
7
+ _sys.modules[__name__] = _module
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tigrcorn
3
- Version: 0.3.18.dev2
3
+ Version: 0.3.18.dev3
4
4
  Summary: ASGI3 Python web server with built-in HTTP/1.1, HTTP/2, HTTP/3, QUIC, WebSocket, WebTransport, TLS, and certification tooling.
5
5
  Author-email: Jacob Stewart <jacob@swarmauri.com>
6
6
  License: Apache License
@@ -187,19 +187,21 @@ Classifier: Typing :: Typed
187
187
  Requires-Python: <3.15,>=3.10
188
188
  Description-Content-Type: text/markdown
189
189
  License-File: LICENSE
190
- Requires-Dist: tigrcorn-core==0.3.18.dev2
191
- Requires-Dist: tigrcorn-config==0.3.18.dev2
192
- Requires-Dist: tigrcorn-asgi==0.3.18.dev2
193
- Requires-Dist: tigrcorn-contract==0.3.18.dev2
194
- Requires-Dist: tigrcorn-transports==0.3.18.dev2
195
- Requires-Dist: tigrcorn-protocols==0.3.18.dev2
196
- Requires-Dist: tigrcorn-http==0.3.18.dev2
197
- Requires-Dist: tigrcorn-security==0.3.18.dev2
198
- Requires-Dist: tigrcorn-runtime==0.3.18.dev2
199
- Requires-Dist: tigrcorn-static==0.3.18.dev2
200
- Requires-Dist: tigrcorn-observability==0.3.18.dev2
201
- Requires-Dist: tigrcorn-compat==0.3.18.dev2
202
- Requires-Dist: tigrcorn-certification==0.3.18.dev2
190
+ Requires-Dist: tigrcorn-core==0.3.18.dev3
191
+ Requires-Dist: tigrcorn-quic-cc==0.3.18.dev3
192
+ Requires-Dist: tigrcorn-quic-cc-reno==0.3.18.dev3
193
+ Requires-Dist: tigrcorn-config==0.3.18.dev3
194
+ Requires-Dist: tigrcorn-asgi==0.3.18.dev3
195
+ Requires-Dist: tigrcorn-contract==0.3.18.dev3
196
+ Requires-Dist: tigrcorn-transports==0.3.18.dev3
197
+ Requires-Dist: tigrcorn-protocols==0.3.18.dev3
198
+ Requires-Dist: tigrcorn-http==0.3.18.dev3
199
+ Requires-Dist: tigrcorn-security==0.3.18.dev3
200
+ Requires-Dist: tigrcorn-runtime==0.3.18.dev3
201
+ Requires-Dist: tigrcorn-static==0.3.18.dev3
202
+ Requires-Dist: tigrcorn-observability==0.3.18.dev3
203
+ Requires-Dist: tigrcorn-compat==0.3.18.dev3
204
+ Requires-Dist: tigrcorn-certification==0.3.18.dev3
203
205
  Requires-Dist: tigr-asgi-contract>=0.3.2
204
206
  Provides-Extra: tls-x509
205
207
  Requires-Dist: cryptography>=46.0.0; extra == "tls-x509"
@@ -226,7 +228,7 @@ Requires-Dist: uvloop>=0.19.0; platform_system != "Windows" and extra == "full-f
226
228
  Provides-Extra: dev
227
229
  Requires-Dist: cryptography>=46.0.0; extra == "dev"
228
230
  Requires-Dist: pytest>=8.0; extra == "dev"
229
- Requires-Dist: ssot-registry>=0.2.18; extra == "dev"
231
+ Requires-Dist: ssot-registry<0.3,>=0.2.26; extra == "dev"
230
232
  Requires-Dist: tomli>=2.0.0; python_version < "3.11" and extra == "dev"
231
233
  Requires-Dist: aioquic>=1.3.0; extra == "dev"
232
234
  Requires-Dist: h11>=0.14.0; extra == "dev"
@@ -4,7 +4,7 @@ tigrcorn/_workspace.py,sha256=fS0p99gPQkDUCFsba5gETivCEmqZXkqVZ3yesj75QNA,460
4
4
  tigrcorn/api.py,sha256=OtckPW7botYSKNE1V_-sHNITrjL78WW6Oh1EgyG4xFg,192
5
5
  tigrcorn/app_interfaces.py,sha256=jmnfGCEeKlfOJq-tdDFiMRkeTxjoeAlDI-iP-LmGzFQ,203
6
6
  tigrcorn/availability.py,sha256=VHpMvl3Om_gbGb4zz1FFl813uOWMbtfsfcZXaIaD5BM,201
7
- tigrcorn/cli.py,sha256=pbigz3xP4vOY5a74hwrKPCfZCfTpuUuqSI0-HZqLHZ0,1398
7
+ tigrcorn/cli.py,sha256=Rao4Jpn1lyZV_QQyleCSTupofy-r8hY3kagu7I6J3qU,2457
8
8
  tigrcorn/constants.py,sha256=JHi0DFqCKBYzdFuGL-nCCI6kwJkWKvNp40bF24wAXeA,233
9
9
  tigrcorn/embedded.py,sha256=4IK8D9_oscqiYHPrMunT8Qicxfjzhf5E6wEX6bUT2y8,197
10
10
  tigrcorn/errors.py,sha256=_D_8m904r525xIsbPKjSE93lFecfritbMHXCklcSYRo,227
@@ -34,7 +34,7 @@ tigrcorn/asgi/scopes/http.py,sha256=D5ssV2FhJ4JFAXmTYs4w4iSy2u1bArI979TDnTjPgNw,
34
34
  tigrcorn/asgi/scopes/lifespan.py,sha256=tiY-TwvuHftoDNEl9G52NuH3db2tQqlJAUf5t3CwzzM,201
35
35
  tigrcorn/asgi/scopes/websocket.py,sha256=k-1L-STiPB8zMYyqcOaEJ1MtWIsdgL3lvVFIFv1WfYc,202
36
36
  tigrcorn/capabilities/__init__.py,sha256=Iy1ewV3uUvOhCBThph7TXAWYPvRudlubCgP12nk7zxY,387
37
- tigrcorn/capabilities/export.py,sha256=FvVosCQhH16B4-e4YE6ps7gEivH8YiG0RzR5ZIUfYa4,11671
37
+ tigrcorn/capabilities/export.py,sha256=l_lXt725I1UKxUGtopvVa1Qu2qdVqOkhTKwZ8M1sYHg,11986
38
38
  tigrcorn/capabilities/model.py,sha256=mK4_HXv6ik_UECbP23G2OEcZyf__njkJaKyct9nI78c,1946
39
39
  tigrcorn/capabilities/schema/__init__.py,sha256=LEfKPmQV-Oy_GEybT1R0gePGa2wiiUeE6mSNhTmlIGg,498
40
40
  tigrcorn/capabilities/schema/runtime-capability-registry.schema.json,sha256=Dq2QinKAqht65zasoNBBCrIXBmxJIv4HRAxbWTALxe4,2361
@@ -108,12 +108,12 @@ tigrcorn/observability/protocol.py,sha256=bwpUIumz53nYXoUYhfYGO-QUy9ExsEXlbK4p3x
108
108
  tigrcorn/observability/tracing.py,sha256=9lToxWhhvUQb_YHDqAtjGfHIaPLMRNE8oBa8av9kzTI,202
109
109
  tigrcorn/profiles/README.md,sha256=dhCEQ7P7REGZG0h7rxoMo8ZYPkIkUjGucxXkVQh5n5Y,1159
110
110
  tigrcorn/profiles/__init__.py,sha256=HMmqnt3W7PWir-up1KsyH0OHmGOkEbVirqWCsedFYFA,54
111
- tigrcorn/profiles/default.profile.json,sha256=mQef5v0UTm__Mpq9PnLWx0eNdrHQosVaemymF_dhXUw,4726
112
- tigrcorn/profiles/static-origin.profile.json,sha256=8nkBnaMi5lgclxym2Mxw-J-pbKrJm_zfmsf_wBGl4cg,4995
113
- tigrcorn/profiles/strict-h1-origin.profile.json,sha256=GrrtbJ1UMAmJqja-hsBTF9xnza1bBpbJIDEJEJ-vkZM,4914
114
- tigrcorn/profiles/strict-h2-origin.profile.json,sha256=oLmxc5fW0OWYzwPDUaH74sqSNqz_obrjlUdq1LmSnOI,4967
115
- tigrcorn/profiles/strict-h3-edge.profile.json,sha256=WY9hVT_avBEQq4ZeV3jZyS_cNBOK0n8PbSlg8NDDWq8,5561
116
- tigrcorn/profiles/strict-mtls-origin.profile.json,sha256=7hxFSgjicMPzV6aC5sM9cPuRXbaXl7dyVNs2cGT3wOw,5111
111
+ tigrcorn/profiles/default.profile.json,sha256=jajfqQ0DPdg_aFvv4_CQomCW46GLHZDuBMqJuN196GA,5093
112
+ tigrcorn/profiles/static-origin.profile.json,sha256=2G1JSO6RJh32y6hY1A2wIFr18qHXRRbAfZIJ__wptnM,5362
113
+ tigrcorn/profiles/strict-h1-origin.profile.json,sha256=0eSw2GH-M_yiYlDsjx5IoU93KvA4EAkttnLwgrAQt4s,5281
114
+ tigrcorn/profiles/strict-h2-origin.profile.json,sha256=Z-fbfagOXbfLkeLGu0wEPo2u-7zJ0a82TZBwZnfcuD8,5334
115
+ tigrcorn/profiles/strict-h3-edge.profile.json,sha256=dvsF-AISwOgKjjHd8q8NsYRwDlbPGhgMNEy8md0GUbU,5928
116
+ tigrcorn/profiles/strict-mtls-origin.profile.json,sha256=hzjcoH1jUa58P1N73btbok9UK7N5HGAiNo1wMkf3yDQ,5478
117
117
  tigrcorn/protocols/__init__.py,sha256=c1s9XyhEfi4wG_cE4h-ZnmIRd5vqaAyi5dB6y22W4A4,286
118
118
  tigrcorn/protocols/_compression.py,sha256=sh4yuX9hoKAcQzafMa9rzoUuPACgJ3IM2rzw3j7O5Wo,203
119
119
  tigrcorn/protocols/connect.py,sha256=AGribIadpIPuASiurvr4kQ_fH8QVxhhwe_IMjEY5VfU,198
@@ -192,6 +192,7 @@ tigrcorn/server/supervisor.py,sha256=2XrHAvE-6C0HyAVN70aYbOmvaCnqAhH_vxszbX9I5-s
192
192
  tigrcorn/sessions/__init__.py,sha256=XHDgzDUJsCpIK2tl5wbA3JcjrSnUH9MxdFXPT_2-rso,259
193
193
  tigrcorn/sessions/base.py,sha256=phXui2S26Acs4s8yviXY64q9p5J68XzxkV_fQdhBbtw,204
194
194
  tigrcorn/sessions/connection.py,sha256=_YoDQOMWq_xsCGUo-aeGK47UBfH3UDSR1x-tWrEtdSI,210
195
+ tigrcorn/sessions/inventory.py,sha256=xpkR3ukG6q2L_nzLoMYCiyNAGDxAXCRRTACvUOFyPV0,209
195
196
  tigrcorn/sessions/limits.py,sha256=dOFsmLs2I_gtoUiIJHXaM2JG4-LJEdv0c7_kDWFVw4w,206
196
197
  tigrcorn/sessions/manager.py,sha256=t-sykGS5H5VRnBhFMmX4d8ft-KqzWCeAr4gMsqmIlZU,207
197
198
  tigrcorn/sessions/metadata.py,sha256=cUbBw8_wg0taWjxx8-Wdt4iEzFUzA8ahHDSsP7eSnMM,208
@@ -250,9 +251,9 @@ tigrcorn/workers/local.py,sha256=BSBZa5-EozluDqYMRdE2YNg2FX5kG26-iUz2T6Si_J0,202
250
251
  tigrcorn/workers/model.py,sha256=mN47RL4kADnE5uHM04TRRjhMrLdeWxGYweru_-6UWEM,202
251
252
  tigrcorn/workers/process.py,sha256=vGVadYg4_R099mkkRn7tn-ZMhs8luSaSNqnNvZQM0TE,204
252
253
  tigrcorn/workers/supervisor.py,sha256=AdkRk_5LQ3XZ3o1hObVx4RgmU-LUgL-WG12k6z3V-DY,207
253
- tigrcorn-0.3.18.dev2.dist-info/licenses/LICENSE,sha256=xhBSirl227aDQNeQ8tk2v_yiU9nbQpJ4EZp6OtATX-s,9591
254
- tigrcorn-0.3.18.dev2.dist-info/METADATA,sha256=8pbEdVJ3qSRlRll18DzXhm9gDaG_htFeOXar5yccKI0,54806
255
- tigrcorn-0.3.18.dev2.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
256
- tigrcorn-0.3.18.dev2.dist-info/entry_points.txt,sha256=tE-4xvhCYWonc8fNNOe1t_gbOCjdcOooWEU38bTwMXs,99
257
- tigrcorn-0.3.18.dev2.dist-info/top_level.txt,sha256=frpP3v72vEJtw9CIPn6bidKxF1IeIsH-ZUULDAIC1sg,9
258
- tigrcorn-0.3.18.dev2.dist-info/RECORD,,
254
+ tigrcorn-0.3.18.dev3.dist-info/licenses/LICENSE,sha256=xhBSirl227aDQNeQ8tk2v_yiU9nbQpJ4EZp6OtATX-s,9591
255
+ tigrcorn-0.3.18.dev3.dist-info/METADATA,sha256=PR6DwZ4WcAWsc-xGeBLefQ4jjtQHbJxbDK6xxmBxINA,54906
256
+ tigrcorn-0.3.18.dev3.dist-info/WHEEL,sha256=mOdXR9C3wMVov7cSY8PY-XCzo3SmmWCHvGQr5csJoao,91
257
+ tigrcorn-0.3.18.dev3.dist-info/entry_points.txt,sha256=tE-4xvhCYWonc8fNNOe1t_gbOCjdcOooWEU38bTwMXs,99
258
+ tigrcorn-0.3.18.dev3.dist-info/top_level.txt,sha256=frpP3v72vEJtw9CIPn6bidKxF1IeIsH-ZUULDAIC1sg,9
259
+ tigrcorn-0.3.18.dev3.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (82.0.1)
2
+ Generator: setuptools (84.2.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5