Files
evotraders/modelstudio_demos/mcp_server_with_chat/setup.py

90 lines
2.8 KiB
Python

# -*- coding: utf-8 -*-
import os
import uuid
from setuptools import setup
# Read dependencies from requirements.txt
with open("requirements.txt", encoding="utf-8") as requirements_file:
requirements = requirements_file.read().splitlines()
# Read config.yml file
def read_config():
config_path = os.path.join(
os.path.dirname(__file__),
"deploy_starter",
"config.yml",
)
config_data = {}
with open(config_path, encoding="utf-8") as config_file:
for line in config_file:
line = line.strip()
if line and not line.startswith("#"):
if ":" in line:
key, value = line.split(":", 1)
key = key.strip()
value = value.strip().strip("\"'")
if value.lower() == "true":
value = True
elif value.lower() == "false":
value = False
elif value.isdigit():
value = int(value)
config_data[key] = value
return config_data
# Read README.md file
def read_readme():
readme_files = ["README.md", "README.rst", "README.txt"]
for filename in readme_files:
if os.path.exists(filename):
with open(filename, encoding="utf-8") as readme_handle:
return readme_handle.read()
return "A FastAPI application with AgentScope runtime"
# Read configuration
config = read_config()
# Get configuration values
setup_package_name = config.get("SETUP_PACKAGE_NAME", "deploy_starter")
setup_module_name = config.get("SETUP_MODULE_NAME", "main")
setup_function_name = config.get("SETUP_FUNCTION_NAME", "run_app")
setup_command_name = config.get("SETUP_COMMAND_NAME", "MCP-Server-starter")
# Generate package name with UUID
base_name = config.get("SETUP_NAME", "MCP-Server-starter")
unique_name = f"{base_name}-{uuid.uuid4().hex[:8]}"
# Create package structure
setup(
name=unique_name,
version=config.get("SETUP_VERSION", "0.1.0"),
description=config.get("SETUP_DESCRIPTION", "MCP-Server-starter"),
long_description=config.get(
"SETUP_LONG_DESCRIPTION",
(
"MCP-Server-starter services, supporting both direct execution "
"and uvicorn deployment"
),
),
packages=[setup_package_name],
package_dir={setup_package_name: setup_package_name},
install_requires=requirements,
python_requires=">=3.8",
entry_points={
"console_scripts": [
(
f"{setup_command_name}={setup_package_name}."
f"{setup_module_name}:{setup_function_name}"
),
],
},
include_package_data=True,
package_data={
setup_package_name: ["config.yml"],
},
)