hatch-xclam 0.7.0__py3-none-any.whl
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.
- hatch/__init__.py +21 -0
- hatch/cli_hatch.py +2748 -0
- hatch/environment_manager.py +1375 -0
- hatch/installers/__init__.py +25 -0
- hatch/installers/dependency_installation_orchestrator.py +636 -0
- hatch/installers/docker_installer.py +545 -0
- hatch/installers/hatch_installer.py +198 -0
- hatch/installers/installation_context.py +109 -0
- hatch/installers/installer_base.py +195 -0
- hatch/installers/python_installer.py +342 -0
- hatch/installers/registry.py +179 -0
- hatch/installers/system_installer.py +588 -0
- hatch/mcp_host_config/__init__.py +38 -0
- hatch/mcp_host_config/backup.py +458 -0
- hatch/mcp_host_config/host_management.py +572 -0
- hatch/mcp_host_config/models.py +602 -0
- hatch/mcp_host_config/reporting.py +181 -0
- hatch/mcp_host_config/strategies.py +513 -0
- hatch/package_loader.py +263 -0
- hatch/python_environment_manager.py +734 -0
- hatch/registry_explorer.py +171 -0
- hatch/registry_retriever.py +335 -0
- hatch/template_generator.py +179 -0
- hatch_xclam-0.7.0.dist-info/METADATA +150 -0
- hatch_xclam-0.7.0.dist-info/RECORD +93 -0
- hatch_xclam-0.7.0.dist-info/WHEEL +5 -0
- hatch_xclam-0.7.0.dist-info/entry_points.txt +2 -0
- hatch_xclam-0.7.0.dist-info/licenses/LICENSE +661 -0
- hatch_xclam-0.7.0.dist-info/top_level.txt +2 -0
- tests/__init__.py +1 -0
- tests/run_environment_tests.py +124 -0
- tests/test_cli_version.py +122 -0
- tests/test_data/packages/basic/base_pkg/hatch_mcp_server.py +18 -0
- tests/test_data/packages/basic/base_pkg/mcp_server.py +21 -0
- tests/test_data/packages/basic/base_pkg_v2/hatch_mcp_server.py +18 -0
- tests/test_data/packages/basic/base_pkg_v2/mcp_server.py +21 -0
- tests/test_data/packages/basic/utility_pkg/hatch_mcp_server.py +18 -0
- tests/test_data/packages/basic/utility_pkg/mcp_server.py +21 -0
- tests/test_data/packages/dependencies/complex_dep_pkg/hatch_mcp_server.py +18 -0
- tests/test_data/packages/dependencies/complex_dep_pkg/mcp_server.py +21 -0
- tests/test_data/packages/dependencies/docker_dep_pkg/hatch_mcp_server.py +18 -0
- tests/test_data/packages/dependencies/docker_dep_pkg/mcp_server.py +21 -0
- tests/test_data/packages/dependencies/mixed_dep_pkg/hatch_mcp_server.py +18 -0
- tests/test_data/packages/dependencies/mixed_dep_pkg/mcp_server.py +21 -0
- tests/test_data/packages/dependencies/python_dep_pkg/hatch_mcp_server.py +18 -0
- tests/test_data/packages/dependencies/python_dep_pkg/mcp_server.py +21 -0
- tests/test_data/packages/dependencies/simple_dep_pkg/hatch_mcp_server.py +18 -0
- tests/test_data/packages/dependencies/simple_dep_pkg/mcp_server.py +21 -0
- tests/test_data/packages/dependencies/system_dep_pkg/hatch_mcp_server.py +18 -0
- tests/test_data/packages/dependencies/system_dep_pkg/mcp_server.py +21 -0
- tests/test_data/packages/error_scenarios/circular_dep_pkg/hatch_mcp_server.py +18 -0
- tests/test_data/packages/error_scenarios/circular_dep_pkg/mcp_server.py +21 -0
- tests/test_data/packages/error_scenarios/circular_dep_pkg_b/hatch_mcp_server.py +18 -0
- tests/test_data/packages/error_scenarios/circular_dep_pkg_b/mcp_server.py +21 -0
- tests/test_data/packages/error_scenarios/invalid_dep_pkg/hatch_mcp_server.py +18 -0
- tests/test_data/packages/error_scenarios/invalid_dep_pkg/mcp_server.py +21 -0
- tests/test_data/packages/error_scenarios/version_conflict_pkg/hatch_mcp_server.py +18 -0
- tests/test_data/packages/error_scenarios/version_conflict_pkg/mcp_server.py +21 -0
- tests/test_data/packages/schema_versions/schema_v1_1_0_pkg/main.py +11 -0
- tests/test_data/packages/schema_versions/schema_v1_2_0_pkg/main.py +11 -0
- tests/test_data/packages/schema_versions/schema_v1_2_1_pkg/hatch_mcp_server.py +18 -0
- tests/test_data/packages/schema_versions/schema_v1_2_1_pkg/mcp_server.py +21 -0
- tests/test_data_utils.py +472 -0
- tests/test_dependency_orchestrator_consent.py +266 -0
- tests/test_docker_installer.py +524 -0
- tests/test_env_manip.py +991 -0
- tests/test_hatch_installer.py +179 -0
- tests/test_installer_base.py +221 -0
- tests/test_mcp_atomic_operations.py +276 -0
- tests/test_mcp_backup_integration.py +308 -0
- tests/test_mcp_cli_all_host_specific_args.py +303 -0
- tests/test_mcp_cli_backup_management.py +295 -0
- tests/test_mcp_cli_direct_management.py +453 -0
- tests/test_mcp_cli_discovery_listing.py +582 -0
- tests/test_mcp_cli_host_config_integration.py +823 -0
- tests/test_mcp_cli_package_management.py +360 -0
- tests/test_mcp_cli_partial_updates.py +859 -0
- tests/test_mcp_environment_integration.py +520 -0
- tests/test_mcp_host_config_backup.py +257 -0
- tests/test_mcp_host_configuration_manager.py +331 -0
- tests/test_mcp_host_registry_decorator.py +348 -0
- tests/test_mcp_pydantic_architecture_v4.py +603 -0
- tests/test_mcp_server_config_models.py +242 -0
- tests/test_mcp_server_config_type_field.py +221 -0
- tests/test_mcp_sync_functionality.py +316 -0
- tests/test_mcp_user_feedback_reporting.py +359 -0
- tests/test_non_tty_integration.py +281 -0
- tests/test_online_package_loader.py +202 -0
- tests/test_python_environment_manager.py +882 -0
- tests/test_python_installer.py +327 -0
- tests/test_registry.py +51 -0
- tests/test_registry_retriever.py +250 -0
- tests/test_system_installer.py +733 -0
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
import sys
|
|
3
|
+
import unittest
|
|
4
|
+
import logging
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
# Configure logging
|
|
8
|
+
logging.basicConfig(
|
|
9
|
+
level=logging.INFO,
|
|
10
|
+
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
|
|
11
|
+
handlers=[
|
|
12
|
+
logging.StreamHandler(),
|
|
13
|
+
logging.FileHandler("environment_test_results.log")
|
|
14
|
+
]
|
|
15
|
+
)
|
|
16
|
+
logger = logging.getLogger("hatch.test_runner")
|
|
17
|
+
|
|
18
|
+
if __name__ == "__main__":
|
|
19
|
+
# Add parent directory to path for imports
|
|
20
|
+
sys.path.insert(0, str(Path(__file__).parent.parent))
|
|
21
|
+
|
|
22
|
+
# Discover and run tests
|
|
23
|
+
test_loader = unittest.TestLoader()
|
|
24
|
+
if len(sys.argv) > 1 and sys.argv[1] == "--env-only":
|
|
25
|
+
# Run only environment tests
|
|
26
|
+
logger.info("Running environment tests only...")
|
|
27
|
+
test_suite = test_loader.loadTestsFromName("test_env_manip.PackageEnvironmentTests")
|
|
28
|
+
elif len(sys.argv) > 1 and sys.argv[1] == "--remote-only":
|
|
29
|
+
# Run only remote integration tests
|
|
30
|
+
logger.info("Running remote integration tests only...")
|
|
31
|
+
test_suite = test_loader.loadTestsFromName("test_registry_retriever.RegistryRetrieverTests")
|
|
32
|
+
test_suite = test_loader.loadTestsFromName("test_online_package_loader.OnlinePackageLoaderTests")
|
|
33
|
+
|
|
34
|
+
elif len(sys.argv) > 1 and sys.argv[1] == "--registry-online":
|
|
35
|
+
# Run only registry online mode tests
|
|
36
|
+
logger.info("Running registry retriever online mode tests...")
|
|
37
|
+
test_suite = test_loader.loadTestsFromName("test_registry_retriever.RegistryRetrieverTests")
|
|
38
|
+
elif len(sys.argv) > 1 and sys.argv[1] == "--package-online":
|
|
39
|
+
# Run only package loader online mode tests
|
|
40
|
+
logger.info("Running package loader online mode tests...")
|
|
41
|
+
test_suite = test_loader.loadTestsFromName("test_online_package_loader.OnlinePackageLoaderTests")
|
|
42
|
+
elif len(sys.argv) > 1 and sys.argv[1] == "--installer-only":
|
|
43
|
+
# Run only installer interface tests
|
|
44
|
+
logger.info("Running installer interface tests only...")
|
|
45
|
+
test_suite = test_loader.loadTestsFromName("test_installer_base.BaseInstallerTests")
|
|
46
|
+
elif len(sys.argv) > 1 and sys.argv[1] == "--hatch-installer-only":
|
|
47
|
+
# Run only HatchInstaller tests
|
|
48
|
+
logger.info("Running HatchInstaller tests only...")
|
|
49
|
+
test_suite = test_loader.loadTestsFromName("test_hatch_installer.TestHatchInstaller")
|
|
50
|
+
elif len(sys.argv) > 1 and sys.argv[1] == "--python-installer-only":
|
|
51
|
+
# Run only PythonInstaller tests
|
|
52
|
+
logger.info("Running PythonInstaller tests only...")
|
|
53
|
+
test_mocking = test_loader.loadTestsFromName("test_python_installer.TestPythonInstaller")
|
|
54
|
+
test_integration = test_loader.loadTestsFromName("test_python_installer.TestPythonInstallerIntegration")
|
|
55
|
+
test_suite = unittest.TestSuite([test_mocking, test_integration])
|
|
56
|
+
elif len(sys.argv) > 1 and sys.argv[1] == "--python-env-manager-only":
|
|
57
|
+
# Run only PythonEnvironmentManager tests (mocked)
|
|
58
|
+
logger.info("Running PythonEnvironmentManager mocked tests only...")
|
|
59
|
+
test_suite = test_loader.loadTestsFromName("test_python_environment_manager.TestPythonEnvironmentManager")
|
|
60
|
+
elif len(sys.argv) > 1 and sys.argv[1] == "--python-env-manager-integration":
|
|
61
|
+
# Run only PythonEnvironmentManager integration tests (requires conda/mamba)
|
|
62
|
+
logger.info("Running PythonEnvironmentManager integration tests only...")
|
|
63
|
+
test_integration = test_loader.loadTestsFromName("test_python_environment_manager.TestPythonEnvironmentManagerIntegration")
|
|
64
|
+
test_enhanced = test_loader.loadTestsFromName("test_python_environment_manager.TestPythonEnvironmentManagerEnhancedFeatures")
|
|
65
|
+
test_suite = unittest.TestSuite([test_integration, test_enhanced])
|
|
66
|
+
elif len(sys.argv) > 1 and sys.argv[1] == "--python-env-manager-all":
|
|
67
|
+
# Run all PythonEnvironmentManager tests
|
|
68
|
+
logger.info("Running all PythonEnvironmentManager tests...")
|
|
69
|
+
test_mocked = test_loader.loadTestsFromName("test_python_environment_manager.TestPythonEnvironmentManager")
|
|
70
|
+
test_integration = test_loader.loadTestsFromName("test_python_environment_manager.TestPythonEnvironmentManagerIntegration")
|
|
71
|
+
test_enhanced = test_loader.loadTestsFromName("test_python_environment_manager.TestPythonEnvironmentManagerEnhancedFeatures")
|
|
72
|
+
test_suite = unittest.TestSuite([test_mocked, test_integration, test_enhanced])
|
|
73
|
+
elif len(sys.argv) > 1 and sys.argv[1] == "--system-installer-only":
|
|
74
|
+
# Run only SystemInstaller tests
|
|
75
|
+
logger.info("Running SystemInstaller tests only...")
|
|
76
|
+
test_mocking = test_loader.loadTestsFromName("test_system_installer.TestSystemInstaller")
|
|
77
|
+
test_integration = test_loader.loadTestsFromName("test_system_installer.TestSystemInstallerIntegration")
|
|
78
|
+
test_suite = unittest.TestSuite([test_mocking, test_integration])
|
|
79
|
+
elif len(sys.argv) > 1 and sys.argv[1] == "--docker-installer-only":
|
|
80
|
+
# Run only DockerInstaller tests
|
|
81
|
+
logger.info("Running DockerInstaller tests only...")
|
|
82
|
+
test_mocking = test_loader.loadTestsFromName("test_docker_installer.TestDockerInstaller")
|
|
83
|
+
test_integration = test_loader.loadTestsFromName("test_docker_installer.TestDockerInstallerIntegration")
|
|
84
|
+
test_suite = unittest.TestSuite([test_mocking, test_integration])
|
|
85
|
+
elif len(sys.argv) > 1 and sys.argv[1] == "--all-installers":
|
|
86
|
+
# Run all installer tests
|
|
87
|
+
logger.info("Running all installer tests...")
|
|
88
|
+
hatch_tests = test_loader.loadTestsFromName("test_hatch_installer.TestHatchInstaller")
|
|
89
|
+
python_tests_mocking = test_loader.loadTestsFromName("test_python_installer.TestPythonInstaller")
|
|
90
|
+
python_tests_integration = test_loader.loadTestsFromName("test_python_installer.TestPythonInstallerIntegration")
|
|
91
|
+
system_tests = test_loader.loadTestsFromName("test_system_installer.TestSystemInstaller")
|
|
92
|
+
system_tests_integration = test_loader.loadTestsFromName("test_system_installer.TestSystemInstallerIntegration")
|
|
93
|
+
docker_tests = test_loader.loadTestsFromName("test_docker_installer.TestDockerInstaller")
|
|
94
|
+
docker_tests_integration = test_loader.loadTestsFromName("test_docker_installer.TestDockerInstallerIntegration")
|
|
95
|
+
|
|
96
|
+
test_suite = unittest.TestSuite([
|
|
97
|
+
hatch_tests,
|
|
98
|
+
python_tests_mocking,
|
|
99
|
+
python_tests_integration,
|
|
100
|
+
system_tests,
|
|
101
|
+
system_tests_integration,
|
|
102
|
+
docker_tests,
|
|
103
|
+
docker_tests_integration
|
|
104
|
+
])
|
|
105
|
+
elif len(sys.argv) > 1 and sys.argv[1] == "--registry-only":
|
|
106
|
+
# Run only installer registry tests
|
|
107
|
+
logger.info("Running installer registry tests only...")
|
|
108
|
+
test_suite = test_loader.loadTestsFromName("test_registry.TestInstallerRegistry")
|
|
109
|
+
else:
|
|
110
|
+
# Run all tests
|
|
111
|
+
logger.info("Running all package environment tests...")
|
|
112
|
+
test_suite = test_loader.discover('.', pattern='test_*.py')
|
|
113
|
+
|
|
114
|
+
# Run the tests
|
|
115
|
+
test_runner = unittest.TextTestRunner(verbosity=2)
|
|
116
|
+
result = test_runner.run(test_suite)
|
|
117
|
+
|
|
118
|
+
# Log test results summary
|
|
119
|
+
logger.info(f"Tests run: {result.testsRun}")
|
|
120
|
+
logger.info(f"Errors: {len(result.errors)}")
|
|
121
|
+
logger.info(f"Failures: {len(result.failures)}")
|
|
122
|
+
|
|
123
|
+
# Exit with appropriate status code
|
|
124
|
+
sys.exit(not result.wasSuccessful())
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Test suite for hatch --version command implementation.
|
|
3
|
+
|
|
4
|
+
This module tests the version command functionality:
|
|
5
|
+
- Version retrieval from importlib.metadata
|
|
6
|
+
- Error handling for PackageNotFoundError
|
|
7
|
+
- CLI version display format
|
|
8
|
+
- Import safety after removing __version__
|
|
9
|
+
- No conflicts with existing flags
|
|
10
|
+
|
|
11
|
+
Tests follow CrackingShells testing standards using wobble framework.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
import unittest
|
|
15
|
+
import sys
|
|
16
|
+
from pathlib import Path
|
|
17
|
+
from unittest.mock import patch, MagicMock
|
|
18
|
+
from io import StringIO
|
|
19
|
+
|
|
20
|
+
# Add parent directory to path
|
|
21
|
+
sys.path.insert(0, str(Path(__file__).parent.parent))
|
|
22
|
+
|
|
23
|
+
from hatch.cli_hatch import main, get_hatch_version
|
|
24
|
+
|
|
25
|
+
try:
|
|
26
|
+
from wobble.decorators import regression_test, integration_test
|
|
27
|
+
except ImportError:
|
|
28
|
+
# Fallback decorators if wobble not available
|
|
29
|
+
def regression_test(func):
|
|
30
|
+
return func
|
|
31
|
+
|
|
32
|
+
def integration_test(scope="component"):
|
|
33
|
+
def decorator(func):
|
|
34
|
+
return func
|
|
35
|
+
return decorator
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
class TestVersionCommand(unittest.TestCase):
|
|
39
|
+
"""Test suite for hatch --version command implementation."""
|
|
40
|
+
|
|
41
|
+
@regression_test
|
|
42
|
+
def test_get_hatch_version_retrieves_from_metadata(self):
|
|
43
|
+
"""Test get_hatch_version() retrieves version from importlib.metadata."""
|
|
44
|
+
with patch('hatch.cli_hatch.version', return_value='0.7.0-dev.3') as mock_version:
|
|
45
|
+
result = get_hatch_version()
|
|
46
|
+
|
|
47
|
+
self.assertEqual(result, '0.7.0-dev.3')
|
|
48
|
+
mock_version.assert_called_once_with('hatch')
|
|
49
|
+
|
|
50
|
+
@regression_test
|
|
51
|
+
def test_get_hatch_version_handles_package_not_found(self):
|
|
52
|
+
"""Test get_hatch_version() handles PackageNotFoundError gracefully."""
|
|
53
|
+
from importlib.metadata import PackageNotFoundError
|
|
54
|
+
|
|
55
|
+
with patch('hatch.cli_hatch.version', side_effect=PackageNotFoundError()):
|
|
56
|
+
result = get_hatch_version()
|
|
57
|
+
|
|
58
|
+
self.assertEqual(result, 'unknown (development mode)')
|
|
59
|
+
|
|
60
|
+
@integration_test(scope="component")
|
|
61
|
+
def test_version_command_displays_correct_format(self):
|
|
62
|
+
"""Test version command displays correct format via CLI."""
|
|
63
|
+
test_args = ['hatch', '--version']
|
|
64
|
+
|
|
65
|
+
with patch('sys.argv', test_args):
|
|
66
|
+
with patch('hatch.cli_hatch.get_hatch_version', return_value='0.7.0-dev.3'):
|
|
67
|
+
with patch('sys.stdout', new_callable=StringIO) as mock_stdout:
|
|
68
|
+
with self.assertRaises(SystemExit) as cm:
|
|
69
|
+
main()
|
|
70
|
+
|
|
71
|
+
# argparse action='version' exits with code 0
|
|
72
|
+
self.assertEqual(cm.exception.code, 0)
|
|
73
|
+
|
|
74
|
+
# Verify output format: "hatch 0.7.0-dev.3"
|
|
75
|
+
output = mock_stdout.getvalue().strip()
|
|
76
|
+
self.assertRegex(output, r'hatch\s+0\.7\.0-dev\.3')
|
|
77
|
+
|
|
78
|
+
@integration_test(scope="component")
|
|
79
|
+
def test_import_hatch_without_version_attribute(self):
|
|
80
|
+
"""Test that importing hatch module works without __version__ attribute."""
|
|
81
|
+
try:
|
|
82
|
+
import hatch
|
|
83
|
+
|
|
84
|
+
# Import should succeed
|
|
85
|
+
self.assertIsNotNone(hatch)
|
|
86
|
+
|
|
87
|
+
# __version__ should not exist (removed in implementation)
|
|
88
|
+
self.assertFalse(hasattr(hatch, '__version__'),
|
|
89
|
+
"hatch.__version__ should not exist after cleanup")
|
|
90
|
+
|
|
91
|
+
except ImportError as e:
|
|
92
|
+
self.fail(f"Failed to import hatch module: {e}")
|
|
93
|
+
|
|
94
|
+
@regression_test
|
|
95
|
+
def test_no_conflict_with_package_version_flag(self):
|
|
96
|
+
"""Test that --version (Hatch) doesn't conflict with -v (package version)."""
|
|
97
|
+
# Test package add command with -v flag (package version specification)
|
|
98
|
+
test_args = ['hatch', 'package', 'add', 'test-package', '-v', '1.0.0']
|
|
99
|
+
|
|
100
|
+
with patch('sys.argv', test_args):
|
|
101
|
+
with patch('hatch.cli_hatch.HatchEnvironmentManager') as mock_env:
|
|
102
|
+
mock_env_instance = MagicMock()
|
|
103
|
+
mock_env.return_value = mock_env_instance
|
|
104
|
+
mock_env_instance.add_package_to_environment.return_value = True
|
|
105
|
+
|
|
106
|
+
try:
|
|
107
|
+
main()
|
|
108
|
+
except SystemExit as e:
|
|
109
|
+
# Should execute successfully (exit code 0)
|
|
110
|
+
self.assertEqual(e.code, 0)
|
|
111
|
+
|
|
112
|
+
# Verify package add was called with version argument
|
|
113
|
+
mock_env_instance.add_package_to_environment.assert_called_once()
|
|
114
|
+
call_args = mock_env_instance.add_package_to_environment.call_args
|
|
115
|
+
|
|
116
|
+
# Version argument should be '1.0.0'
|
|
117
|
+
self.assertEqual(call_args[0][2], '1.0.0') # Third positional arg is version
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
if __name__ == '__main__':
|
|
121
|
+
unittest.main()
|
|
122
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"""
|
|
2
|
+
HatchMCP wrapper for base_pkg.
|
|
3
|
+
"""
|
|
4
|
+
import sys
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
# Add package directory to path
|
|
8
|
+
sys.path.insert(0, str(Path(__file__).parent))
|
|
9
|
+
|
|
10
|
+
from mcp_server import mcp
|
|
11
|
+
|
|
12
|
+
def main():
|
|
13
|
+
"""Main entry point for HatchMCP wrapper."""
|
|
14
|
+
print("Starting base_pkg via HatchMCP wrapper")
|
|
15
|
+
mcp.run()
|
|
16
|
+
|
|
17
|
+
if __name__ == "__main__":
|
|
18
|
+
main()
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"""
|
|
2
|
+
FastMCP server implementation for base_pkg.
|
|
3
|
+
"""
|
|
4
|
+
from mcp.server.fastmcp import FastMCP
|
|
5
|
+
|
|
6
|
+
mcp = FastMCP("base_pkg", log_level="WARNING")
|
|
7
|
+
|
|
8
|
+
@mcp.tool()
|
|
9
|
+
def base_pkg_tool(param: str) -> str:
|
|
10
|
+
"""Example tool function for base_pkg.
|
|
11
|
+
|
|
12
|
+
Args:
|
|
13
|
+
param (str): Example parameter.
|
|
14
|
+
|
|
15
|
+
Returns:
|
|
16
|
+
str: Example result.
|
|
17
|
+
"""
|
|
18
|
+
return f"Processed by base_pkg: {param}"
|
|
19
|
+
|
|
20
|
+
if __name__ == "__main__":
|
|
21
|
+
mcp.run()
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"""
|
|
2
|
+
HatchMCP wrapper for base_pkg_v2.
|
|
3
|
+
"""
|
|
4
|
+
import sys
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
# Add package directory to path
|
|
8
|
+
sys.path.insert(0, str(Path(__file__).parent))
|
|
9
|
+
|
|
10
|
+
from mcp_server import mcp
|
|
11
|
+
|
|
12
|
+
def main():
|
|
13
|
+
"""Main entry point for HatchMCP wrapper."""
|
|
14
|
+
print("Starting base_pkg_v2 via HatchMCP wrapper")
|
|
15
|
+
mcp.run()
|
|
16
|
+
|
|
17
|
+
if __name__ == "__main__":
|
|
18
|
+
main()
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"""
|
|
2
|
+
FastMCP server implementation for base_pkg_v2.
|
|
3
|
+
"""
|
|
4
|
+
from mcp.server.fastmcp import FastMCP
|
|
5
|
+
|
|
6
|
+
mcp = FastMCP("base_pkg_v2", log_level="WARNING")
|
|
7
|
+
|
|
8
|
+
@mcp.tool()
|
|
9
|
+
def base_pkg_v2_tool(param: str) -> str:
|
|
10
|
+
"""Example tool function for base_pkg_v2.
|
|
11
|
+
|
|
12
|
+
Args:
|
|
13
|
+
param (str): Example parameter.
|
|
14
|
+
|
|
15
|
+
Returns:
|
|
16
|
+
str: Example result.
|
|
17
|
+
"""
|
|
18
|
+
return f"Processed by base_pkg_v2: {param}"
|
|
19
|
+
|
|
20
|
+
if __name__ == "__main__":
|
|
21
|
+
mcp.run()
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"""
|
|
2
|
+
HatchMCP wrapper for utility_pkg.
|
|
3
|
+
"""
|
|
4
|
+
import sys
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
# Add package directory to path
|
|
8
|
+
sys.path.insert(0, str(Path(__file__).parent))
|
|
9
|
+
|
|
10
|
+
from mcp_server import mcp
|
|
11
|
+
|
|
12
|
+
def main():
|
|
13
|
+
"""Main entry point for HatchMCP wrapper."""
|
|
14
|
+
print("Starting utility_pkg via HatchMCP wrapper")
|
|
15
|
+
mcp.run()
|
|
16
|
+
|
|
17
|
+
if __name__ == "__main__":
|
|
18
|
+
main()
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"""
|
|
2
|
+
FastMCP server implementation for utility_pkg.
|
|
3
|
+
"""
|
|
4
|
+
from mcp.server.fastmcp import FastMCP
|
|
5
|
+
|
|
6
|
+
mcp = FastMCP("utility_pkg", log_level="WARNING")
|
|
7
|
+
|
|
8
|
+
@mcp.tool()
|
|
9
|
+
def utility_pkg_tool(param: str) -> str:
|
|
10
|
+
"""Example tool function for utility_pkg.
|
|
11
|
+
|
|
12
|
+
Args:
|
|
13
|
+
param (str): Example parameter.
|
|
14
|
+
|
|
15
|
+
Returns:
|
|
16
|
+
str: Example result.
|
|
17
|
+
"""
|
|
18
|
+
return f"Processed by utility_pkg: {param}"
|
|
19
|
+
|
|
20
|
+
if __name__ == "__main__":
|
|
21
|
+
mcp.run()
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"""
|
|
2
|
+
HatchMCP wrapper for complex_dep_pkg.
|
|
3
|
+
"""
|
|
4
|
+
import sys
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
# Add package directory to path
|
|
8
|
+
sys.path.insert(0, str(Path(__file__).parent))
|
|
9
|
+
|
|
10
|
+
from mcp_server import mcp
|
|
11
|
+
|
|
12
|
+
def main():
|
|
13
|
+
"""Main entry point for HatchMCP wrapper."""
|
|
14
|
+
print("Starting complex_dep_pkg via HatchMCP wrapper")
|
|
15
|
+
mcp.run()
|
|
16
|
+
|
|
17
|
+
if __name__ == "__main__":
|
|
18
|
+
main()
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"""
|
|
2
|
+
FastMCP server implementation for complex_dep_pkg.
|
|
3
|
+
"""
|
|
4
|
+
from mcp.server.fastmcp import FastMCP
|
|
5
|
+
|
|
6
|
+
mcp = FastMCP("complex_dep_pkg", log_level="WARNING")
|
|
7
|
+
|
|
8
|
+
@mcp.tool()
|
|
9
|
+
def complex_dep_pkg_tool(param: str) -> str:
|
|
10
|
+
"""Example tool function for complex_dep_pkg.
|
|
11
|
+
|
|
12
|
+
Args:
|
|
13
|
+
param (str): Example parameter.
|
|
14
|
+
|
|
15
|
+
Returns:
|
|
16
|
+
str: Example result.
|
|
17
|
+
"""
|
|
18
|
+
return f"Processed by complex_dep_pkg: {param}"
|
|
19
|
+
|
|
20
|
+
if __name__ == "__main__":
|
|
21
|
+
mcp.run()
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"""
|
|
2
|
+
HatchMCP wrapper for docker_dep_pkg.
|
|
3
|
+
"""
|
|
4
|
+
import sys
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
# Add package directory to path
|
|
8
|
+
sys.path.insert(0, str(Path(__file__).parent))
|
|
9
|
+
|
|
10
|
+
from mcp_server import mcp
|
|
11
|
+
|
|
12
|
+
def main():
|
|
13
|
+
"""Main entry point for HatchMCP wrapper."""
|
|
14
|
+
print("Starting docker_dep_pkg via HatchMCP wrapper")
|
|
15
|
+
mcp.run()
|
|
16
|
+
|
|
17
|
+
if __name__ == "__main__":
|
|
18
|
+
main()
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"""
|
|
2
|
+
FastMCP server implementation for docker_dep_pkg.
|
|
3
|
+
"""
|
|
4
|
+
from mcp.server.fastmcp import FastMCP
|
|
5
|
+
|
|
6
|
+
mcp = FastMCP("docker_dep_pkg", log_level="WARNING")
|
|
7
|
+
|
|
8
|
+
@mcp.tool()
|
|
9
|
+
def docker_dep_pkg_tool(param: str) -> str:
|
|
10
|
+
"""Example tool function for docker_dep_pkg.
|
|
11
|
+
|
|
12
|
+
Args:
|
|
13
|
+
param (str): Example parameter.
|
|
14
|
+
|
|
15
|
+
Returns:
|
|
16
|
+
str: Example result.
|
|
17
|
+
"""
|
|
18
|
+
return f"Processed by docker_dep_pkg: {param}"
|
|
19
|
+
|
|
20
|
+
if __name__ == "__main__":
|
|
21
|
+
mcp.run()
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"""
|
|
2
|
+
HatchMCP wrapper for mixed_dep_pkg.
|
|
3
|
+
"""
|
|
4
|
+
import sys
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
# Add package directory to path
|
|
8
|
+
sys.path.insert(0, str(Path(__file__).parent))
|
|
9
|
+
|
|
10
|
+
from mcp_server import mcp
|
|
11
|
+
|
|
12
|
+
def main():
|
|
13
|
+
"""Main entry point for HatchMCP wrapper."""
|
|
14
|
+
print("Starting mixed_dep_pkg via HatchMCP wrapper")
|
|
15
|
+
mcp.run()
|
|
16
|
+
|
|
17
|
+
if __name__ == "__main__":
|
|
18
|
+
main()
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"""
|
|
2
|
+
FastMCP server implementation for mixed_dep_pkg.
|
|
3
|
+
"""
|
|
4
|
+
from mcp.server.fastmcp import FastMCP
|
|
5
|
+
|
|
6
|
+
mcp = FastMCP("mixed_dep_pkg", log_level="WARNING")
|
|
7
|
+
|
|
8
|
+
@mcp.tool()
|
|
9
|
+
def mixed_dep_pkg_tool(param: str) -> str:
|
|
10
|
+
"""Example tool function for mixed_dep_pkg.
|
|
11
|
+
|
|
12
|
+
Args:
|
|
13
|
+
param (str): Example parameter.
|
|
14
|
+
|
|
15
|
+
Returns:
|
|
16
|
+
str: Example result.
|
|
17
|
+
"""
|
|
18
|
+
return f"Processed by mixed_dep_pkg: {param}"
|
|
19
|
+
|
|
20
|
+
if __name__ == "__main__":
|
|
21
|
+
mcp.run()
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"""
|
|
2
|
+
HatchMCP wrapper for python_dep_pkg.
|
|
3
|
+
"""
|
|
4
|
+
import sys
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
# Add package directory to path
|
|
8
|
+
sys.path.insert(0, str(Path(__file__).parent))
|
|
9
|
+
|
|
10
|
+
from mcp_server import mcp
|
|
11
|
+
|
|
12
|
+
def main():
|
|
13
|
+
"""Main entry point for HatchMCP wrapper."""
|
|
14
|
+
print("Starting python_dep_pkg via HatchMCP wrapper")
|
|
15
|
+
mcp.run()
|
|
16
|
+
|
|
17
|
+
if __name__ == "__main__":
|
|
18
|
+
main()
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"""
|
|
2
|
+
FastMCP server implementation for python_dep_pkg.
|
|
3
|
+
"""
|
|
4
|
+
from mcp.server.fastmcp import FastMCP
|
|
5
|
+
|
|
6
|
+
mcp = FastMCP("python_dep_pkg", log_level="WARNING")
|
|
7
|
+
|
|
8
|
+
@mcp.tool()
|
|
9
|
+
def python_dep_pkg_tool(param: str) -> str:
|
|
10
|
+
"""Example tool function for python_dep_pkg.
|
|
11
|
+
|
|
12
|
+
Args:
|
|
13
|
+
param (str): Example parameter.
|
|
14
|
+
|
|
15
|
+
Returns:
|
|
16
|
+
str: Example result.
|
|
17
|
+
"""
|
|
18
|
+
return f"Processed by python_dep_pkg: {param}"
|
|
19
|
+
|
|
20
|
+
if __name__ == "__main__":
|
|
21
|
+
mcp.run()
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"""
|
|
2
|
+
HatchMCP wrapper for simple_dep_pkg.
|
|
3
|
+
"""
|
|
4
|
+
import sys
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
# Add package directory to path
|
|
8
|
+
sys.path.insert(0, str(Path(__file__).parent))
|
|
9
|
+
|
|
10
|
+
from mcp_server import mcp
|
|
11
|
+
|
|
12
|
+
def main():
|
|
13
|
+
"""Main entry point for HatchMCP wrapper."""
|
|
14
|
+
print("Starting simple_dep_pkg via HatchMCP wrapper")
|
|
15
|
+
mcp.run()
|
|
16
|
+
|
|
17
|
+
if __name__ == "__main__":
|
|
18
|
+
main()
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"""
|
|
2
|
+
FastMCP server implementation for simple_dep_pkg.
|
|
3
|
+
"""
|
|
4
|
+
from mcp.server.fastmcp import FastMCP
|
|
5
|
+
|
|
6
|
+
mcp = FastMCP("simple_dep_pkg", log_level="WARNING")
|
|
7
|
+
|
|
8
|
+
@mcp.tool()
|
|
9
|
+
def simple_dep_pkg_tool(param: str) -> str:
|
|
10
|
+
"""Example tool function for simple_dep_pkg.
|
|
11
|
+
|
|
12
|
+
Args:
|
|
13
|
+
param (str): Example parameter.
|
|
14
|
+
|
|
15
|
+
Returns:
|
|
16
|
+
str: Example result.
|
|
17
|
+
"""
|
|
18
|
+
return f"Processed by simple_dep_pkg: {param}"
|
|
19
|
+
|
|
20
|
+
if __name__ == "__main__":
|
|
21
|
+
mcp.run()
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"""
|
|
2
|
+
HatchMCP wrapper for system_dep_pkg.
|
|
3
|
+
"""
|
|
4
|
+
import sys
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
# Add package directory to path
|
|
8
|
+
sys.path.insert(0, str(Path(__file__).parent))
|
|
9
|
+
|
|
10
|
+
from mcp_server import mcp
|
|
11
|
+
|
|
12
|
+
def main():
|
|
13
|
+
"""Main entry point for HatchMCP wrapper."""
|
|
14
|
+
print("Starting system_dep_pkg via HatchMCP wrapper")
|
|
15
|
+
mcp.run()
|
|
16
|
+
|
|
17
|
+
if __name__ == "__main__":
|
|
18
|
+
main()
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"""
|
|
2
|
+
FastMCP server implementation for system_dep_pkg.
|
|
3
|
+
"""
|
|
4
|
+
from mcp.server.fastmcp import FastMCP
|
|
5
|
+
|
|
6
|
+
mcp = FastMCP("system_dep_pkg", log_level="WARNING")
|
|
7
|
+
|
|
8
|
+
@mcp.tool()
|
|
9
|
+
def system_dep_pkg_tool(param: str) -> str:
|
|
10
|
+
"""Example tool function for system_dep_pkg.
|
|
11
|
+
|
|
12
|
+
Args:
|
|
13
|
+
param (str): Example parameter.
|
|
14
|
+
|
|
15
|
+
Returns:
|
|
16
|
+
str: Example result.
|
|
17
|
+
"""
|
|
18
|
+
return f"Processed by system_dep_pkg: {param}"
|
|
19
|
+
|
|
20
|
+
if __name__ == "__main__":
|
|
21
|
+
mcp.run()
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"""
|
|
2
|
+
HatchMCP wrapper for circular_dep_pkg.
|
|
3
|
+
"""
|
|
4
|
+
import sys
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
# Add package directory to path
|
|
8
|
+
sys.path.insert(0, str(Path(__file__).parent))
|
|
9
|
+
|
|
10
|
+
from mcp_server import mcp
|
|
11
|
+
|
|
12
|
+
def main():
|
|
13
|
+
"""Main entry point for HatchMCP wrapper."""
|
|
14
|
+
print("Starting circular_dep_pkg via HatchMCP wrapper")
|
|
15
|
+
mcp.run()
|
|
16
|
+
|
|
17
|
+
if __name__ == "__main__":
|
|
18
|
+
main()
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"""
|
|
2
|
+
FastMCP server implementation for circular_dep_pkg.
|
|
3
|
+
"""
|
|
4
|
+
from mcp.server.fastmcp import FastMCP
|
|
5
|
+
|
|
6
|
+
mcp = FastMCP("circular_dep_pkg", log_level="WARNING")
|
|
7
|
+
|
|
8
|
+
@mcp.tool()
|
|
9
|
+
def circular_dep_pkg_tool(param: str) -> str:
|
|
10
|
+
"""Example tool function for circular_dep_pkg.
|
|
11
|
+
|
|
12
|
+
Args:
|
|
13
|
+
param (str): Example parameter.
|
|
14
|
+
|
|
15
|
+
Returns:
|
|
16
|
+
str: Example result.
|
|
17
|
+
"""
|
|
18
|
+
return f"Processed by circular_dep_pkg: {param}"
|
|
19
|
+
|
|
20
|
+
if __name__ == "__main__":
|
|
21
|
+
mcp.run()
|