from pathlib import Path s=Path('Client/Assets/Scripts/Services/ClubService.cs').read_text(encoding='utf-8-sig') models=Path('Client/Assets/Scripts/Services/ClubModel.cs').read_text(encoding='utf-8-sig') def block(text,marker): start=text.index(marker);a=text.index('{',start);depth=1;b=a+1 while depth: depth+=(text[b]=='{')-(text[b]=='}');b+=1 return text[start:b] helper=s[s.index(' private static bool IsDecimalPlayerId'):s.index(' public async Task> GetClubDetails')] methods='\n'.join(block(s,m) for m in ['public async Task CreateClub(', 'public async void QuitClub(', 'public async void Demote(', 'public async void Promote(', 'public async void Kickout(', 'public async void HandleApply(', 'public async Task ClubSingin(']) dtos='\n'.join(block(models,'public class '+name+'\n') for name in ['ClubInfo','ClubSettingData','CreateClubRequest','CreateClubResp','QuitClubRequest','QuitClubResp','DemoteClubRequest','PromoteClubRequest','KickoutClubRequest','KickoutClubResp','HandleApplyRequest','HandleApplyResp','ClubSinginRequest','ClubSinginResp']) code='''// Generated from production methods; do not edit. Engine and transport are controlled test doubles. using System;using System.Collections.Generic;using System.ComponentModel;using System.Linq;using System.Threading.Tasks;using Newtonsoft.Json.Linq; public enum EMemberRole:byte {Owner,Vice,Member,Elder} '''+dtos+''' public class Subject { public User userService=new();public Server customServerMgr=new();public Chat chatService=new();public ClubInfo myClubInfo=new(){id=9,curMembers=3};public EMemberRole memberRole=EMemberRole.Member;public Dictionary internalIdToPlayerId=new();public int Effects; private int? signingSession; public DateTime? signTime; public List clubPlayerInfos=new(){new Person{playFabId="102"}}; public bool CanAccepted=true; void SetClubRed(){} void ShowPromote(){Effects++;}void MyClubInfoChange(bool join=false){Effects++;}void ClearLikeCursorIds(){Effects++;} '''+helper+methods+''' } public class User{public string UserId="8BDE34F732DD4210";public string ApiPlayerId="101";public bool IsAuthorized=true;public uint InternalId=42;} public class Server{public int SessionVersion;public int Calls;public object Body;public string Response;public TaskCompletionSource Gate;public Task ClubRequest(string path,object data){Calls++;Body=data;return Gate?.Task??Task.FromResult(Response);}} public class Chat{public int Effects;public void SendSystemMessage(string text){Effects++;}public void OnQuit(){Effects++;}public void GetConversationList(long id){Effects++;}} public class ClubSttingUpdateEvent{} public static class GContext {public static Container container=new();public static int Events;public static void Publish(object value){Events++;}} public static class ToastPanel{public static int Count;public static void Show(string text){Count++;}} public static class LocalizationMgr{public static string GetText(string key)=>key;} ''' Path('CodexOutput/upserver/ClubRegression/Generated.cs').write_text(code) p=Path('CodexOutput/upserver/ClubRegression/Generated.cs') with p.open('a') as f:f.write(""" public class Person{public string playFabId;} public enum RedPointName {ApplyList} public class RedPointManager {public static RedPointManager Instance=new();public void SetRedPointState(RedPointName n,bool b){}} public static class ZZTimeHelper {public static DateTime UtcNow()=>new DateTime(2026,9,21);public static DateTime UtcNowOffset(this DateTime time)=>time;} public class PlayFabMgr {public static PlayFabMgr Instance=new();public int Writes;public void UpdateUserDataValue(string k,string v){Writes++;}} public enum MessageChatType {SI} public class Container {public T Resolve() where T:new()=>new T();} public class PlayerItemData {public static int Rewards;public void AddItemByDrop(int id,object ctx){Rewards++;}} public class ShowData{} namespace cfg {public class Tables {public Config TbServerConfig=new();}public class Config{public int ClubSignReward=1;}} """)