@@ -326,38 +326,63 @@ def get_conway_address_deposit(cluster_obj: clusterlib.ClusterLib) -> int:
326326 return stake_deposit_amt
327327
328328
329- def get_payment_addr (
329+ def get_payment_addrs (
330330 name_template : str ,
331331 cluster_manager : cluster_management .ClusterManager ,
332332 cluster_obj : clusterlib .ClusterLib ,
333+ num : int ,
334+ fund_idx : list [int ] | None = None ,
333335 caching_key : str = "" ,
334336 amount : int | None = None ,
335- ) -> clusterlib .AddressRecord :
336- """Create new payment address."""
337-
338- def _create_addr () -> clusterlib .AddressRecord :
339- addr = clusterlib_utils .create_payment_addr_records (
340- f"{ name_template } _fund_addr" ,
337+ ) -> list [clusterlib .AddressRecord ]:
338+ """Create new payment addresses."""
339+ if num < 1 :
340+ err = f"Number of addresses must be at least 1, got: { num } "
341+ raise ValueError (err )
342+
343+ def _create_addrs () -> list [clusterlib .AddressRecord ]:
344+ addrs = clusterlib_utils .create_payment_addr_records (
345+ * [f"{ name_template } _fund_addr_{ i } " for i in range (1 , num + 1 )],
341346 cluster_obj = cluster_obj ,
342- )[ 0 ]
343- return addr
347+ )
348+ return addrs
344349
345350 if caching_key :
346351 with cluster_manager .cache_fixture (key = caching_key ) as fixture_cache :
347352 if fixture_cache .value :
348353 return fixture_cache .value # type: ignore
349354
350- addr = _create_addr ()
351- fixture_cache .value = addr
355+ addrs = _create_addrs ()
356+ fixture_cache .value = addrs
352357 else :
353- addr = _create_addr ()
358+ addrs = _create_addrs ()
354359
355360 # Fund source address
356- clusterlib_utils .fund_from_faucet (
357- addr ,
361+ fund_addresses = addrs if fund_idx is None else [addrs [i ] for i in fund_idx ]
362+ if fund_addresses :
363+ clusterlib_utils .fund_from_faucet (
364+ * fund_addresses ,
365+ cluster_obj = cluster_obj ,
366+ all_faucets = cluster_manager .cache .addrs_data ,
367+ amount = amount ,
368+ )
369+
370+ return addrs
371+
372+
373+ def get_payment_addr (
374+ name_template : str ,
375+ cluster_manager : cluster_management .ClusterManager ,
376+ cluster_obj : clusterlib .ClusterLib ,
377+ caching_key : str = "" ,
378+ amount : int | None = None ,
379+ ) -> clusterlib .AddressRecord :
380+ """Create a single new payment address."""
381+ return get_payment_addrs (
382+ name_template = name_template ,
383+ cluster_manager = cluster_manager ,
358384 cluster_obj = cluster_obj ,
359- all_faucets = cluster_manager .cache .addrs_data ,
385+ num = 1 ,
386+ caching_key = caching_key ,
360387 amount = amount ,
361- )
362-
363- return addr
388+ )[0 ]
0 commit comments