mcp-postgresql-ops 3.4.1__tar.gz → 3.4.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.
- mcp_postgresql_ops-3.4.1/README.md → mcp_postgresql_ops-3.4.3/PKG-INFO +20 -14
- mcp_postgresql_ops-3.4.1/src/mcp_postgresql_ops.egg-info/PKG-INFO → mcp_postgresql_ops-3.4.3/README.md +2 -32
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/scripts/check_release.py +3 -6
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/scripts/publish_release.py +1 -3
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3/src/mcp_postgresql_ops.egg-info}/PKG-INFO +3 -15
- mcp_postgresql_ops-3.4.3/src/mcp_postgresql_ops.egg-info/scm_version.json +8 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/tests/test_release.py +30 -14
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/uv.lock +100 -69
- mcp_postgresql_ops-3.4.1/src/mcp_postgresql_ops.egg-info/scm_version.json +0 -8
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/.env.example +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/.github/CONTRIBUTING.md +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/.github/FUNDING.yml +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/.github/ISSUE_TEMPLATE/documentation.md +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/.github/ISSUE_TEMPLATE/question.md +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/.github/copilot-instructions.md +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/.github/dependabot.yml +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/.github/pull_request_template.md +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/.github/workflows/pypi-publish.yml +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/.github/workflows/test.yml +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/.gitignore +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/.gitleaks.toml +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/.pre-commit-config.yaml +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/.python-version +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/Dockerfile.MCP-Server +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/Dockerfile.MCPO-Proxy +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/LICENSE +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/MANIFEST.in +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/SECURITY.md +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/_config.yml +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/_includes/head-custom-google-analytics.html +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/build-mcp-server-docker-image.sh +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/build-mcpo-server-docker-image.sh +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/docker-compose.custom-db.yml +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/docker-compose.yml +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/img/MCP-Workflow-of-Quickstart-Tutorial.png +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/img/screenshot-000.png +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/img/screenshot-001.png +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/img/screenshot-002.png +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/img/screenshot-004.png +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/img/screenshot-005.png +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/img/screenshot-claude-desktop-airflow-connections-html.png +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/img/screenshot-claude-desktop-mermaid-diagram.png +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/img/screenshot-claude-desktop-question-001.png +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/img/screenshot-swagger-api.png +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/mcp-config.json.http +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/mcp-config.json.stdio +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/pyproject.toml +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/run-mcp-inspector-local.sh +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/run-mcp-inspector-pypi.sh +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/scripts/create-test-data.sh +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/scripts/create-test-data.sql +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/scripts/enable-pgsql-extensions.sh +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/scripts/mcp-server-docker-cmd.sh +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/setup.cfg +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/src/mcp_postgresql_ops/__init__.py +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/src/mcp_postgresql_ops/__main__.py +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/src/mcp_postgresql_ops/functions.py +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/src/mcp_postgresql_ops/mcp_main.py +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/src/mcp_postgresql_ops/prompt_template.md +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/src/mcp_postgresql_ops/version_compat.py +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/src/mcp_postgresql_ops.egg-info/SOURCES.txt +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/src/mcp_postgresql_ops.egg-info/dependency_links.txt +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/src/mcp_postgresql_ops.egg-info/entry_points.txt +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/src/mcp_postgresql_ops.egg-info/requires.txt +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/src/mcp_postgresql_ops.egg-info/scm_file_list.json +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/src/mcp_postgresql_ops.egg-info/top_level.txt +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/tests/__init__.py +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/tests/conftest.py +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/tests/docker/docker-compose.test.yml +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/tests/docker/init-test-db.sql +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/tests/test_tool_schema_null_defaults.py +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/tests/test_tools_integration.py +0 -0
- {mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/tests/test_version_compat.py +0 -0
|
@@ -1,5 +1,25 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: mcp-postgresql-ops
|
|
3
|
+
Version: 3.4.3
|
|
4
|
+
Summary: Add your description here
|
|
5
|
+
Author-email: JungJungIn <call518@gmail.com>
|
|
6
|
+
Requires-Python: >=3.12
|
|
7
|
+
Description-Content-Type: text/markdown
|
|
8
|
+
License-File: LICENSE
|
|
9
|
+
Requires-Dist: fastmcp>=2.12.3
|
|
10
|
+
Requires-Dist: asyncpg>=0.29.0
|
|
11
|
+
Requires-Dist: psycopg2-binary>=2.9.7
|
|
12
|
+
Requires-Dist: setuptools-scm>=10.0.5
|
|
13
|
+
Requires-Dist: pre-commit>=4.6.0
|
|
14
|
+
Provides-Extra: dev
|
|
15
|
+
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
16
|
+
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
|
|
17
|
+
Dynamic: license-file
|
|
18
|
+
|
|
1
19
|
# MCP Server for PostgreSQL Operations and Monitoring
|
|
2
20
|
|
|
21
|
+
[](https://mcpvault.io/servers/mcp-postgresql-ops/health?utm_source=external_badge&utm_medium=referral&utm_campaign=mcp_health_report)
|
|
22
|
+
|
|
3
23
|
[](https://mcptoplist.com/server/smithery%2Fcall518%2Fmcp-postgresql-ops)
|
|
4
24
|
|
|
5
25
|
[](https://opensource.org/licenses/MIT)
|
|
@@ -291,20 +311,6 @@ The `create-test-data.sql` script is executed by the `postgres-init-extensions`
|
|
|
291
311
|
|
|
292
312
|
---
|
|
293
313
|
|
|
294
|
-
## Tagged Releases
|
|
295
|
-
|
|
296
|
-
The GitHub Actions workflow publishes a pushed version tag (for example,
|
|
297
|
-
`v1.2.3`, `1.2.3`, or `1.2.3rc1`) to TestPyPI, then PyPI, and finally creates
|
|
298
|
-
a GitHub Release with the tag as its title. Both distribution versions must match
|
|
299
|
-
the tag. The existing `testpypi` and `pypi` GitHub environments must have Trusted
|
|
300
|
-
Publishing configured on their respective package indexes.
|
|
301
|
-
|
|
302
|
-
Release notes include full commit messages since the most recently published
|
|
303
|
-
GitHub Release, or all commits for the first release. The previous release tag
|
|
304
|
-
must be an ancestor of the new tag. Alpha, beta, and release candidate tags create
|
|
305
|
-
prereleases. Existing published releases are preserved; an existing draft requires
|
|
306
|
-
manual review. A failed publication prevents subsequent publication jobs.
|
|
307
|
-
|
|
308
314
|
## Installation
|
|
309
315
|
|
|
310
316
|
### From PyPI (Recommended)
|
|
@@ -1,23 +1,7 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: mcp-postgresql-ops
|
|
3
|
-
Version: 3.4.1
|
|
4
|
-
Summary: Add your description here
|
|
5
|
-
Author-email: JungJungIn <call518@gmail.com>
|
|
6
|
-
Requires-Python: >=3.12
|
|
7
|
-
Description-Content-Type: text/markdown
|
|
8
|
-
License-File: LICENSE
|
|
9
|
-
Requires-Dist: fastmcp>=2.12.3
|
|
10
|
-
Requires-Dist: asyncpg>=0.29.0
|
|
11
|
-
Requires-Dist: psycopg2-binary>=2.9.7
|
|
12
|
-
Requires-Dist: setuptools-scm>=10.0.5
|
|
13
|
-
Requires-Dist: pre-commit>=4.6.0
|
|
14
|
-
Provides-Extra: dev
|
|
15
|
-
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
16
|
-
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
|
|
17
|
-
Dynamic: license-file
|
|
18
|
-
|
|
19
1
|
# MCP Server for PostgreSQL Operations and Monitoring
|
|
20
2
|
|
|
3
|
+
[](https://mcpvault.io/servers/mcp-postgresql-ops/health?utm_source=external_badge&utm_medium=referral&utm_campaign=mcp_health_report)
|
|
4
|
+
|
|
21
5
|
[](https://mcptoplist.com/server/smithery%2Fcall518%2Fmcp-postgresql-ops)
|
|
22
6
|
|
|
23
7
|
[](https://opensource.org/licenses/MIT)
|
|
@@ -309,20 +293,6 @@ The `create-test-data.sql` script is executed by the `postgres-init-extensions`
|
|
|
309
293
|
|
|
310
294
|
---
|
|
311
295
|
|
|
312
|
-
## Tagged Releases
|
|
313
|
-
|
|
314
|
-
The GitHub Actions workflow publishes a pushed version tag (for example,
|
|
315
|
-
`v1.2.3`, `1.2.3`, or `1.2.3rc1`) to TestPyPI, then PyPI, and finally creates
|
|
316
|
-
a GitHub Release with the tag as its title. Both distribution versions must match
|
|
317
|
-
the tag. The existing `testpypi` and `pypi` GitHub environments must have Trusted
|
|
318
|
-
Publishing configured on their respective package indexes.
|
|
319
|
-
|
|
320
|
-
Release notes include full commit messages since the most recently published
|
|
321
|
-
GitHub Release, or all commits for the first release. The previous release tag
|
|
322
|
-
must be an ancestor of the new tag. Alpha, beta, and release candidate tags create
|
|
323
|
-
prereleases. Existing published releases are preserved; an existing draft requires
|
|
324
|
-
manual review. A failed publication prevents subsequent publication jobs.
|
|
325
|
-
|
|
326
296
|
## Installation
|
|
327
297
|
|
|
328
298
|
### From PyPI (Recommended)
|
|
@@ -10,13 +10,10 @@ from pathlib import Path
|
|
|
10
10
|
|
|
11
11
|
def release_version(tag: str) -> str:
|
|
12
12
|
"""Validate a canonical release tag and return its package version."""
|
|
13
|
-
version = tag.removeprefix("v")
|
|
14
13
|
number = r"(?:0|[1-9][0-9]*)"
|
|
15
|
-
if not re.fullmatch(
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
raise ValueError("Use a tag such as 0.5.7, v0.5.7, or 0.5.7rc1")
|
|
19
|
-
return version
|
|
14
|
+
if not re.fullmatch(rf"{number}\.{number}\.{number}", tag):
|
|
15
|
+
raise ValueError("Use a numeric major.minor.patch tag such as 0.5.7")
|
|
16
|
+
return tag
|
|
20
17
|
|
|
21
18
|
|
|
22
19
|
def check_release(tag: str, directory: Path) -> None:
|
|
@@ -69,7 +69,7 @@ def release_notes(repository: str, tag: str, previous: str | None) -> str:
|
|
|
69
69
|
|
|
70
70
|
def publish_release(repository: str, tag: str) -> None:
|
|
71
71
|
"""Create a release once, using the last published release as the baseline."""
|
|
72
|
-
|
|
72
|
+
release_version(tag)
|
|
73
73
|
current = command("git", "rev-parse", "--verify", f"refs/tags/{tag}^{{commit}}")
|
|
74
74
|
remote = command("gh", "api", f"repos/{repository}/commits/{tag}", "--jq", ".sha")
|
|
75
75
|
if current != remote or current != command("git", "rev-parse", "HEAD"):
|
|
@@ -117,8 +117,6 @@ def publish_release(repository: str, tag: str) -> None:
|
|
|
117
117
|
"--notes-file",
|
|
118
118
|
str(path),
|
|
119
119
|
]
|
|
120
|
-
if re.search(r"(?:a|b|rc)\d+$", version):
|
|
121
|
-
args.extend(["--prerelease", "--latest=false"])
|
|
122
120
|
command(*args)
|
|
123
121
|
print(f"Published GitHub Release {tag} (previous release: {previous or 'none'}).")
|
|
124
122
|
|
{mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3/src/mcp_postgresql_ops.egg-info}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mcp-postgresql-ops
|
|
3
|
-
Version: 3.4.
|
|
3
|
+
Version: 3.4.3
|
|
4
4
|
Summary: Add your description here
|
|
5
5
|
Author-email: JungJungIn <call518@gmail.com>
|
|
6
6
|
Requires-Python: >=3.12
|
|
@@ -18,6 +18,8 @@ Dynamic: license-file
|
|
|
18
18
|
|
|
19
19
|
# MCP Server for PostgreSQL Operations and Monitoring
|
|
20
20
|
|
|
21
|
+
[](https://mcpvault.io/servers/mcp-postgresql-ops/health?utm_source=external_badge&utm_medium=referral&utm_campaign=mcp_health_report)
|
|
22
|
+
|
|
21
23
|
[](https://mcptoplist.com/server/smithery%2Fcall518%2Fmcp-postgresql-ops)
|
|
22
24
|
|
|
23
25
|
[](https://opensource.org/licenses/MIT)
|
|
@@ -309,20 +311,6 @@ The `create-test-data.sql` script is executed by the `postgres-init-extensions`
|
|
|
309
311
|
|
|
310
312
|
---
|
|
311
313
|
|
|
312
|
-
## Tagged Releases
|
|
313
|
-
|
|
314
|
-
The GitHub Actions workflow publishes a pushed version tag (for example,
|
|
315
|
-
`v1.2.3`, `1.2.3`, or `1.2.3rc1`) to TestPyPI, then PyPI, and finally creates
|
|
316
|
-
a GitHub Release with the tag as its title. Both distribution versions must match
|
|
317
|
-
the tag. The existing `testpypi` and `pypi` GitHub environments must have Trusted
|
|
318
|
-
Publishing configured on their respective package indexes.
|
|
319
|
-
|
|
320
|
-
Release notes include full commit messages since the most recently published
|
|
321
|
-
GitHub Release, or all commits for the first release. The previous release tag
|
|
322
|
-
must be an ancestor of the new tag. Alpha, beta, and release candidate tags create
|
|
323
|
-
prereleases. Existing published releases are preserved; an existing draft requires
|
|
324
|
-
manual review. A failed publication prevents subsequent publication jobs.
|
|
325
|
-
|
|
326
314
|
## Installation
|
|
327
315
|
|
|
328
316
|
### From PyPI (Recommended)
|
|
@@ -16,12 +16,18 @@ from scripts.check_release import check_release, release_version
|
|
|
16
16
|
from scripts.publish_release import publish_release, release_notes
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
@pytest.mark.parametrize("tag", ["
|
|
19
|
+
@pytest.mark.parametrize("tag", ["0.0.0", "1.2.3", "10.20.30"])
|
|
20
20
|
def test_release_version(tag):
|
|
21
|
-
assert release_version(tag) == tag
|
|
21
|
+
assert release_version(tag) == tag
|
|
22
22
|
|
|
23
23
|
|
|
24
|
-
@pytest.mark.parametrize(
|
|
24
|
+
@pytest.mark.parametrize(
|
|
25
|
+
"tag",
|
|
26
|
+
[
|
|
27
|
+
"latest", "1.2", "1.2.3.4", "v1.2.3", "01.2.3", "1.02.3", "1.2.03",
|
|
28
|
+
"1.2.3a1", "1.2.3b1", "1.2.3rc1", "1.2.3+local", "1..3", "1.2.3",
|
|
29
|
+
],
|
|
30
|
+
)
|
|
25
31
|
def test_invalid_release_version(tag):
|
|
26
32
|
with pytest.raises(ValueError):
|
|
27
33
|
release_version(tag)
|
|
@@ -37,20 +43,20 @@ def test_distribution_versions(tmp_path, version):
|
|
|
37
43
|
info.size = len(metadata)
|
|
38
44
|
archive.addfile(info, io.BytesIO(metadata))
|
|
39
45
|
if version == "1.2.3":
|
|
40
|
-
check_release("
|
|
46
|
+
check_release("1.2.3", tmp_path)
|
|
41
47
|
else:
|
|
42
48
|
with pytest.raises(ValueError, match="expected"):
|
|
43
|
-
check_release("
|
|
49
|
+
check_release("1.2.3", tmp_path)
|
|
44
50
|
|
|
45
51
|
|
|
46
52
|
def test_notes_use_previous_release_and_preserve_messages():
|
|
47
53
|
message = "Fix issue\n\n```\n$(touch unwanted)\n```"
|
|
48
54
|
with patch("scripts.publish_release.command") as command:
|
|
49
55
|
command.side_effect = ["new", "old", "", f"abcdef123\0{message}\0"]
|
|
50
|
-
notes = release_notes("owner/repo", "
|
|
56
|
+
notes = release_notes("owner/repo", "1.2.3", "1.2.2")
|
|
51
57
|
assert message in notes
|
|
52
58
|
assert "````text" in notes
|
|
53
|
-
assert "compare/
|
|
59
|
+
assert "compare/1.2.2...1.2.3" in notes
|
|
54
60
|
assert command.call_args.args[-2:] == ("old..new", "--")
|
|
55
61
|
|
|
56
62
|
|
|
@@ -59,28 +65,38 @@ def test_existing_release_is_not_overwritten(draft):
|
|
|
59
65
|
with patch("scripts.publish_release.command") as command:
|
|
60
66
|
command.side_effect = [
|
|
61
67
|
"sha", "sha", "sha",
|
|
62
|
-
json.dumps([[{"tag_name": "
|
|
68
|
+
json.dumps([[{"tag_name": "1.2.3", "draft": draft}]]),
|
|
63
69
|
]
|
|
64
70
|
if draft:
|
|
65
71
|
with pytest.raises(ValueError, match="draft"):
|
|
66
|
-
publish_release("owner/repo", "
|
|
72
|
+
publish_release("owner/repo", "1.2.3")
|
|
67
73
|
else:
|
|
68
|
-
publish_release("owner/repo", "
|
|
74
|
+
publish_release("owner/repo", "1.2.3")
|
|
69
75
|
assert command.call_count == 4
|
|
70
76
|
|
|
71
77
|
|
|
72
|
-
def
|
|
78
|
+
def test_first_release_creation():
|
|
73
79
|
with patch("scripts.publish_release.command") as command:
|
|
74
80
|
command.side_effect = ["sha", "sha", "sha", "[[]]", "sha", "", ""]
|
|
75
|
-
publish_release("owner/repo", "
|
|
81
|
+
publish_release("owner/repo", "1.2.3")
|
|
76
82
|
args = command.call_args.args
|
|
77
83
|
assert args[:3] == ("gh", "release", "create")
|
|
78
|
-
assert args[
|
|
84
|
+
assert args[3] == "1.2.3"
|
|
85
|
+
assert "--prerelease" not in args
|
|
86
|
+
assert "--latest=false" not in args
|
|
79
87
|
|
|
80
88
|
|
|
81
89
|
def test_remote_tag_mismatch_stops_publication():
|
|
82
90
|
with patch("scripts.publish_release.command") as command:
|
|
83
91
|
command.side_effect = ["local", "remote"]
|
|
84
92
|
with pytest.raises(ValueError, match="must match"):
|
|
85
|
-
publish_release("owner/repo", "
|
|
93
|
+
publish_release("owner/repo", "1.2.3")
|
|
86
94
|
assert command.call_count == 2
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
@pytest.mark.parametrize("tag", ["v1.2.3", "1.2.3rc1"])
|
|
98
|
+
def test_invalid_tag_stops_publication(tag):
|
|
99
|
+
with patch("scripts.publish_release.command") as command:
|
|
100
|
+
with pytest.raises(ValueError):
|
|
101
|
+
publish_release("owner/repo", tag)
|
|
102
|
+
command.assert_not_called()
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
version = 1
|
|
2
|
-
revision =
|
|
2
|
+
revision = 2
|
|
3
3
|
requires-python = ">=3.12"
|
|
4
4
|
resolution-markers = [
|
|
5
5
|
"python_full_version >= '3.14' and sys_platform == 'win32'",
|
|
@@ -128,11 +128,11 @@ wheels = [
|
|
|
128
128
|
|
|
129
129
|
[[package]]
|
|
130
130
|
name = "certifi"
|
|
131
|
-
version = "
|
|
131
|
+
version = "2026.10.19"
|
|
132
132
|
source = { registry = "https://pypi.org/simple" }
|
|
133
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
133
|
+
sdist = { url = "https://files.pythonhosted.org/packages/a6/bd/1436c50cc46699de0230fbaacc1d1de7bfec413176099949e9d5112e88f2/certifi-2026.10.19.tar.gz", hash = "sha256:035c1e85572b141bf1c3a3eff0e33a8eb74917522f2559075ff8d2fea780a1ae", size = 137598, upload-time = "2026-10-20T02:24:16.604Z" }
|
|
134
134
|
wheels = [
|
|
135
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
135
|
+
{ url = "https://files.pythonhosted.org/packages/c4/51/29046e48f693c54e5b7412216d447a1d8362c9653148d98c02cdf65fa733/certifi-2026.10.19-py3-none-any.whl", hash = "sha256:42d35340cc5b9ba78e818ddbff0c5b1c2b779de448a340fd1b989f5fa8670e1b", size = 136464, upload-time = "2026-10-20T02:24:15.072Z" },
|
|
136
136
|
]
|
|
137
137
|
|
|
138
138
|
[[package]]
|
|
@@ -331,11 +331,11 @@ wheels = [
|
|
|
331
331
|
|
|
332
332
|
[[package]]
|
|
333
333
|
name = "distlib"
|
|
334
|
-
version = "0.4.
|
|
334
|
+
version = "0.4.4"
|
|
335
335
|
source = { registry = "https://pypi.org/simple" }
|
|
336
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
336
|
+
sdist = { url = "https://files.pythonhosted.org/packages/68/bc/d36966de7304047a1001a7559fbf266c464bb5d8cc85464536ef8c9bcc32/distlib-0.4.4.tar.gz", hash = "sha256:ca4175b4ac7f71223cc30ed7248c45d2b38c2439d8ee6e498ab67ed63cf3508d", size = 621304, upload-time = "2026-10-16T13:56:34.203Z" }
|
|
337
337
|
wheels = [
|
|
338
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
338
|
+
{ url = "https://files.pythonhosted.org/packages/c1/2b/238f02a4927fa2e27aa995371d240a468b52e42eae44a678434aff736b38/distlib-0.4.4-py2.py3-none-any.whl", hash = "sha256:cf09d55b1e85a89576b036aeb71550bfd68320f3f21761ca329eadadad918638", size = 472099, upload-time = "2026-10-16T13:56:32.053Z" },
|
|
339
339
|
]
|
|
340
340
|
|
|
341
341
|
[[package]]
|
|
@@ -392,44 +392,84 @@ wheels = [
|
|
|
392
392
|
|
|
393
393
|
[[package]]
|
|
394
394
|
name = "fastmcp"
|
|
395
|
-
version = "3.
|
|
395
|
+
version = "3.4.10"
|
|
396
396
|
source = { registry = "https://pypi.org/simple" }
|
|
397
397
|
dependencies = [
|
|
398
|
+
{ name = "fastmcp-slim", extra = ["client", "server"] },
|
|
399
|
+
]
|
|
400
|
+
sdist = { url = "https://files.pythonhosted.org/packages/7e/ce/b2057fd2d3e453048ffae962c746ef7bcb9cf6700086fb1dfcff8a8ba65d/fastmcp-3.4.10.tar.gz", hash = "sha256:c6474855d6230cce4feb7084d654ba518578b25856c6ef26a2ff2d806ef68969", size = 28866789, upload-time = "2026-10-20T14:49:39.101Z" }
|
|
401
|
+
wheels = [
|
|
402
|
+
{ url = "https://files.pythonhosted.org/packages/40/c4/72da20dfbfce1c99e3c70bc973e736744daf6d461de138f52f9aaa558959/fastmcp-3.4.10-py3-none-any.whl", hash = "sha256:68f422db0a7c6228142663f17d9f79a5a12a509e1408a8ac207b3e442e166e38", size = 8026, upload-time = "2026-10-20T14:49:37.137Z" },
|
|
403
|
+
]
|
|
404
|
+
|
|
405
|
+
[[package]]
|
|
406
|
+
name = "fastmcp-slim"
|
|
407
|
+
version = "3.4.10"
|
|
408
|
+
source = { registry = "https://pypi.org/simple" }
|
|
409
|
+
dependencies = [
|
|
410
|
+
{ name = "platformdirs" },
|
|
411
|
+
{ name = "pydantic", version = "2.11.9", source = { registry = "https://pypi.org/simple" }, extra = ["email"], marker = "python_full_version < '3.14'" },
|
|
412
|
+
{ name = "pydantic", version = "2.13.4", source = { registry = "https://pypi.org/simple" }, extra = ["email"], marker = "python_full_version >= '3.14'" },
|
|
413
|
+
{ name = "pydantic-settings" },
|
|
414
|
+
{ name = "python-dotenv" },
|
|
415
|
+
{ name = "rich" },
|
|
416
|
+
{ name = "typing-extensions" },
|
|
417
|
+
]
|
|
418
|
+
sdist = { url = "https://files.pythonhosted.org/packages/98/3b/28be7f0963fee1c848e78898d801e1232dd2e05b6e37026c400a788caa9a/fastmcp_slim-3.4.10.tar.gz", hash = "sha256:d80ae606ead8dfefa1f21b009929824210ea87eb4b422653a1be8dca61797ccd", size = 610326, upload-time = "2026-10-20T14:49:15.096Z" }
|
|
419
|
+
wheels = [
|
|
420
|
+
{ url = "https://files.pythonhosted.org/packages/7c/28/1e0681b524191ee170f40e8e800fd3785084e12806fc46675c70d7f8fa43/fastmcp_slim-3.4.10-py3-none-any.whl", hash = "sha256:f388941db8bdf38999e6c9d2536c4cd59a6571908d851cee2d10ee59f4e53532", size = 785895, upload-time = "2026-10-20T14:49:13.466Z" },
|
|
421
|
+
]
|
|
422
|
+
|
|
423
|
+
[package.optional-dependencies]
|
|
424
|
+
client = [
|
|
425
|
+
{ name = "authlib" },
|
|
426
|
+
{ name = "exceptiongroup" },
|
|
427
|
+
{ name = "httpx" },
|
|
428
|
+
{ name = "mcp" },
|
|
429
|
+
{ name = "opentelemetry-api" },
|
|
430
|
+
{ name = "py-key-value-aio", extra = ["filetree", "keyring", "memory"] },
|
|
431
|
+
{ name = "starlette" },
|
|
432
|
+
]
|
|
433
|
+
server = [
|
|
398
434
|
{ name = "authlib" },
|
|
399
435
|
{ name = "cyclopts" },
|
|
400
436
|
{ name = "exceptiongroup" },
|
|
437
|
+
{ name = "griffelib" },
|
|
401
438
|
{ name = "httpx" },
|
|
439
|
+
{ name = "joserfc" },
|
|
402
440
|
{ name = "jsonref" },
|
|
403
441
|
{ name = "jsonschema-path" },
|
|
404
442
|
{ name = "mcp" },
|
|
405
443
|
{ name = "openapi-pydantic" },
|
|
406
444
|
{ name = "opentelemetry-api" },
|
|
407
445
|
{ name = "packaging" },
|
|
408
|
-
{ name = "platformdirs" },
|
|
409
446
|
{ name = "py-key-value-aio", extra = ["filetree", "keyring", "memory"] },
|
|
410
|
-
{ name = "pydantic", version = "2.11.9", source = { registry = "https://pypi.org/simple" }, extra = ["email"], marker = "python_full_version < '3.14'" },
|
|
411
|
-
{ name = "pydantic", version = "2.13.4", source = { registry = "https://pypi.org/simple" }, extra = ["email"], marker = "python_full_version >= '3.14'" },
|
|
412
447
|
{ name = "pyperclip" },
|
|
413
|
-
{ name = "python-
|
|
448
|
+
{ name = "python-multipart" },
|
|
414
449
|
{ name = "pyyaml" },
|
|
415
|
-
{ name = "
|
|
450
|
+
{ name = "starlette" },
|
|
416
451
|
{ name = "uncalled-for" },
|
|
417
452
|
{ name = "uvicorn" },
|
|
418
453
|
{ name = "watchfiles" },
|
|
419
454
|
{ name = "websockets" },
|
|
420
455
|
]
|
|
421
|
-
|
|
456
|
+
|
|
457
|
+
[[package]]
|
|
458
|
+
name = "filelock"
|
|
459
|
+
version = "4.2.1"
|
|
460
|
+
source = { registry = "https://pypi.org/simple" }
|
|
461
|
+
sdist = { url = "https://files.pythonhosted.org/packages/d5/98/771d8ca889f220d7d7e352addf500666368f0fd081c6080a83767580c6e4/filelock-4.2.1.tar.gz", hash = "sha256:c4c937ccac2a813cee448e662a56366cfb374c0f8702e75f295c412cc1c5d5a3", size = 650997, upload-time = "2026-10-17T16:48:14.435Z" }
|
|
422
462
|
wheels = [
|
|
423
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
463
|
+
{ url = "https://files.pythonhosted.org/packages/28/00/db89d339bc4ecdc8087fa7b8607ba22ffc27bf96286f340c9620bea428b3/filelock-4.2.1-py3-none-any.whl", hash = "sha256:7be2662e9e826b9bba28afc0f843a123280d799a2ea44bb5d35ccec67905ae44", size = 162455, upload-time = "2026-10-17T16:48:12.937Z" },
|
|
424
464
|
]
|
|
425
465
|
|
|
426
466
|
[[package]]
|
|
427
|
-
name = "
|
|
428
|
-
version = "
|
|
467
|
+
name = "griffelib"
|
|
468
|
+
version = "2.4.1"
|
|
429
469
|
source = { registry = "https://pypi.org/simple" }
|
|
430
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
470
|
+
sdist = { url = "https://files.pythonhosted.org/packages/36/e2/0f5d8ed08766bc6dcd3eebf5a6623d83cbca33a6e4c90aef57156ce745ad/griffelib-2.4.1.tar.gz", hash = "sha256:40c028dd2e623f464423f0e11e3c553158f1cf4f1368239a370534d73e1407ff", size = 245153, upload-time = "2026-10-22T11:20:03.705Z" }
|
|
431
471
|
wheels = [
|
|
432
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
472
|
+
{ url = "https://files.pythonhosted.org/packages/de/02/1156d5f5307f573b901b14373848b84e69ca6cab09169b8cc97d16a181f9/griffelib-2.4.1-py3-none-any.whl", hash = "sha256:76bc562f936ad1ce198d2cf6d0731bd5c92a7d934b69ef828ef22ee0ffdb62ce", size = 172983, upload-time = "2026-10-22T11:19:59.843Z" },
|
|
433
473
|
]
|
|
434
474
|
|
|
435
475
|
[[package]]
|
|
@@ -496,18 +536,6 @@ wheels = [
|
|
|
496
536
|
{ url = "https://files.pythonhosted.org/packages/d2/23/408243171aa9aaba178d3e2559159c24c1171a641aa83b67bdd3394ead8e/idna-3.15-py3-none-any.whl", hash = "sha256:048adeaf8c2d788c40fee287673ccaa74c24ffd8dcf09ffa555a2fbb59f10ac8", size = 72340, upload-time = "2026-05-12T22:45:55.733Z" },
|
|
497
537
|
]
|
|
498
538
|
|
|
499
|
-
[[package]]
|
|
500
|
-
name = "importlib-metadata"
|
|
501
|
-
version = "8.7.1"
|
|
502
|
-
source = { registry = "https://pypi.org/simple" }
|
|
503
|
-
dependencies = [
|
|
504
|
-
{ name = "zipp" },
|
|
505
|
-
]
|
|
506
|
-
sdist = { url = "https://files.pythonhosted.org/packages/f3/49/3b30cad09e7771a4982d9975a8cbf64f00d4a1ececb53297f1d9a7be1b10/importlib_metadata-8.7.1.tar.gz", hash = "sha256:49fef1ae6440c182052f407c8d34a68f72efc36db9ca90dc0113398f2fdde8bb", size = 57107, upload-time = "2025-12-21T10:00:19.278Z" }
|
|
507
|
-
wheels = [
|
|
508
|
-
{ url = "https://files.pythonhosted.org/packages/fa/5e/f8e9a1d23b9c20a551a8a02ea3637b4642e22c2626e3a13a9a29cdea99eb/importlib_metadata-8.7.1-py3-none-any.whl", hash = "sha256:5a1f80bf1daa489495071efbb095d75a634cf28a8bc299581244063b53176151", size = 27865, upload-time = "2025-12-21T10:00:18.329Z" },
|
|
509
|
-
]
|
|
510
|
-
|
|
511
539
|
[[package]]
|
|
512
540
|
name = "iniconfig"
|
|
513
541
|
version = "2.1.0"
|
|
@@ -559,6 +587,18 @@ wheels = [
|
|
|
559
587
|
{ url = "https://files.pythonhosted.org/packages/b2/a3/e137168c9c44d18eff0376253da9f1e9234d0239e0ee230d2fee6cea8e55/jeepney-0.9.0-py3-none-any.whl", hash = "sha256:97e5714520c16fc0a45695e5365a2e11b81ea79bba796e26f9f1d178cb182683", size = 49010, upload-time = "2025-02-27T18:51:00.104Z" },
|
|
560
588
|
]
|
|
561
589
|
|
|
590
|
+
[[package]]
|
|
591
|
+
name = "joserfc"
|
|
592
|
+
version = "1.7.7"
|
|
593
|
+
source = { registry = "https://pypi.org/simple" }
|
|
594
|
+
dependencies = [
|
|
595
|
+
{ name = "cryptography" },
|
|
596
|
+
]
|
|
597
|
+
sdist = { url = "https://files.pythonhosted.org/packages/bd/15/48ff246732232d35ee234228def22b52455fcc55577f06146602399a29b0/joserfc-1.7.7.tar.gz", hash = "sha256:471d0fd12a5a0d1c0942de280f39efe6f597878315033270b504d4d006d25510", size = 237446, upload-time = "2026-10-19T00:30:29.974Z" }
|
|
598
|
+
wheels = [
|
|
599
|
+
{ url = "https://files.pythonhosted.org/packages/df/9f/934db284aa22f37af59708e382903860d4b81329c137b1b0ed2745daeb65/joserfc-1.7.7-py3-none-any.whl", hash = "sha256:06979cfbab78bc802f14c0358f32969826cc26720e13cb38926ffdc86bc0cb2c", size = 71758, upload-time = "2026-10-19T00:30:28.498Z" },
|
|
600
|
+
]
|
|
601
|
+
|
|
562
602
|
[[package]]
|
|
563
603
|
name = "jsonref"
|
|
564
604
|
version = "1.1.0"
|
|
@@ -737,24 +777,23 @@ wheels = [
|
|
|
737
777
|
|
|
738
778
|
[[package]]
|
|
739
779
|
name = "opentelemetry-api"
|
|
740
|
-
version = "1.
|
|
780
|
+
version = "1.45.1"
|
|
741
781
|
source = { registry = "https://pypi.org/simple" }
|
|
742
782
|
dependencies = [
|
|
743
|
-
{ name = "importlib-metadata" },
|
|
744
783
|
{ name = "typing-extensions" },
|
|
745
784
|
]
|
|
746
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
785
|
+
sdist = { url = "https://files.pythonhosted.org/packages/2e/02/6e0ae9cc61bd3169d401077b507b3ebc344745171e1051ab430be012dcd9/opentelemetry_api-1.45.1.tar.gz", hash = "sha256:aa38ed19bcc084ba42782a73255b3582283eced7ad6dddbd6695189e69adfb75", size = 72804, upload-time = "2026-10-06T17:32:58.133Z" }
|
|
747
786
|
wheels = [
|
|
748
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
787
|
+
{ url = "https://files.pythonhosted.org/packages/1e/41/f7dcf80b81ee8e71c1a2b59f14208bc723edbd89ed027a73b175abf6348e/opentelemetry_api-1.45.1-py3-none-any.whl", hash = "sha256:b31553efa588ae44bc306f863c785c5333a9ecc091248c6ee68b4b6c87fdedfb", size = 60256, upload-time = "2026-10-06T17:32:33.506Z" },
|
|
749
788
|
]
|
|
750
789
|
|
|
751
790
|
[[package]]
|
|
752
791
|
name = "packaging"
|
|
753
|
-
version = "
|
|
792
|
+
version = "26.3"
|
|
754
793
|
source = { registry = "https://pypi.org/simple" }
|
|
755
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
794
|
+
sdist = { url = "https://files.pythonhosted.org/packages/7d/fa/3944b40b07da9ce895c0e6303a5ab7d53da063554f534556b134a54d6093/packaging-26.3.tar.gz", hash = "sha256:94edc256424af38762eb31306eed28beb9f0efc50a8837492c9d6fd6004aed79", size = 313412, upload-time = "2026-08-04T18:15:28.737Z" }
|
|
756
795
|
wheels = [
|
|
757
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
796
|
+
{ url = "https://files.pythonhosted.org/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl", hash = "sha256:d7193f7c8e4e93f444fde0262bf90af30e16fa0ad0ad44cb553c87339b23cd1c", size = 129956, upload-time = "2026-08-04T18:15:27.159Z" },
|
|
758
797
|
]
|
|
759
798
|
|
|
760
799
|
[[package]]
|
|
@@ -874,10 +913,10 @@ resolution-markers = [
|
|
|
874
913
|
"python_full_version < '3.14' and sys_platform != 'win32'",
|
|
875
914
|
]
|
|
876
915
|
dependencies = [
|
|
877
|
-
{ name = "annotated-types" },
|
|
878
|
-
{ name = "pydantic-core", version = "2.33.2", source = { registry = "https://pypi.org/simple" } },
|
|
879
|
-
{ name = "typing-extensions" },
|
|
880
|
-
{ name = "typing-inspection", version = "0.4.1", source = { registry = "https://pypi.org/simple" } },
|
|
916
|
+
{ name = "annotated-types", marker = "python_full_version < '3.14'" },
|
|
917
|
+
{ name = "pydantic-core", version = "2.33.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.14'" },
|
|
918
|
+
{ name = "typing-extensions", marker = "python_full_version < '3.14'" },
|
|
919
|
+
{ name = "typing-inspection", version = "0.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.14'" },
|
|
881
920
|
]
|
|
882
921
|
sdist = { url = "https://files.pythonhosted.org/packages/ff/5d/09a551ba512d7ca404d785072700d3f6727a02f6f3c24ecfd081c7cf0aa8/pydantic-2.11.9.tar.gz", hash = "sha256:6b8ffda597a14812a7975c90b82a8a2e777d9257aba3453f973acd3c032a18e2", size = 788495, upload-time = "2025-09-13T11:26:39.325Z" }
|
|
883
922
|
wheels = [
|
|
@@ -886,7 +925,7 @@ wheels = [
|
|
|
886
925
|
|
|
887
926
|
[package.optional-dependencies]
|
|
888
927
|
email = [
|
|
889
|
-
{ name = "email-validator" },
|
|
928
|
+
{ name = "email-validator", marker = "python_full_version < '3.14'" },
|
|
890
929
|
]
|
|
891
930
|
|
|
892
931
|
[[package]]
|
|
@@ -898,10 +937,10 @@ resolution-markers = [
|
|
|
898
937
|
"python_full_version >= '3.14' and sys_platform != 'win32'",
|
|
899
938
|
]
|
|
900
939
|
dependencies = [
|
|
901
|
-
{ name = "annotated-types" },
|
|
902
|
-
{ name = "pydantic-core", version = "2.46.4", source = { registry = "https://pypi.org/simple" } },
|
|
903
|
-
{ name = "typing-extensions" },
|
|
904
|
-
{ name = "typing-inspection", version = "0.4.2", source = { registry = "https://pypi.org/simple" } },
|
|
940
|
+
{ name = "annotated-types", marker = "python_full_version >= '3.14'" },
|
|
941
|
+
{ name = "pydantic-core", version = "2.46.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.14'" },
|
|
942
|
+
{ name = "typing-extensions", marker = "python_full_version >= '3.14'" },
|
|
943
|
+
{ name = "typing-inspection", version = "0.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.14'" },
|
|
905
944
|
]
|
|
906
945
|
sdist = { url = "https://files.pythonhosted.org/packages/18/a5/b60d21ac674192f8ab0ba4e9fd860690f9b4a6e51ca5df118733b487d8d6/pydantic-2.13.4.tar.gz", hash = "sha256:c40756b57adaa8b1efeeced5c196f3f3b7c435f90e84ea7f443901bec8099ef6", size = 844775, upload-time = "2026-05-06T13:43:05.343Z" }
|
|
907
946
|
wheels = [
|
|
@@ -910,7 +949,7 @@ wheels = [
|
|
|
910
949
|
|
|
911
950
|
[package.optional-dependencies]
|
|
912
951
|
email = [
|
|
913
|
-
{ name = "email-validator" },
|
|
952
|
+
{ name = "email-validator", marker = "python_full_version >= '3.14'" },
|
|
914
953
|
]
|
|
915
954
|
|
|
916
955
|
[[package]]
|
|
@@ -922,7 +961,7 @@ resolution-markers = [
|
|
|
922
961
|
"python_full_version < '3.14' and sys_platform != 'win32'",
|
|
923
962
|
]
|
|
924
963
|
dependencies = [
|
|
925
|
-
{ name = "typing-extensions" },
|
|
964
|
+
{ name = "typing-extensions", marker = "python_full_version < '3.14'" },
|
|
926
965
|
]
|
|
927
966
|
sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195, upload-time = "2025-04-23T18:33:52.104Z" }
|
|
928
967
|
wheels = [
|
|
@@ -968,7 +1007,7 @@ resolution-markers = [
|
|
|
968
1007
|
"python_full_version >= '3.14' and sys_platform != 'win32'",
|
|
969
1008
|
]
|
|
970
1009
|
dependencies = [
|
|
971
|
-
{ name = "typing-extensions" },
|
|
1010
|
+
{ name = "typing-extensions", marker = "python_full_version >= '3.14'" },
|
|
972
1011
|
]
|
|
973
1012
|
sdist = { url = "https://files.pythonhosted.org/packages/9d/56/921726b776ace8d8f5db44c4ef961006580d91dc52b803c489fafd1aa249/pydantic_core-2.46.4.tar.gz", hash = "sha256:62f875393d7f270851f20523dd2e29f082bcc82292d66db2b64ea71f64b6e1c1", size = 471464, upload-time = "2026-05-06T13:37:06.98Z" }
|
|
974
1013
|
wheels = [
|
|
@@ -1337,8 +1376,8 @@ name = "secretstorage"
|
|
|
1337
1376
|
version = "3.5.0"
|
|
1338
1377
|
source = { registry = "https://pypi.org/simple" }
|
|
1339
1378
|
dependencies = [
|
|
1340
|
-
{ name = "cryptography" },
|
|
1341
|
-
{ name = "jeepney" },
|
|
1379
|
+
{ name = "cryptography", marker = "sys_platform != 'win32'" },
|
|
1380
|
+
{ name = "jeepney", marker = "sys_platform != 'win32'" },
|
|
1342
1381
|
]
|
|
1343
1382
|
sdist = { url = "https://files.pythonhosted.org/packages/1c/03/e834bcd866f2f8a49a85eaff47340affa3bfa391ee9912a952a1faa68c7b/secretstorage-3.5.0.tar.gz", hash = "sha256:f04b8e4689cbce351744d5537bf6b1329c6fc68f91fa666f60a380edddcd11be", size = 19884, upload-time = "2025-11-23T19:02:53.191Z" }
|
|
1344
1383
|
wheels = [
|
|
@@ -1347,11 +1386,11 @@ wheels = [
|
|
|
1347
1386
|
|
|
1348
1387
|
[[package]]
|
|
1349
1388
|
name = "setuptools"
|
|
1350
|
-
version = "
|
|
1389
|
+
version = "84.1.0"
|
|
1351
1390
|
source = { registry = "https://pypi.org/simple" }
|
|
1352
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
1391
|
+
sdist = { url = "https://files.pythonhosted.org/packages/73/eb/7e5f628ee2eb168fecbf8026de7856b2543d6d609cc85f086b9a91ac93d6/setuptools-84.1.0.tar.gz", hash = "sha256:23657205b63d4d31395ab917815247f694aafad28cd21316bf5fd45a51048ea0", size = 1171783, upload-time = "2026-10-19T20:11:43.489Z" }
|
|
1353
1392
|
wheels = [
|
|
1354
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1393
|
+
{ url = "https://files.pythonhosted.org/packages/18/02/b4bbb90f8f29e334898ff45c6d9b1fffaa6f378017052b3023a06262b5f7/setuptools-84.1.0-py3-none-any.whl", hash = "sha256:5231689c6ac8156cd155cfb98c3fd6fb252c3e7e9bd3d78b64d3c55f132624c9", size = 819380, upload-time = "2026-10-19T20:11:41.684Z" },
|
|
1355
1394
|
]
|
|
1356
1395
|
|
|
1357
1396
|
[[package]]
|
|
@@ -1411,7 +1450,7 @@ resolution-markers = [
|
|
|
1411
1450
|
"python_full_version < '3.14' and sys_platform != 'win32'",
|
|
1412
1451
|
]
|
|
1413
1452
|
dependencies = [
|
|
1414
|
-
{ name = "typing-extensions" },
|
|
1453
|
+
{ name = "typing-extensions", marker = "python_full_version < '3.14'" },
|
|
1415
1454
|
]
|
|
1416
1455
|
sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726, upload-time = "2025-05-21T18:55:23.885Z" }
|
|
1417
1456
|
wheels = [
|
|
@@ -1427,7 +1466,7 @@ resolution-markers = [
|
|
|
1427
1466
|
"python_full_version >= '3.14' and sys_platform != 'win32'",
|
|
1428
1467
|
]
|
|
1429
1468
|
dependencies = [
|
|
1430
|
-
{ name = "typing-extensions" },
|
|
1469
|
+
{ name = "typing-extensions", marker = "python_full_version >= '3.14'" },
|
|
1431
1470
|
]
|
|
1432
1471
|
sdist = { url = "https://files.pythonhosted.org/packages/55/e3/70399cb7dd41c10ac53367ae42139cf4b1ca5f36bb3dc6c9d33acdb43655/typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464", size = 75949, upload-time = "2025-10-01T02:14:41.687Z" }
|
|
1433
1472
|
wheels = [
|
|
@@ -1479,17 +1518,18 @@ wheels = [
|
|
|
1479
1518
|
|
|
1480
1519
|
[[package]]
|
|
1481
1520
|
name = "virtualenv"
|
|
1482
|
-
version = "21.
|
|
1521
|
+
version = "21.14.13"
|
|
1483
1522
|
source = { registry = "https://pypi.org/simple" }
|
|
1484
1523
|
dependencies = [
|
|
1485
1524
|
{ name = "distlib" },
|
|
1486
1525
|
{ name = "filelock" },
|
|
1526
|
+
{ name = "packaging" },
|
|
1487
1527
|
{ name = "platformdirs" },
|
|
1488
1528
|
{ name = "python-discovery" },
|
|
1489
1529
|
]
|
|
1490
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
1530
|
+
sdist = { url = "https://files.pythonhosted.org/packages/70/aa/bff50daee0488e16d611258a9b6c5a1d0c9e128f8ca424e9f4e1c0444ef2/virtualenv-21.14.13.tar.gz", hash = "sha256:de5307ba4b9a0001d9c8ea02832d38f63ca432880f416c1bface61c4323fd905", size = 5570301, upload-time = "2026-10-22T20:10:16.952Z" }
|
|
1491
1531
|
wheels = [
|
|
1492
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1532
|
+
{ url = "https://files.pythonhosted.org/packages/bb/a9/c10d8a44a29fb94a18b43fdf11f38caca53ae7c9406f11a72b1cb8f624f1/virtualenv-21.14.13-py3-none-any.whl", hash = "sha256:5fbb04138a4861580b78ba9110d529a26bc48fcc93c8ec36bc0202eeed96a788", size = 5557094, upload-time = "2026-10-22T20:10:15.096Z" },
|
|
1493
1533
|
]
|
|
1494
1534
|
|
|
1495
1535
|
[[package]]
|
|
@@ -1606,12 +1646,3 @@ wheels = [
|
|
|
1606
1646
|
{ url = "https://files.pythonhosted.org/packages/9f/3e/28135a24e384493fa804216b79a6a6759a38cc4ff59118787b9fb693df93/websockets-16.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b14dc141ed6d2dde437cddb216004bcac6a1df0935d79656387bd41632ba0bbd", size = 178531, upload-time = "2026-01-10T09:23:35.016Z" },
|
|
1607
1647
|
{ url = "https://files.pythonhosted.org/packages/6f/28/258ebab549c2bf3e64d2b0217b973467394a9cea8c42f70418ca2c5d0d2e/websockets-16.0-py3-none-any.whl", hash = "sha256:1637db62fad1dc833276dded54215f2c7fa46912301a24bd94d45d46a011ceec", size = 171598, upload-time = "2026-01-10T09:23:45.395Z" },
|
|
1608
1648
|
]
|
|
1609
|
-
|
|
1610
|
-
[[package]]
|
|
1611
|
-
name = "zipp"
|
|
1612
|
-
version = "3.23.0"
|
|
1613
|
-
source = { registry = "https://pypi.org/simple" }
|
|
1614
|
-
sdist = { url = "https://files.pythonhosted.org/packages/e3/02/0f2892c661036d50ede074e376733dca2ae7c6eb617489437771209d4180/zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166", size = 25547, upload-time = "2025-06-08T17:06:39.4Z" }
|
|
1615
|
-
wheels = [
|
|
1616
|
-
{ url = "https://files.pythonhosted.org/packages/2e/54/647ade08bf0db230bfea292f893923872fd20be6ac6f53b2b936ba839d75/zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e", size = 10276, upload-time = "2025-06-08T17:06:38.034Z" },
|
|
1617
|
-
]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/.github/ISSUE_TEMPLATE/documentation.md
RENAMED
|
File without changes
|
{mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/.github/ISSUE_TEMPLATE/feature_request.md
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/_includes/head-custom-google-analytics.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/img/MCP-Workflow-of-Quickstart-Tutorial.png
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
|
{mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/img/screenshot-claude-desktop-question-001.png
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/src/mcp_postgresql_ops/prompt_template.md
RENAMED
|
File without changes
|
{mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/src/mcp_postgresql_ops/version_compat.py
RENAMED
|
File without changes
|
{mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/src/mcp_postgresql_ops.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/src/mcp_postgresql_ops.egg-info/requires.txt
RENAMED
|
File without changes
|
|
File without changes
|
{mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/src/mcp_postgresql_ops.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mcp_postgresql_ops-3.4.1 → mcp_postgresql_ops-3.4.3}/tests/test_tool_schema_null_defaults.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|