Skip to content

Commit a75a851

Browse files
committed
chore: release 0.5.0
1 parent b6447ca commit a75a851

11 files changed

Lines changed: 3497 additions & 3388 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,25 @@
11
# Changelog
22

3+
## 0.5.0
4+
5+
### Added
6+
7+
- Resolve `publication_url` dynamically against Substack subdomains and custom domains.
8+
- Allow optional `timeout` configuration for the API client and CLI.
9+
- Detect local image MIME types (JPEG, PNG, GIF, WebP) for uploads instead of defaulting to JPEG.
10+
- Add Dependabot configuration (#74).
11+
12+
### Improved
13+
14+
- Raise `SubstackRequestException` explicitly instead of failing silently when a publication is unavailable.
15+
- Expand secret redaction to cookie-like values in request error messages to prevent credential leaks.
16+
- Ensure bounded retries apply strictly to safe GET and DELETE requests only.
17+
- Bump `fastmcp` from 3.2.0 to 3.4.7 (#73).
18+
- Bump `markdown-it-py` from 3.0.0 to 4.2.0 (#72).
19+
- Bump `pre-commit` from 4.6.1 to 4.6.2 (#71).
20+
- Bump `requests` from 2.33.0 to 2.34.2 (#70).
21+
- Bump `python-dotenv` from 1.2.2 to 1.2.3 (#69).
22+
323
## 0.4.0
424

525
### Added

‎docs/releases/0.5.0.md‎

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
---
2+
layout: default
3+
title: 0.5.0
4+
parent: Releases
5+
nav_order: 5
6+
---
7+
8+
# 0.5.0 Release
9+
10+
## Added
11+
12+
- Resolve `publication_url` dynamically against Substack subdomains and custom domains.
13+
- Allow optional `timeout` configuration for the API client and CLI.
14+
- Detect local image MIME types (JPEG, PNG, GIF, WebP) for uploads instead of defaulting to JPEG.
15+
- Add Dependabot configuration (#74).
16+
17+
## Improved
18+
19+
- Raise `SubstackRequestException` explicitly instead of failing silently when a publication is unavailable.
20+
- Expand secret redaction to cookie-like values in request error messages to prevent credential leaks.
21+
- Ensure bounded retries apply strictly to safe GET and DELETE requests only.
22+
- Bump `fastmcp` from 3.2.0 to 3.4.7 (#73).
23+
- Bump `markdown-it-py` from 3.0.0 to 4.2.0 (#72).
24+
- Bump `pre-commit` from 4.6.1 to 4.6.2 (#71).
25+
- Bump `requests` from 2.33.0 to 2.34.2 (#70).
26+
- Bump `python-dotenv` from 1.2.2 to 1.2.3 (#69).

‎poetry.lock‎

Lines changed: 2474 additions & 2474 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎pyproject.toml‎

Lines changed: 67 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,67 @@
1-
[tool.poetry]
2-
name = "python-substack"
3-
version = "0.4.0"
4-
description = "Write and safely manage Substack drafts from Markdown with Python, CLI, and MCP."
5-
authors = ["Paolo Mazza <mazzapaolo2019@gmail.com>"]
6-
license = "MIT"
7-
packages = [
8-
{ include = "substack" },
9-
{ include = "substack_mcp" }
10-
]
11-
12-
readme = "README.md"
13-
14-
repository = "https://github.com/ma2za/python-substack"
15-
homepage = "https://github.com/ma2za/python-substack"
16-
17-
keywords = ["substack", "substack-api", "cli", "newsletter", "publishing", "automation", "mcp"]
18-
classifiers = [
19-
"Development Status :: 4 - Beta",
20-
"Intended Audience :: Developers",
21-
"Programming Language :: Python :: 3",
22-
"Programming Language :: Python :: 3.10",
23-
"Programming Language :: Python :: 3.11",
24-
"Programming Language :: Python :: 3.12",
25-
"Programming Language :: Python :: 3.13",
26-
"Topic :: Communications :: Email",
27-
"Topic :: Internet :: WWW/HTTP",
28-
"Topic :: Software Development :: Libraries :: Python Modules"
29-
]
30-
31-
[tool.poetry.urls]
32-
"Documentation" = "https://ma2za.github.io/python-substack/"
33-
"Changelog" = "https://github.com/ma2za/python-substack/blob/main/CHANGELOG.md"
34-
"Issues" = "https://github.com/ma2za/python-substack/issues"
35-
36-
[tool.poetry.dependencies]
37-
python = "<4.0,>=3.10"
38-
39-
requests = "^2.32.0"
40-
python-dotenv = "^1.2.1"
41-
PyYAML = "^6.0"
42-
markdown-it-py = ">=3,<5"
43-
mdit-py-plugins = ">=0.5,<0.7"
44-
fastmcp = { version = "^3.1.1", optional = true }
45-
46-
[tool.poetry.extras]
47-
mcp = ["fastmcp"]
48-
49-
[tool.poetry.group.dev.dependencies]
50-
pytest = "^9.1.1"
51-
pre-commit = "^4.6.1"
52-
53-
[tool.pytest.ini_options]
54-
markers = [
55-
"live: opt-in tests that call the live Substack service",
56-
]
57-
58-
[tool.poetry.scripts]
59-
substack = "substack.cli:main"
60-
substack-auth-check = "substack.cli:auth_check"
61-
substack-publish-markdown = "substack.cli:publish_markdown"
62-
substack-publish-yaml = "substack.cli:publish_yaml"
63-
substack-mcp = "substack_mcp.mcp_server:main"
64-
65-
[build-system]
66-
requires = ["poetry-core>=1.0.0"]
67-
build-backend = "poetry.core.masonry.api"
1+
[tool.poetry]
2+
name = "python-substack"
3+
version = "0.5.0"
4+
description = "Write and safely manage Substack drafts from Markdown with Python, CLI, and MCP."
5+
authors = ["Paolo Mazza <mazzapaolo2019@gmail.com>"]
6+
license = "MIT"
7+
packages = [
8+
{ include = "substack" },
9+
{ include = "substack_mcp" }
10+
]
11+
12+
readme = "README.md"
13+
14+
repository = "https://github.com/ma2za/python-substack"
15+
homepage = "https://github.com/ma2za/python-substack"
16+
17+
keywords = ["substack", "substack-api", "cli", "newsletter", "publishing", "automation", "mcp"]
18+
classifiers = [
19+
"Development Status :: 4 - Beta",
20+
"Intended Audience :: Developers",
21+
"Programming Language :: Python :: 3",
22+
"Programming Language :: Python :: 3.10",
23+
"Programming Language :: Python :: 3.11",
24+
"Programming Language :: Python :: 3.12",
25+
"Programming Language :: Python :: 3.13",
26+
"Topic :: Communications :: Email",
27+
"Topic :: Internet :: WWW/HTTP",
28+
"Topic :: Software Development :: Libraries :: Python Modules"
29+
]
30+
31+
[tool.poetry.urls]
32+
"Documentation" = "https://ma2za.github.io/python-substack/"
33+
"Changelog" = "https://github.com/ma2za/python-substack/blob/main/CHANGELOG.md"
34+
"Issues" = "https://github.com/ma2za/python-substack/issues"
35+
36+
[tool.poetry.dependencies]
37+
python = "<4.0,>=3.10"
38+
39+
requests = "^2.32.0"
40+
python-dotenv = "^1.2.1"
41+
PyYAML = "^6.0"
42+
markdown-it-py = ">=3,<5"
43+
mdit-py-plugins = ">=0.5,<0.7"
44+
fastmcp = { version = "^3.1.1", optional = true }
45+
46+
[tool.poetry.extras]
47+
mcp = ["fastmcp"]
48+
49+
[tool.poetry.group.dev.dependencies]
50+
pytest = "^9.1.1"
51+
pre-commit = "^4.6.1"
52+
53+
[tool.pytest.ini_options]
54+
markers = [
55+
"live: opt-in tests that call the live Substack service",
56+
]
57+
58+
[tool.poetry.scripts]
59+
substack = "substack.cli:main"
60+
substack-auth-check = "substack.cli:auth_check"
61+
substack-publish-markdown = "substack.cli:publish_markdown"
62+
substack-publish-yaml = "substack.cli:publish_yaml"
63+
substack-mcp = "substack_mcp.mcp_server:main"
64+
65+
[build-system]
66+
requires = ["poetry-core>=1.0.0"]
67+
build-backend = "poetry.core.masonry.api"

‎substack/__init__.py‎

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
"""A library that provides a Python interface to the Substack API."""
2-
3-
__author__ = "Paolo Mazza"
4-
__email__ = "mazzapaolo2019@gmail.com"
5-
__license__ = "MIT License"
6-
__version__ = "0.4.0"
7-
__url__ = "https://github.com/ma2za/python-substack"
8-
__download_url__ = "https://pypi.python.org/pypi/python-substack"
9-
__description__ = (
10-
"Write and safely manage Substack drafts from Markdown with Python, CLI, and MCP."
11-
)
12-
13-
from .api import Api
1+
"""A library that provides a Python interface to the Substack API."""
2+
3+
__author__ = "Paolo Mazza"
4+
__email__ = "mazzapaolo2019@gmail.com"
5+
__license__ = "MIT License"
6+
__version__ = "0.5.0"
7+
__url__ = "https://github.com/ma2za/python-substack"
8+
__download_url__ = "https://pypi.python.org/pypi/python-substack"
9+
__description__ = (
10+
"Write and safely manage Substack drafts from Markdown with Python, CLI, and MCP."
11+
)
12+
13+
from .api import Api

0 commit comments

Comments
 (0)