linc-cli-kit 0.1.1__tar.gz → 0.1.3__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.
- {linc_cli_kit-0.1.1 → linc_cli_kit-0.1.3}/CHANGELOG.md +10 -0
- {linc_cli_kit-0.1.1 → linc_cli_kit-0.1.3}/PKG-INFO +1 -1
- {linc_cli_kit-0.1.1 → linc_cli_kit-0.1.3}/pyproject.toml +1 -1
- {linc_cli_kit-0.1.1 → linc_cli_kit-0.1.3}/tests/test_output.py +14 -5
- {linc_cli_kit-0.1.1 → linc_cli_kit-0.1.3}/.github/workflows/release.yml +0 -0
- {linc_cli_kit-0.1.1 → linc_cli_kit-0.1.3}/.github/workflows/test.yml +0 -0
- {linc_cli_kit-0.1.1 → linc_cli_kit-0.1.3}/CONTRIBUTING.md +0 -0
- {linc_cli_kit-0.1.1 → linc_cli_kit-0.1.3}/LICENSE +0 -0
- {linc_cli_kit-0.1.1 → linc_cli_kit-0.1.3}/NOTICE +0 -0
- {linc_cli_kit-0.1.1 → linc_cli_kit-0.1.3}/README.md +0 -0
- {linc_cli_kit-0.1.1 → linc_cli_kit-0.1.3}/SECURITY.md +0 -0
- {linc_cli_kit-0.1.1 → linc_cli_kit-0.1.3}/src/linc_cli_kit/__init__.py +0 -0
- {linc_cli_kit-0.1.1 → linc_cli_kit-0.1.3}/src/linc_cli_kit/errors.py +0 -0
- {linc_cli_kit-0.1.1 → linc_cli_kit-0.1.3}/src/linc_cli_kit/logging.py +0 -0
- {linc_cli_kit-0.1.1 → linc_cli_kit-0.1.3}/src/linc_cli_kit/mount.py +0 -0
- {linc_cli_kit-0.1.1 → linc_cli_kit-0.1.3}/src/linc_cli_kit/output.py +0 -0
- {linc_cli_kit-0.1.1 → linc_cli_kit-0.1.3}/src/linc_cli_kit/registry.py +0 -0
- {linc_cli_kit-0.1.1 → linc_cli_kit-0.1.3}/src/linc_cli_kit/schema.py +0 -0
- {linc_cli_kit-0.1.1 → linc_cli_kit-0.1.3}/src/linc_cli_kit/testing.py +0 -0
- {linc_cli_kit-0.1.1 → linc_cli_kit-0.1.3}/src/linc_cli_kit/transport.py +0 -0
- {linc_cli_kit-0.1.1 → linc_cli_kit-0.1.3}/tests/__init__.py +0 -0
- {linc_cli_kit-0.1.1 → linc_cli_kit-0.1.3}/tests/conftest.py +0 -0
- {linc_cli_kit-0.1.1 → linc_cli_kit-0.1.3}/tests/test_errors.py +0 -0
- {linc_cli_kit-0.1.1 → linc_cli_kit-0.1.3}/tests/test_json_encoding.py +0 -0
- {linc_cli_kit-0.1.1 → linc_cli_kit-0.1.3}/tests/test_logging.py +0 -0
- {linc_cli_kit-0.1.1 → linc_cli_kit-0.1.3}/tests/test_mount.py +0 -0
- {linc_cli_kit-0.1.1 → linc_cli_kit-0.1.3}/tests/test_public_docs.py +0 -0
- {linc_cli_kit-0.1.1 → linc_cli_kit-0.1.3}/tests/test_registry.py +0 -0
- {linc_cli_kit-0.1.1 → linc_cli_kit-0.1.3}/tests/test_schema.py +0 -0
- {linc_cli_kit-0.1.1 → linc_cli_kit-0.1.3}/tests/test_startup.py +0 -0
- {linc_cli_kit-0.1.1 → linc_cli_kit-0.1.3}/tests/test_testing.py +0 -0
- {linc_cli_kit-0.1.1 → linc_cli_kit-0.1.3}/tests/test_transport.py +0 -0
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to linc-cli-kit are listed here.
|
|
4
4
|
|
|
5
|
+
## [0.1.3]
|
|
6
|
+
|
|
7
|
+
- Tests: the JSON-mode heartbeat test also polls instead of a fixed sleep (the sibling of the
|
|
8
|
+
0.1.2 fix; failed on macOS / Python 3.12 CI). No library changes.
|
|
9
|
+
|
|
10
|
+
## [0.1.2]
|
|
11
|
+
|
|
12
|
+
- Tests: the heartbeat test polls instead of relying on a fixed sleep (it was timing-flaky on
|
|
13
|
+
macOS CI runners). No library changes.
|
|
14
|
+
|
|
5
15
|
## [0.1.1]
|
|
6
16
|
|
|
7
17
|
First public release. (0.1.0 was an internal, never-published tag of an earlier commit.)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: linc-cli-kit
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.3
|
|
4
4
|
Summary: Reflect a FastMCP tool registry into Click commands under one agent-grade output contract
|
|
5
5
|
Project-URL: Homepage, https://github.com/LincForge/cli-kit
|
|
6
6
|
Project-URL: Issues, https://github.com/LincForge/cli-kit/issues
|
|
@@ -143,10 +143,16 @@ def test_heartbeat_emits_text_lines_in_human_mode():
|
|
|
143
143
|
redirect_stderr(err),
|
|
144
144
|
heartbeat(interval=0.05, label="t", mode="human"),
|
|
145
145
|
):
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
146
|
+
# Poll instead of a fixed sleep: slow CI runners (macOS) can schedule the heartbeat
|
|
147
|
+
# thread late, so a fixed 0.18 s window sometimes saw only one line.
|
|
148
|
+
deadline = time.monotonic() + 5.0
|
|
149
|
+
while time.monotonic() < deadline and _elapsed_lines(err.getvalue(), "t") < 2:
|
|
150
|
+
time.sleep(0.02)
|
|
151
|
+
assert _elapsed_lines(err.getvalue(), "t") >= 2
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
def _elapsed_lines(text: str, label: str) -> int:
|
|
155
|
+
return sum(1 for line in text.split("\n") if f"[{label}]" in line and "elapsed" in line)
|
|
150
156
|
|
|
151
157
|
|
|
152
158
|
@pytest.mark.parametrize("mode", ["json", "jsonl", None])
|
|
@@ -156,7 +162,10 @@ def test_heartbeat_is_json_lines_outside_human_mode(mode, monkeypatch):
|
|
|
156
162
|
monkeypatch.delenv("LINC_OUTPUT", raising=False)
|
|
157
163
|
err = io.StringIO()
|
|
158
164
|
with redirect_stderr(err), heartbeat(interval=0.05, label="t", mode=mode):
|
|
159
|
-
|
|
165
|
+
# Poll instead of a fixed sleep (macOS CI schedules the beat thread late).
|
|
166
|
+
deadline = time.monotonic() + 5.0
|
|
167
|
+
while time.monotonic() < deadline and len(err.getvalue().splitlines()) < 2:
|
|
168
|
+
time.sleep(0.02)
|
|
160
169
|
lines = [line for line in err.getvalue().splitlines() if line]
|
|
161
170
|
assert len(lines) >= 2
|
|
162
171
|
for line in lines:
|
|
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
|