python-mcp-bootstrap 0.1.3__tar.gz → 0.1.4__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.
- {python_mcp_bootstrap-0.1.3 → python_mcp_bootstrap-0.1.4}/CHANGELOG.md +14 -0
- {python_mcp_bootstrap-0.1.3 → python_mcp_bootstrap-0.1.4}/CONTRIBUTING.md +8 -3
- {python_mcp_bootstrap-0.1.3 → python_mcp_bootstrap-0.1.4}/PKG-INFO +17 -7
- {python_mcp_bootstrap-0.1.3 → python_mcp_bootstrap-0.1.4}/README.md +14 -6
- {python_mcp_bootstrap-0.1.3 → python_mcp_bootstrap-0.1.4}/docs/integration.md +2 -2
- python_mcp_bootstrap-0.1.4/docs/releases/0.1.4.md +60 -0
- {python_mcp_bootstrap-0.1.3 → python_mcp_bootstrap-0.1.4}/pyproject.toml +3 -1
- {python_mcp_bootstrap-0.1.3 → python_mcp_bootstrap-0.1.4}/src/python_mcp_bootstrap/__init__.py +1 -1
- {python_mcp_bootstrap-0.1.3 → python_mcp_bootstrap-0.1.4}/tests/test_release_check.py +10 -10
- {python_mcp_bootstrap-0.1.3 → python_mcp_bootstrap-0.1.4}/tests/test_vendor.py +2 -2
- {python_mcp_bootstrap-0.1.3 → python_mcp_bootstrap-0.1.4}/.gitignore +0 -0
- {python_mcp_bootstrap-0.1.3 → python_mcp_bootstrap-0.1.4}/LICENSE +0 -0
- {python_mcp_bootstrap-0.1.3 → python_mcp_bootstrap-0.1.4}/SECURITY.md +0 -0
- {python_mcp_bootstrap-0.1.3 → python_mcp_bootstrap-0.1.4}/docs/contract.md +0 -0
- {python_mcp_bootstrap-0.1.3 → python_mcp_bootstrap-0.1.4}/docs/releases/0.1.0.md +0 -0
- {python_mcp_bootstrap-0.1.3 → python_mcp_bootstrap-0.1.4}/docs/releases/0.1.1.md +0 -0
- {python_mcp_bootstrap-0.1.3 → python_mcp_bootstrap-0.1.4}/docs/releases/0.1.2.md +0 -0
- {python_mcp_bootstrap-0.1.3 → python_mcp_bootstrap-0.1.4}/docs/releases/0.1.3.md +0 -0
- {python_mcp_bootstrap-0.1.3 → python_mcp_bootstrap-0.1.4}/examples/README.md +0 -0
- {python_mcp_bootstrap-0.1.3 → python_mcp_bootstrap-0.1.4}/examples/example_mcp/__init__.py +0 -0
- {python_mcp_bootstrap-0.1.3 → python_mcp_bootstrap-0.1.4}/examples/first_run.py +0 -0
- {python_mcp_bootstrap-0.1.3 → python_mcp_bootstrap-0.1.4}/examples/pyproject.toml +0 -0
- {python_mcp_bootstrap-0.1.3 → python_mcp_bootstrap-0.1.4}/scripts/__init__.py +0 -0
- {python_mcp_bootstrap-0.1.3 → python_mcp_bootstrap-0.1.4}/scripts/release_check.py +0 -0
- {python_mcp_bootstrap-0.1.3 → python_mcp_bootstrap-0.1.4}/scripts/vendor.py +0 -0
- {python_mcp_bootstrap-0.1.3 → python_mcp_bootstrap-0.1.4}/src/python_mcp_bootstrap/__main__.py +0 -0
- {python_mcp_bootstrap-0.1.3 → python_mcp_bootstrap-0.1.4}/src/python_mcp_bootstrap/cli.py +0 -0
- {python_mcp_bootstrap-0.1.3 → python_mcp_bootstrap-0.1.4}/src/python_mcp_bootstrap/core.py +0 -0
- {python_mcp_bootstrap-0.1.3 → python_mcp_bootstrap-0.1.4}/src/python_mcp_bootstrap/py.typed +0 -0
- {python_mcp_bootstrap-0.1.3 → python_mcp_bootstrap-0.1.4}/tests/test_bootstrap.py +0 -0
- {python_mcp_bootstrap-0.1.3 → python_mcp_bootstrap-0.1.4}/tests/test_cli.py +0 -0
- {python_mcp_bootstrap-0.1.3 → python_mcp_bootstrap-0.1.4}/tests/test_core.py +0 -0
- {python_mcp_bootstrap-0.1.3 → python_mcp_bootstrap-0.1.4}/tests/test_examples.py +0 -0
- {python_mcp_bootstrap-0.1.3 → python_mcp_bootstrap-0.1.4}/tests/test_package.py +0 -0
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.4 — 2026-11-04
|
|
4
|
+
|
|
5
|
+
- Correct the PyPI project page. PyPI renders the README captured when the
|
|
6
|
+
artifacts were built, and the 0.1.3 build predated the package being
|
|
7
|
+
published, so its page still said the project was "not published on PyPI"
|
|
8
|
+
and that CI was advisory. This release ships the current README. `core.py`
|
|
9
|
+
is unchanged.
|
|
10
|
+
- Pin every GitHub Action used by `ci`, `release-gate`, and `publish` to a
|
|
11
|
+
commit SHA instead of a mutable tag or branch. The publish action runs with
|
|
12
|
+
`id-token: write`, so a moved ref could mint a PyPI token.
|
|
13
|
+
- Add `Changelog` and `Documentation` project URLs.
|
|
14
|
+
- Note for the record: 0.1.3 reached PyPI after its tag was cut, so the 0.1.3
|
|
15
|
+
release notes describe the state before that publication.
|
|
16
|
+
|
|
3
17
|
## 0.1.3 — 2026-11-04
|
|
4
18
|
|
|
5
19
|
- Restore the single handoff that 0.1.2 removed. 0.1.2 stopped exec'ing on the
|
|
@@ -36,9 +36,14 @@ python scripts/vendor.py --target examples --dest _vendor/python_mcp_bootstrap.p
|
|
|
36
36
|
|
|
37
37
|
## CI status
|
|
38
38
|
|
|
39
|
-
|
|
40
|
-
required status checks
|
|
41
|
-
|
|
39
|
+
`main` is protected. The wheel/release gate, the Python 3.12 import job, and
|
|
40
|
+
the vendored example run are required status checks before a pull request
|
|
41
|
+
merges, and force-pushes and branch deletions are blocked.
|
|
42
|
+
|
|
43
|
+
The 3.14/3.15 matrix runs alongside those required jobs, but it is not a
|
|
44
|
+
required check, so read the run rather than the badge: a queued macOS or
|
|
45
|
+
Windows cell is not green. A green tag run is the strongest evidence for a
|
|
46
|
+
release.
|
|
42
47
|
|
|
43
48
|
## Rules
|
|
44
49
|
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: python-mcp-bootstrap
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.4
|
|
4
4
|
Summary: Pre-install Python runtime bootstrap for MCP applications.
|
|
5
5
|
Project-URL: Repository, https://github.com/4zhmv6zvj2-afk/python-mcp-bootstrap
|
|
6
|
+
Project-URL: Changelog, https://github.com/4zhmv6zvj2-afk/python-mcp-bootstrap/blob/main/CHANGELOG.md
|
|
7
|
+
Project-URL: Documentation, https://github.com/4zhmv6zvj2-afk/python-mcp-bootstrap/blob/main/docs/contract.md
|
|
6
8
|
Author-email: Ron <4zhmv6zvj2-afk@users.noreply.github.com>
|
|
7
9
|
License-Expression: MIT
|
|
8
10
|
License-File: LICENSE
|
|
@@ -25,6 +27,8 @@ Description-Content-Type: text/markdown
|
|
|
25
27
|
|
|
26
28
|
# python-mcp-bootstrap
|
|
27
29
|
|
|
30
|
+
[](https://github.com/4zhmv6zvj2-afk/python-mcp-bootstrap/actions/workflows/ci.yml)
|
|
31
|
+
|
|
28
32
|
A small setup helper for Python apps that use MCP.
|
|
29
33
|
|
|
30
34
|
MCP (Model Context Protocol) is a way for AI assistants to use tools and data.
|
|
@@ -40,7 +44,6 @@ no runtime dependency on the MCP SDK and never imports one.
|
|
|
40
44
|
it. If you are a developer adding it to an app, jump to
|
|
41
45
|
[For developers](#for-developers).
|
|
42
46
|
|
|
43
|
-
|
|
44
47
|
## Do I need this?
|
|
45
48
|
|
|
46
49
|
- If an app's setup tells you to run `python first_run.py`, that script uses
|
|
@@ -85,10 +88,15 @@ python -m python_mcp_bootstrap --check
|
|
|
85
88
|
python -m python_mcp_bootstrap --version
|
|
86
89
|
```
|
|
87
90
|
|
|
88
|
-
|
|
91
|
+
Install from PyPI:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
python -m pip install python-mcp-bootstrap
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Each release also attaches the wheel, the sdist, and `SHA256SUMS` to the
|
|
89
98
|
[releases page](https://github.com/4zhmv6zvj2-afk/python-mcp-bootstrap/releases).
|
|
90
|
-
|
|
91
|
-
does not resolve.
|
|
99
|
+
Both are built from the same tagged tree, so their digests match.
|
|
92
100
|
|
|
93
101
|
Use `BootstrapSpec` and `bootstrap()` from an app's first-run wrapper:
|
|
94
102
|
|
|
@@ -183,8 +191,10 @@ python -m build
|
|
|
183
191
|
|
|
184
192
|
CI targets Python 3.14.10 and 3.15.2 on Ubuntu, macOS, and Windows, plus a 3.12
|
|
185
193
|
compatibility job, a wheel/release gate, and the vendored example first run.
|
|
186
|
-
|
|
187
|
-
before
|
|
194
|
+
`main` is protected: the release gate, the 3.12 job, and the vendored example
|
|
195
|
+
run are required before a merge, and force-pushes and deletions are blocked.
|
|
196
|
+
The OS matrix runs alongside them, so read the run rather than the badge — a
|
|
197
|
+
queued cell is not green.
|
|
188
198
|
|
|
189
199
|
## Who maintains this
|
|
190
200
|
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# python-mcp-bootstrap
|
|
2
2
|
|
|
3
|
+
[](https://github.com/4zhmv6zvj2-afk/python-mcp-bootstrap/actions/workflows/ci.yml)
|
|
4
|
+
|
|
3
5
|
A small setup helper for Python apps that use MCP.
|
|
4
6
|
|
|
5
7
|
MCP (Model Context Protocol) is a way for AI assistants to use tools and data.
|
|
@@ -15,7 +17,6 @@ no runtime dependency on the MCP SDK and never imports one.
|
|
|
15
17
|
it. If you are a developer adding it to an app, jump to
|
|
16
18
|
[For developers](#for-developers).
|
|
17
19
|
|
|
18
|
-
|
|
19
20
|
## Do I need this?
|
|
20
21
|
|
|
21
22
|
- If an app's setup tells you to run `python first_run.py`, that script uses
|
|
@@ -60,10 +61,15 @@ python -m python_mcp_bootstrap --check
|
|
|
60
61
|
python -m python_mcp_bootstrap --version
|
|
61
62
|
```
|
|
62
63
|
|
|
63
|
-
|
|
64
|
+
Install from PyPI:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
python -m pip install python-mcp-bootstrap
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Each release also attaches the wheel, the sdist, and `SHA256SUMS` to the
|
|
64
71
|
[releases page](https://github.com/4zhmv6zvj2-afk/python-mcp-bootstrap/releases).
|
|
65
|
-
|
|
66
|
-
does not resolve.
|
|
72
|
+
Both are built from the same tagged tree, so their digests match.
|
|
67
73
|
|
|
68
74
|
Use `BootstrapSpec` and `bootstrap()` from an app's first-run wrapper:
|
|
69
75
|
|
|
@@ -158,8 +164,10 @@ python -m build
|
|
|
158
164
|
|
|
159
165
|
CI targets Python 3.14.10 and 3.15.2 on Ubuntu, macOS, and Windows, plus a 3.12
|
|
160
166
|
compatibility job, a wheel/release gate, and the vendored example first run.
|
|
161
|
-
|
|
162
|
-
before
|
|
167
|
+
`main` is protected: the release gate, the 3.12 job, and the vendored example
|
|
168
|
+
run are required before a merge, and force-pushes and deletions are blocked.
|
|
169
|
+
The OS matrix runs alongside them, so read the run rather than the badge — a
|
|
170
|
+
queued cell is not green.
|
|
163
171
|
|
|
164
172
|
## Who maintains this
|
|
165
173
|
|
|
@@ -24,8 +24,8 @@ consumer/
|
|
|
24
24
|
```json
|
|
25
25
|
{
|
|
26
26
|
"name": "python-mcp-bootstrap",
|
|
27
|
-
"version": "0.1.
|
|
28
|
-
"tag": "v0.1.
|
|
27
|
+
"version": "0.1.4",
|
|
28
|
+
"tag": "v0.1.4",
|
|
29
29
|
"commit": "<full commit>",
|
|
30
30
|
"file": "python_mcp_bootstrap.py",
|
|
31
31
|
"sha256": "<sha256 of the vendored file>"
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# python-mcp-bootstrap v0.1.4
|
|
2
|
+
|
|
3
|
+
A packaging correction. `src/python_mcp_bootstrap/core.py` is unchanged from
|
|
4
|
+
v0.1.3; there is no behaviour change and nothing to migrate.
|
|
5
|
+
|
|
6
|
+
## Fixed
|
|
7
|
+
|
|
8
|
+
- **The PyPI project page now describes the project accurately.** PyPI renders
|
|
9
|
+
the README captured when the uploaded artifacts were built. The v0.1.3 build
|
|
10
|
+
happened before the package was published, so its page still said the project
|
|
11
|
+
was "not published on PyPI" and that CI was advisory. PyPI metadata is
|
|
12
|
+
immutable per upload, so the only way to correct the page is a new version;
|
|
13
|
+
this release ships the current README.
|
|
14
|
+
- **GitHub Actions are pinned to commit SHAs** in `ci`, `release-gate`, and
|
|
15
|
+
`publish`, instead of mutable tags and branches. The publish action runs with
|
|
16
|
+
`id-token: write` and can mint a PyPI token, so a moved ref was the sharpest
|
|
17
|
+
supply-chain edge in the repository.
|
|
18
|
+
- `Changelog` and `Documentation` project URLs were added to the package
|
|
19
|
+
metadata.
|
|
20
|
+
|
|
21
|
+
## Honest limits
|
|
22
|
+
|
|
23
|
+
- The v0.1.3 page on PyPI stays wrong permanently. Only 0.1.4 and later render
|
|
24
|
+
the corrected README. v0.1.3 remains installable and its code is identical to
|
|
25
|
+
0.1.4 apart from packaging metadata.
|
|
26
|
+
- Pinning actions to SHAs means updates are manual. Without Dependabot version
|
|
27
|
+
updates, the pins will drift from the actions' releases; that is the price of
|
|
28
|
+
not trusting a mutable ref.
|
|
29
|
+
|
|
30
|
+
## Install and verify
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
python -m pip install python-mcp-bootstrap==0.1.4
|
|
34
|
+
python -m python_mcp_bootstrap --check
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Vendor into a consumer
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
python scripts/vendor.py \
|
|
41
|
+
--target /path/to/consumer \
|
|
42
|
+
--dest src/example/_vendor/python_mcp_bootstrap.py
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
`core.py` did not change, so an existing v0.1.3 vendored copy stays
|
|
46
|
+
byte-identical. Re-vendoring to 0.1.4 only updates the manifest.
|
|
47
|
+
|
|
48
|
+
## Release integrity
|
|
49
|
+
|
|
50
|
+
- v0.1.4 is an annotated tag. v0.1.3, v0.1.2, v0.1.1, and v0.1.0 stay in place
|
|
51
|
+
as history.
|
|
52
|
+
- The wheel and sdist are attached to this GitHub release and published to PyPI
|
|
53
|
+
by the OIDC workflow; `dist/` stays gitignored.
|
|
54
|
+
- Tags are unsigned for now. An unsigned tag is not a signature; verify the
|
|
55
|
+
artifacts by digest.
|
|
56
|
+
|
|
57
|
+
## Artifacts
|
|
58
|
+
|
|
59
|
+
- `python_mcp_bootstrap-0.1.4-py3-none-any.whl`
|
|
60
|
+
- `python_mcp_bootstrap-0.1.4.tar.gz`
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "python-mcp-bootstrap"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.4"
|
|
8
8
|
description = "Pre-install Python runtime bootstrap for MCP applications."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.14"
|
|
@@ -39,6 +39,8 @@ python-mcp-bootstrap = "python_mcp_bootstrap.cli:main"
|
|
|
39
39
|
|
|
40
40
|
[project.urls]
|
|
41
41
|
Repository = "https://github.com/4zhmv6zvj2-afk/python-mcp-bootstrap"
|
|
42
|
+
Changelog = "https://github.com/4zhmv6zvj2-afk/python-mcp-bootstrap/blob/main/CHANGELOG.md"
|
|
43
|
+
Documentation = "https://github.com/4zhmv6zvj2-afk/python-mcp-bootstrap/blob/main/docs/contract.md"
|
|
42
44
|
|
|
43
45
|
[tool.hatch.build.targets.wheel]
|
|
44
46
|
packages = ["src/python_mcp_bootstrap"]
|
|
@@ -36,7 +36,7 @@ def _local_tag_is_annotated(tag: str) -> bool:
|
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
def test_package_version_matches_the_release() -> None:
|
|
39
|
-
assert package_version(ROOT) == "0.1.
|
|
39
|
+
assert package_version(ROOT) == "0.1.4"
|
|
40
40
|
|
|
41
41
|
|
|
42
42
|
def test_current_tree_is_release_ready() -> None:
|
|
@@ -44,12 +44,12 @@ def test_current_tree_is_release_ready() -> None:
|
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
@pytest.mark.skipif(
|
|
47
|
-
not _local_tag_is_annotated("v0.1.
|
|
48
|
-
reason="local v0.1.
|
|
47
|
+
not _local_tag_is_annotated("v0.1.4"),
|
|
48
|
+
reason="local v0.1.4 is absent or not annotated; CI restores it after checkout",
|
|
49
49
|
)
|
|
50
50
|
def test_matching_release_tag_passes(monkeypatch: pytest.MonkeyPatch) -> None:
|
|
51
51
|
monkeypatch.setattr(release_check, "_release_asset_errors", lambda *_args: [])
|
|
52
|
-
assert check(ROOT, allow_dirty=True, tag="v0.1.
|
|
52
|
+
assert check(ROOT, allow_dirty=True, tag="v0.1.4") == []
|
|
53
53
|
|
|
54
54
|
|
|
55
55
|
def test_mismatched_release_tag_fails() -> None:
|
|
@@ -83,7 +83,7 @@ def test_release_asset_check_skips_without_gh(
|
|
|
83
83
|
monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture[str]
|
|
84
84
|
) -> None:
|
|
85
85
|
monkeypatch.setattr(release_check.shutil, "which", lambda _name: None)
|
|
86
|
-
assert _release_asset_errors(ROOT, "v0.1.
|
|
86
|
+
assert _release_asset_errors(ROOT, "v0.1.4", "0.1.4") == []
|
|
87
87
|
assert "skipping" in capsys.readouterr().err
|
|
88
88
|
|
|
89
89
|
|
|
@@ -91,12 +91,12 @@ def test_release_asset_check_reports_missing_assets(monkeypatch: pytest.MonkeyPa
|
|
|
91
91
|
monkeypatch.setattr(release_check.shutil, "which", lambda _name: "/fake/gh")
|
|
92
92
|
result = SimpleNamespace(
|
|
93
93
|
returncode=0,
|
|
94
|
-
stdout="python_mcp_bootstrap-0.1.
|
|
94
|
+
stdout="python_mcp_bootstrap-0.1.4-py3-none-any.whl\nSHA256SUMS\n",
|
|
95
95
|
stderr="",
|
|
96
96
|
)
|
|
97
97
|
monkeypatch.setattr(release_check.subprocess, "run", lambda *_args, **_kwargs: result)
|
|
98
98
|
|
|
99
|
-
errors = _release_asset_errors(ROOT, "v0.1.
|
|
99
|
+
errors = _release_asset_errors(ROOT, "v0.1.4", "0.1.4")
|
|
100
100
|
assert any("tar.gz" in error for error in errors)
|
|
101
101
|
|
|
102
102
|
|
|
@@ -105,15 +105,15 @@ def test_release_asset_check_accepts_full_assets(monkeypatch: pytest.MonkeyPatch
|
|
|
105
105
|
result = SimpleNamespace(
|
|
106
106
|
returncode=0,
|
|
107
107
|
stdout=(
|
|
108
|
-
"python_mcp_bootstrap-0.1.
|
|
109
|
-
"python_mcp_bootstrap-0.1.
|
|
108
|
+
"python_mcp_bootstrap-0.1.4-py3-none-any.whl\n"
|
|
109
|
+
"python_mcp_bootstrap-0.1.4.tar.gz\n"
|
|
110
110
|
"SHA256SUMS\n"
|
|
111
111
|
),
|
|
112
112
|
stderr="",
|
|
113
113
|
)
|
|
114
114
|
monkeypatch.setattr(release_check.subprocess, "run", lambda *_args, **_kwargs: result)
|
|
115
115
|
|
|
116
|
-
assert _release_asset_errors(ROOT, "v0.1.
|
|
116
|
+
assert _release_asset_errors(ROOT, "v0.1.4", "0.1.4") == []
|
|
117
117
|
|
|
118
118
|
|
|
119
119
|
def test_check_requires_a_notes_file(tmp_path: Path) -> None:
|
|
@@ -23,10 +23,10 @@ def test_vendor_writes_core_and_manifest(tmp_path: Path) -> None:
|
|
|
23
23
|
assert manifest_path.is_file()
|
|
24
24
|
manifest = json.loads(manifest_path.read_text(encoding="utf-8"))
|
|
25
25
|
assert manifest["name"] == "python-mcp-bootstrap"
|
|
26
|
-
assert manifest["version"] == "0.1.
|
|
26
|
+
assert manifest["version"] == "0.1.4"
|
|
27
27
|
assert manifest["file"] == dest.name
|
|
28
28
|
assert manifest["sha256"] == sha256(dest)
|
|
29
|
-
assert manifest["tag"] == "v0.1.
|
|
29
|
+
assert manifest["tag"] == "v0.1.4"
|
|
30
30
|
assert manifest["source"].startswith("https://github.com/")
|
|
31
31
|
assert len(manifest["commit"]) == 40
|
|
32
32
|
|
|
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
|
{python_mcp_bootstrap-0.1.3 → python_mcp_bootstrap-0.1.4}/src/python_mcp_bootstrap/__main__.py
RENAMED
|
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
|