🔧 v2.0.6: Fix async/await bug in validate_output_path calls
Remove incorrect 'await' keywords from validate_output_path() calls across all mixins. validate_output_path() is a synchronous function, not async. Fixed in 15 locations across 6 mixins: - advanced_forms.py (4 calls) - annotations.py (3 calls) - document_assembly.py (2 calls) - form_management.py (2 calls) - image_processing.py (1 call) - misc_tools.py (4 calls) Error: 'object PosixPath can't be used in 'await' expression' Root cause: Incorrectly awaiting synchronous Path validation function Fix: Removed await keyword from all validate_output_path() calls PyPI: https://pypi.org/project/mcp-pdf/2.0.6/
This commit is contained in:
parent
3327137536
commit
fa65fa6e0c
@ -1,6 +1,6 @@
|
||||
[project]
|
||||
name = "mcp-pdf"
|
||||
version = "2.0.5"
|
||||
version = "2.0.6"
|
||||
description = "Secure FastMCP server for comprehensive PDF processing - text extraction, OCR, table extraction, forms, annotations, and more"
|
||||
authors = [{name = "Ryan Malloy", email = "ryan@malloys.us"}]
|
||||
readme = "README.md"
|
||||
|
||||
@ -57,7 +57,7 @@ class AdvancedFormsMixin(MCPMixin):
|
||||
try:
|
||||
# Validate paths
|
||||
input_pdf_path = await validate_pdf_path(input_path)
|
||||
output_pdf_path = await validate_output_path(output_path)
|
||||
output_pdf_path = validate_output_path(output_path)
|
||||
|
||||
# Parse fields data
|
||||
try:
|
||||
@ -174,7 +174,7 @@ class AdvancedFormsMixin(MCPMixin):
|
||||
try:
|
||||
# Validate paths
|
||||
input_pdf_path = await validate_pdf_path(input_path)
|
||||
output_pdf_path = await validate_output_path(output_path)
|
||||
output_pdf_path = validate_output_path(output_path)
|
||||
|
||||
# Parse options
|
||||
try:
|
||||
@ -294,7 +294,7 @@ class AdvancedFormsMixin(MCPMixin):
|
||||
try:
|
||||
# Validate paths
|
||||
input_pdf_path = await validate_pdf_path(input_path)
|
||||
output_pdf_path = await validate_output_path(output_path)
|
||||
output_pdf_path = validate_output_path(output_path)
|
||||
|
||||
# Open PDF
|
||||
doc = fitz.open(str(input_pdf_path))
|
||||
@ -403,7 +403,7 @@ class AdvancedFormsMixin(MCPMixin):
|
||||
try:
|
||||
# Validate paths
|
||||
input_pdf_path = await validate_pdf_path(input_path)
|
||||
output_pdf_path = await validate_output_path(output_path)
|
||||
output_pdf_path = validate_output_path(output_path)
|
||||
|
||||
# Open PDF
|
||||
doc = fitz.open(str(input_pdf_path))
|
||||
|
||||
@ -57,7 +57,7 @@ class AnnotationsMixin(MCPMixin):
|
||||
try:
|
||||
# Validate paths
|
||||
input_pdf_path = await validate_pdf_path(input_path)
|
||||
output_pdf_path = await validate_output_path(output_path)
|
||||
output_pdf_path = validate_output_path(output_path)
|
||||
|
||||
# Parse notes data
|
||||
try:
|
||||
@ -176,7 +176,7 @@ class AnnotationsMixin(MCPMixin):
|
||||
try:
|
||||
# Validate paths
|
||||
input_pdf_path = await validate_pdf_path(input_path)
|
||||
output_pdf_path = await validate_output_path(output_path)
|
||||
output_pdf_path = validate_output_path(output_path)
|
||||
|
||||
# Parse highlights data
|
||||
try:
|
||||
@ -324,7 +324,7 @@ class AnnotationsMixin(MCPMixin):
|
||||
try:
|
||||
# Validate paths
|
||||
input_pdf_path = await validate_pdf_path(input_path)
|
||||
output_pdf_path = await validate_output_path(output_path)
|
||||
output_pdf_path = validate_output_path(output_path)
|
||||
|
||||
# Parse stamps data
|
||||
try:
|
||||
|
||||
@ -71,7 +71,7 @@ class DocumentAssemblyMixin(MCPMixin):
|
||||
}
|
||||
|
||||
# Validate output path
|
||||
output_pdf_path = await validate_output_path(output_path)
|
||||
output_pdf_path = validate_output_path(output_path)
|
||||
|
||||
# Validate and open all input PDFs
|
||||
input_docs = []
|
||||
@ -324,7 +324,7 @@ class DocumentAssemblyMixin(MCPMixin):
|
||||
try:
|
||||
# Validate paths
|
||||
input_pdf_path = await validate_pdf_path(pdf_path)
|
||||
output_pdf_path = await validate_output_path(output_path)
|
||||
output_pdf_path = validate_output_path(output_path)
|
||||
|
||||
# Parse page order
|
||||
try:
|
||||
|
||||
@ -163,7 +163,7 @@ class FormManagementMixin(MCPMixin):
|
||||
try:
|
||||
# Validate paths
|
||||
input_pdf_path = await validate_pdf_path(input_path)
|
||||
output_pdf_path = await validate_output_path(output_path)
|
||||
output_pdf_path = validate_output_path(output_path)
|
||||
|
||||
# Parse form data
|
||||
try:
|
||||
@ -286,7 +286,7 @@ class FormManagementMixin(MCPMixin):
|
||||
}
|
||||
|
||||
# Validate output path
|
||||
output_pdf_path = await validate_output_path(output_path)
|
||||
output_pdf_path = validate_output_path(output_path)
|
||||
|
||||
# Parse fields data
|
||||
try:
|
||||
|
||||
@ -75,7 +75,7 @@ class ImageProcessingMixin(MCPMixin):
|
||||
|
||||
# Setup output directory
|
||||
if output_directory:
|
||||
output_dir = await validate_output_path(output_directory)
|
||||
output_dir = validate_output_path(output_directory)
|
||||
output_dir.mkdir(parents=True, exist_ok=True)
|
||||
else:
|
||||
output_dir = Path(tempfile.mkdtemp(prefix="pdf_images_"))
|
||||
|
||||
@ -367,7 +367,7 @@ class MiscToolsMixin(MCPMixin):
|
||||
try:
|
||||
# Validate paths
|
||||
input_pdf_path = await validate_pdf_path(input_path)
|
||||
output_pdf_path = await validate_output_path(output_path)
|
||||
output_pdf_path = validate_output_path(output_path)
|
||||
|
||||
# Parse validation rules
|
||||
try:
|
||||
@ -490,7 +490,7 @@ class MiscToolsMixin(MCPMixin):
|
||||
}
|
||||
|
||||
# Validate output path
|
||||
output_pdf_path = await validate_output_path(output_path)
|
||||
output_pdf_path = validate_output_path(output_path)
|
||||
|
||||
# Open and analyze input PDFs
|
||||
input_docs = []
|
||||
@ -634,7 +634,7 @@ class MiscToolsMixin(MCPMixin):
|
||||
try:
|
||||
# Validate paths
|
||||
input_pdf_path = await validate_pdf_path(input_path)
|
||||
output_dir = await validate_output_path(output_directory)
|
||||
output_dir = validate_output_path(output_directory)
|
||||
output_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
# Parse page ranges
|
||||
@ -758,7 +758,7 @@ class MiscToolsMixin(MCPMixin):
|
||||
try:
|
||||
# Validate paths
|
||||
input_pdf_path = await validate_pdf_path(input_path)
|
||||
output_dir = await validate_output_path(output_directory)
|
||||
output_dir = validate_output_path(output_directory)
|
||||
output_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
doc = fitz.open(str(input_pdf_path))
|
||||
|
||||
@ -105,7 +105,7 @@ class PDFServerOfficial:
|
||||
"""Get detailed server information including mixins and configuration"""
|
||||
return {
|
||||
"server_name": "MCP PDF Tools (Official FastMCP Pattern)",
|
||||
"version": "2.0.5",
|
||||
"version": "2.0.6",
|
||||
"architecture": "Official FastMCP Mixin Pattern",
|
||||
"total_mixins": len(self.mixins),
|
||||
"mixins": [
|
||||
@ -160,7 +160,7 @@ def main():
|
||||
from importlib.metadata import version
|
||||
package_version = version("mcp-pdf")
|
||||
except:
|
||||
package_version = "2.0.5"
|
||||
package_version = "2.0.6"
|
||||
|
||||
logger.info(f"🎬 MCP PDF Tools Server v{package_version} (Official Pattern)")
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user