#!/usr/bin/env python3 """Test BaZi format generation""" import sys import os sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from datetime import datetime from bazi_calculator import BaziCalculator, compute_birth_pillars from bazi_favorable_elements import calculate_favorable_elements from api_v3 import generate_future_bazi_data # Test person person = { 'name': 'TestUser', 'gender': 'Male', 'year': 1990, 'month': 5, 'day': 15, 'hour': 10, 'minute': 30, 'is_twin': False } # Prepare birth datetime birth_date = datetime( person['year'], person['month'], person['day'], person['hour'], person['minute'] ) print(f"Birth date: {birth_date}") # Calculate BaZi pillars manually birth_pillars = compute_birth_pillars(birth_date) print(f"Birth pillars: {birth_pillars}") # Calculate favorable elements fav_elements = calculate_favorable_elements(birth_pillars) print(f"Favorable elements: {fav_elements}") # Generate future BaZi data calculator = BaziCalculator( birth_datetime=birth_date, gender=person['gender'], birth_pillars=birth_pillars ) print("Generating future data...") future_data = generate_future_bazi_data(calculator, years_ahead=100) print(f"Generated {len(future_data['luck_pillars'])} luck pillars") print(f"Generated {len(future_data['annual_pillars'])} annual pillars") print(f"Generated {len(future_data['monthly_pillars'])} monthly pillars") print(f"Generated {len(future_data['daily_pillars'])} daily pillars") # Now format it from dataset.dataset_generator import format_bazi_production_style bazi_data = { 'birth_pillars': birth_pillars, 'favorable_elements': fav_elements, 'future_data': future_data, 'birth_date': birth_date, 'calculator': calculator } formatted = format_bazi_production_style(person, bazi_data) print("\n\nFormatted output:") print("=" * 50) print(formatted)