hotfix: v3.1.1 — fix create command max_pages AttributeError
Merge fix from development (#293, #294) and bump version to 3.1.1. Fixes crash when max_pages argument was not provided in web source routing. https://claude.ai/code/session_01HS5q7ghjfEUravNPZRCGux
This commit is contained in:
10
CHANGELOG.md
10
CHANGELOG.md
@@ -5,6 +5,16 @@ All notable changes to Skill Seeker will be documented in this file.
|
|||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## [3.1.1] - 2026-02-23
|
||||||
|
|
||||||
|
### 🐛 Hotfix
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- **`create` command `max_pages` AttributeError** — Fixed crash when `max_pages` argument was not provided in web source routing. Uses `getattr()` for safe attribute access (#293, #294)
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Version bump to 3.1.1
|
||||||
|
|
||||||
## [3.1.0] - 2026-02-23
|
## [3.1.0] - 2026-02-23
|
||||||
|
|
||||||
### 🎯 "Unified CLI & Developer Experience" — Feature Release
|
### 🎯 "Unified CLI & Developer Experience" — Feature Release
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "skill-seekers"
|
name = "skill-seekers"
|
||||||
version = "3.1.0"
|
version = "3.1.1"
|
||||||
description = "Convert documentation websites, GitHub repositories, and PDFs into Claude AI skills. International support with Chinese (简体中文) documentation."
|
description = "Convert documentation websites, GitHub repositories, and PDFs into Claude AI skills. International support with Chinese (简体中文) documentation."
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
requires-python = ">=3.10"
|
requires-python = ">=3.10"
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ def get_version() -> str:
|
|||||||
"""
|
"""
|
||||||
if tomllib is None:
|
if tomllib is None:
|
||||||
# Fallback if TOML library not available
|
# Fallback if TOML library not available
|
||||||
return "3.1.0" # Hardcoded fallback
|
return "3.1.1" # Hardcoded fallback
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Get path to pyproject.toml (3 levels up from this file)
|
# Get path to pyproject.toml (3 levels up from this file)
|
||||||
@@ -37,7 +37,7 @@ def get_version() -> str:
|
|||||||
|
|
||||||
if not pyproject_path.exists():
|
if not pyproject_path.exists():
|
||||||
# Fallback for installed package
|
# Fallback for installed package
|
||||||
return "3.1.0" # Hardcoded fallback
|
return "3.1.1" # Hardcoded fallback
|
||||||
|
|
||||||
with open(pyproject_path, "rb") as f:
|
with open(pyproject_path, "rb") as f:
|
||||||
pyproject_data = tomllib.load(f)
|
pyproject_data = tomllib.load(f)
|
||||||
@@ -46,7 +46,7 @@ def get_version() -> str:
|
|||||||
|
|
||||||
except Exception:
|
except Exception:
|
||||||
# Fallback if anything goes wrong
|
# Fallback if anything goes wrong
|
||||||
return "3.1.0" # Hardcoded fallback
|
return "3.1.1" # Hardcoded fallback
|
||||||
|
|
||||||
|
|
||||||
__version__ = get_version()
|
__version__ = get_version()
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ class TestUnifiedCLIEntryPoints(unittest.TestCase):
|
|||||||
|
|
||||||
# Should show version
|
# Should show version
|
||||||
output = result.stdout + result.stderr
|
output = result.stdout + result.stderr
|
||||||
self.assertIn("3.1.0", output)
|
self.assertIn("3.1.1", output)
|
||||||
|
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
# If skill-seekers is not installed, skip this test
|
# If skill-seekers is not installed, skip this test
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ class TestCliPackage:
|
|||||||
import skill_seekers.cli
|
import skill_seekers.cli
|
||||||
|
|
||||||
assert hasattr(skill_seekers.cli, "__version__")
|
assert hasattr(skill_seekers.cli, "__version__")
|
||||||
assert skill_seekers.cli.__version__ == "3.1.0"
|
assert skill_seekers.cli.__version__ == "3.1.1"
|
||||||
|
|
||||||
def test_cli_has_all(self):
|
def test_cli_has_all(self):
|
||||||
"""Test that skill_seekers.cli package has __all__ export list."""
|
"""Test that skill_seekers.cli package has __all__ export list."""
|
||||||
@@ -88,7 +88,7 @@ class TestMcpPackage:
|
|||||||
import skill_seekers.mcp
|
import skill_seekers.mcp
|
||||||
|
|
||||||
assert hasattr(skill_seekers.mcp, "__version__")
|
assert hasattr(skill_seekers.mcp, "__version__")
|
||||||
assert skill_seekers.mcp.__version__ == "3.1.0"
|
assert skill_seekers.mcp.__version__ == "3.1.1"
|
||||||
|
|
||||||
def test_mcp_has_all(self):
|
def test_mcp_has_all(self):
|
||||||
"""Test that skill_seekers.mcp package has __all__ export list."""
|
"""Test that skill_seekers.mcp package has __all__ export list."""
|
||||||
@@ -108,7 +108,7 @@ class TestMcpPackage:
|
|||||||
import skill_seekers.mcp.tools
|
import skill_seekers.mcp.tools
|
||||||
|
|
||||||
assert hasattr(skill_seekers.mcp.tools, "__version__")
|
assert hasattr(skill_seekers.mcp.tools, "__version__")
|
||||||
assert skill_seekers.mcp.tools.__version__ == "3.1.0"
|
assert skill_seekers.mcp.tools.__version__ == "3.1.1"
|
||||||
|
|
||||||
|
|
||||||
class TestPackageStructure:
|
class TestPackageStructure:
|
||||||
@@ -212,7 +212,7 @@ class TestRootPackage:
|
|||||||
import skill_seekers
|
import skill_seekers
|
||||||
|
|
||||||
assert hasattr(skill_seekers, "__version__")
|
assert hasattr(skill_seekers, "__version__")
|
||||||
assert skill_seekers.__version__ == "3.1.0"
|
assert skill_seekers.__version__ == "3.1.1"
|
||||||
|
|
||||||
def test_root_has_metadata(self):
|
def test_root_has_metadata(self):
|
||||||
"""Test that skill_seekers root package has metadata."""
|
"""Test that skill_seekers root package has metadata."""
|
||||||
|
|||||||
2
uv.lock
generated
2
uv.lock
generated
@@ -5204,7 +5204,7 @@ wheels = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "skill-seekers"
|
name = "skill-seekers"
|
||||||
version = "3.0.0"
|
version = "3.1.1"
|
||||||
source = { editable = "." }
|
source = { editable = "." }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "anthropic" },
|
{ name = "anthropic" },
|
||||||
|
|||||||
Reference in New Issue
Block a user