stoxchai-nse-predictor / build_package.py
thoutam's picture
Add build_package.py for pip package and pipeline
b15bbba verified
#!/usr/bin/env python3
"""
Build and test the StoxChai NSE Predictor pip package
"""
import subprocess
import sys
import os
from pathlib import Path
def run_command(cmd, description):
"""Run a command and handle errors"""
print(f"πŸ”„ {description}...")
try:
result = subprocess.run(cmd, shell=True, check=True, capture_output=True, text=True)
print(f"βœ… {description} completed successfully")
return True
except subprocess.CalledProcessError as e:
print(f"❌ {description} failed:")
print(f" Error: {e}")
if e.stdout:
print(f" Output: {e.stdout}")
if e.stderr:
print(f" Error: {e.stderr}")
return False
def main():
"""Main build function"""
print("πŸ—οΈ Building StoxChai NSE Predictor Package")
print("=" * 50)
# Change to package directory
package_dir = Path("stoxchai_nse_predictor")
if not package_dir.exists():
print("❌ Package directory not found")
return False
os.chdir(package_dir)
# Clean previous builds
print("🧹 Cleaning previous builds...")
for item in ["build", "dist", "*.egg-info"]:
run_command(f"rm -rf {item}", f"Cleaning {item}")
# Build package
if not run_command("python setup.py sdist bdist_wheel", "Building package"):
return False
# Check package contents
print("\nπŸ“¦ Package contents:")
dist_dir = Path("dist")
if dist_dir.exists():
for file in dist_dir.glob("*"):
size_mb = file.stat().st_size / (1024 * 1024)
print(f" {file.name} ({size_mb:.1f} MB)")
# Install package in development mode
print("\nπŸ”§ Installing package in development mode...")
if not run_command("pip install -e .", "Installing package"):
return False
# Test the package
print("\nπŸ§ͺ Testing the package...")
# Test import
try:
import stoxchai_nse_predictor
print("βœ… Package import successful")
print(f" Version: {stoxchai_nse_predictor.__version__}")
print(f" Author: {stoxchai_nse_predictor.__author__}")
except ImportError as e:
print(f"❌ Package import failed: {e}")
return False
# Test CLI
print("\nπŸ“± Testing CLI...")
if not run_command("stoxchai-predict --info", "Testing CLI info command"):
return False
# Test prediction
print("\n🎯 Testing prediction...")
if not run_command("stoxchai-predict --sample --model randomforest", "Testing prediction"):
return False
print("\nπŸŽ‰ Package build and test completed successfully!")
print("\nπŸ“‹ Next steps:")
print("1. Upload to PyPI: python -m twine upload dist/*")
print("2. Install globally: pip install stoxchai-nse-predictor")
print("3. Use in code: from stoxchai_nse_predictor import StoxChaiStockPredictor")
return True
if __name__ == "__main__":
success = main()
sys.exit(0 if success else 1)