Skip to content

Commit e3a2ab5

Browse files
Compatible group... Include group.
1 parent 506a25a commit e3a2ab5

File tree

6 files changed

+669
-43
lines changed

6 files changed

+669
-43
lines changed

cardano_clusterlib/clusterlib_klass.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
from cardano_clusterlib import address_group
1212
from cardano_clusterlib import clusterlib_helpers
13+
from cardano_clusterlib import compat_group
1314
from cardano_clusterlib import consts
1415
from cardano_clusterlib import exceptions
1516
from cardano_clusterlib import genesis_group
@@ -125,6 +126,7 @@ def __init__(
125126
self._genesis_group: genesis_group.GenesisGroup | None = None
126127
self._legacy_gov_group: legacy_gov_group.LegacyGovGroup | None = None
127128
self._governance_group: gov_group.GovernanceGroup | None = None
129+
self._compatible_group: compat_group.CompatibleGroup | None = None
128130

129131
def set_socket_path(self, socket_path: itp.FileType | None) -> None:
130132
"""Set a path to socket file for communication with the node."""
@@ -235,6 +237,12 @@ def g_governance(self) -> gov_group.GovernanceGroup:
235237
self._governance_group = gov_group.GovernanceGroup(clusterlib_obj=self)
236238
return self._governance_group
237239

240+
@property
241+
def g_compatible(self) -> compat_group.CompatibleGroup:
242+
if not self._compatible_group:
243+
self._compatible_group = compat_group.CompatibleGroup(clusterlib_obj=self)
244+
return self._compatible_group
245+
238246
def cli(
239247
self,
240248
cli_args: list[str],

cardano_clusterlib/compat_alonzo_group.py

Lines changed: 66 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,7 @@
1212

1313

1414
class CompatibleAlonzoGroup:
15-
"""
16-
A Single container for ALL Alonzo compatible commands.
17-
18-
"""
15+
"""A single container for all Alonzo compatible commands."""
1916

2017
def __init__(self, clusterlib_obj: "ClusterLib") -> None:
2118
self._clusterlib_obj = clusterlib_obj
@@ -44,9 +41,7 @@ def registration_certificate(
4441
self,
4542
cli_args: itp.UnpackableSequence,
4643
) -> None:
47-
"""Wrapper for:
48-
cardano-cli compatible alonzo stake-address registration-certificate
49-
"""
44+
"""Wrap the `stake-address registration-certificate` command."""
5045
full_args = [
5146
*self._cli_args,
5247
"registration-certificate",
@@ -64,9 +59,7 @@ def stake_delegation_certificate(
6459
self,
6560
cli_args: itp.UnpackableSequence,
6661
) -> None:
67-
"""Wrapper for:
68-
cardano-cli compatible alonzo stake-address stake-delegation-certificate
69-
"""
62+
"""Wrap the `stake-address stake-delegation-certificate` command."""
7063
full_args = [
7164
*self._cli_args,
7265
"stake-delegation-certificate",
@@ -89,73 +82,106 @@ class StakePoolGroup:
8982

9083
def __init__(self, clusterlib_obj: "ClusterLib", base_args: tuple[str, str]) -> None:
9184
self._clusterlib_obj = clusterlib_obj
92-
self._group_args = (*base_args, "stake-pool")
85+
self._cli_args = ("cardano-cli", *base_args, "stake-pool")
86+
87+
def registration_certificate(
88+
self,
89+
cli_args: itp.UnpackableSequence,
90+
) -> None:
91+
"""Wrap the `stake-pool registration-certificate` command."""
92+
full_args = [
93+
*self._cli_args,
94+
"registration-certificate",
95+
*cli_args,
96+
]
9397

94-
def run_raw(self, cli_args: itp.UnpackableSequence) -> None:
95-
"""Generic low-level wrapper."""
96-
full_args = [*self._group_args, *cli_args]
98+
LOGGER.debug(
99+
"Running compatible alonzo stake-pool registration-certificate: %s",
100+
" ".join(str(a) for a in full_args),
101+
)
97102

98-
LOGGER.debug("Running compatible alonzo stake-pool: %s", " ".join(full_args))
99-
self._clusterlib_obj.cli(full_args)
103+
self._clusterlib_obj.cli(full_args, add_default_args=False)
100104

101105
def __repr__(self) -> str:
102-
return f"<StakePoolGroup base={self._group_args}>"
106+
return f"<{self.__class__.__name__} cli_args={self._cli_args}>"
103107

104108

105109
class GovernanceGroup:
106110
"""`cardano-cli compatible alonzo governance` commands."""
107111

108112
def __init__(self, clusterlib_obj: "ClusterLib", base_args: tuple[str, str]) -> None:
109113
self._clusterlib_obj = clusterlib_obj
110-
self._group_args = (*base_args, "governance")
114+
# Full fixed prefix: cardano-cli compatible alonzo governance
115+
self._cli_args = ("cardano-cli", *base_args, "governance")
116+
117+
def create_mir_certificate(
118+
self,
119+
cli_args: itp.UnpackableSequence,
120+
) -> None:
121+
"""Wrap the `governance create-mir-certificate` command."""
122+
full_args = [
123+
*self._cli_args,
124+
"create-mir-certificate",
125+
*cli_args,
126+
]
111127

112-
def run_raw(self, cli_args: itp.UnpackableSequence) -> None:
113-
"""Low-level wrapper."""
114-
full_args = [*self._group_args, *cli_args]
128+
LOGGER.debug(
129+
"Running compatible alonzo governance create-mir-certificate: %s",
130+
" ".join(str(a) for a in full_args),
131+
)
132+
133+
self._clusterlib_obj.cli(full_args, add_default_args=False)
134+
135+
def create_genesis_key_delegation_certificate(
136+
self,
137+
cli_args: itp.UnpackableSequence,
138+
) -> None:
139+
"""Wrap the `governance create-genesis-key-delegation-certificate` command."""
140+
full_args = [
141+
*self._cli_args,
142+
"create-genesis-key-delegation-certificate",
143+
*cli_args,
144+
]
145+
146+
LOGGER.debug(
147+
"Running compatible alonzo governance create-genesis-key-delegation-certificate: %s",
148+
" ".join(str(a) for a in full_args),
149+
)
115150

116-
LOGGER.debug("Running compatible alonzo governance: %s", " ".join(full_args))
117-
self._clusterlib_obj.cli(full_args)
151+
self._clusterlib_obj.cli(full_args, add_default_args=False)
118152

119153
def __repr__(self) -> str:
120-
return f"<GovernanceGroup base={self._group_args}>"
154+
return f"<{self.__class__.__name__} cli_args={self._cli_args}>"
121155

122156

123157
class TransactionGroup:
124158
"""Transaction commands for `cardano-cli compatible alonzo transaction`."""
125159

126160
def __init__(self, clusterlib_obj: "ClusterLib", base_args: tuple[str, str]) -> None:
127-
"""Group for 'compatible alonzo transaction' commands.
128-
129-
Args:
130-
clusterlib_obj: Main ClusterLib instance.
131-
base_args: Fixed CLI prefix
132-
"""
133161
self._clusterlib_obj = clusterlib_obj
134-
self._group_args = (*base_args, "transaction")
135-
136-
#We have only sign-transaction command for now
162+
# Full prefix: cardano-cli compatible alonzo transaction
163+
self._cli_args = ("cardano-cli", *base_args, "transaction")
137164

138165
def signed_transaction(
139166
self,
140167
cli_args: itp.UnpackableSequence,
141168
) -> None:
142-
"""Low-level wrapper for `cardano-cli compatible alonzo transaction signed-transaction`."""
143-
full_args: list[str] = [
144-
*self._group_args,
145-
"transaction",
169+
"""Wrap the `transaction signed-transaction` command."""
170+
full_args = [
171+
*self._cli_args,
146172
"signed-transaction",
147173
*cli_args,
148174
]
149175

150176
LOGGER.debug(
151-
"Running compatible Alonzo signed-transaction: %s",
177+
"Running compatible alonzo transaction signed-transaction: %s",
152178
" ".join(str(a) for a in full_args),
153179
)
154180

155-
self._clusterlib_obj.cli(full_args)
181+
self._clusterlib_obj.cli(full_args, add_default_args=False)
156182

157183
def __repr__(self) -> str:
158184
return (
159-
f"<CompatibleAlonzoTransactionGroup group_args={self._group_args} "
185+
f"<{self.__class__.__name__} cli_args={self._cli_args} "
160186
f"clusterlib_obj={id(self._clusterlib_obj)}>"
161187
)
Lines changed: 187 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,187 @@
1+
"""Babbage era compatible commands for `cardano-cli compatible babbage`."""
2+
3+
import logging
4+
from typing import TYPE_CHECKING
5+
6+
from cardano_clusterlib import types as itp
7+
8+
if TYPE_CHECKING:
9+
from cardano_clusterlib.clusterlib_klass import ClusterLib
10+
11+
LOGGER = logging.getLogger(__name__)
12+
13+
14+
class CompatibleBabbageGroup:
15+
"""Babbage era compatible group."""
16+
17+
def __init__(self, clusterlib_obj: "ClusterLib") -> None:
18+
self._clusterlib_obj = clusterlib_obj
19+
self._base_args = ("compatible", "babbage")
20+
21+
self.stake_address = StakeAddressGroup(clusterlib_obj, self._base_args)
22+
self.stake_pool = StakePoolGroup(clusterlib_obj, self._base_args)
23+
self.governance = GovernanceGroup(clusterlib_obj, self._base_args)
24+
self.transaction = TransactionGroup(clusterlib_obj, self._base_args)
25+
26+
def __repr__(self) -> str:
27+
return (
28+
f"<{self.__class__.__name__}: base_args={self._base_args} "
29+
f"clusterlib_obj={id(self._clusterlib_obj)}>"
30+
)
31+
32+
33+
class StakeAddressGroup:
34+
"""`cardano-cli compatible babbage stake-address` commands."""
35+
36+
def __init__(self, clusterlib_obj: "ClusterLib", base_args: tuple[str, str]) -> None:
37+
self._clusterlib_obj = clusterlib_obj
38+
self._cli_args = ("cardano-cli", *base_args, "stake-address")
39+
40+
def registration_certificate(
41+
self,
42+
cli_args: itp.UnpackableSequence,
43+
) -> None:
44+
"""Wrap the `stake-address registration-certificate` command."""
45+
full_args = [
46+
*self._cli_args,
47+
"registration-certificate",
48+
*cli_args,
49+
]
50+
51+
LOGGER.debug(
52+
"Running compatible babbage stake-address registration-certificate: %s",
53+
" ".join(str(a) for a in full_args),
54+
)
55+
56+
self._clusterlib_obj.cli(full_args, add_default_args=False)
57+
58+
def stake_delegation_certificate(
59+
self,
60+
cli_args: itp.UnpackableSequence,
61+
) -> None:
62+
"""Wrap the `stake-address stake-delegation-certificate` command."""
63+
full_args = [
64+
*self._cli_args,
65+
"stake-delegation-certificate",
66+
*cli_args,
67+
]
68+
69+
LOGGER.debug(
70+
"Running compatible babbage stake-address stake-delegation-certificate: %s",
71+
" ".join(str(a) for a in full_args),
72+
)
73+
74+
self._clusterlib_obj.cli(full_args, add_default_args=False)
75+
76+
def __repr__(self) -> str:
77+
return f"<{self.__class__.__name__} cli_args={self._cli_args}>"
78+
79+
80+
class StakePoolGroup:
81+
"""`cardano-cli compatible babbage stake-pool` commands."""
82+
83+
def __init__(self, clusterlib_obj: "ClusterLib", base_args: tuple[str, str]) -> None:
84+
self._clusterlib_obj = clusterlib_obj
85+
self._cli_args = ("cardano-cli", *base_args, "stake-pool")
86+
87+
def registration_certificate(
88+
self,
89+
cli_args: itp.UnpackableSequence,
90+
) -> None:
91+
"""Wrap the `stake-pool registration-certificate` command."""
92+
full_args = [
93+
*self._cli_args,
94+
"registration-certificate",
95+
*cli_args,
96+
]
97+
98+
LOGGER.debug(
99+
"Running compatible babbage stake-pool registration-certificate: %s",
100+
" ".join(str(a) for a in full_args),
101+
)
102+
103+
self._clusterlib_obj.cli(full_args, add_default_args=False)
104+
105+
def __repr__(self) -> str:
106+
return f"<{self.__class__.__name__} cli_args={self._cli_args}>"
107+
108+
109+
class GovernanceGroup:
110+
"""`cardano-cli compatible babbage governance` commands."""
111+
112+
def __init__(self, clusterlib_obj: "ClusterLib", base_args: tuple[str, str]) -> None:
113+
self._clusterlib_obj = clusterlib_obj
114+
# Full fixed prefix: cardano-cli compatible babbage governance
115+
self._cli_args = ("cardano-cli", *base_args, "governance")
116+
117+
def create_mir_certificate(
118+
self,
119+
cli_args: itp.UnpackableSequence,
120+
) -> None:
121+
"""Wrap the `governance create-mir-certificate` command."""
122+
full_args = [
123+
*self._cli_args,
124+
"create-mir-certificate",
125+
*cli_args,
126+
]
127+
128+
LOGGER.debug(
129+
"Running compatible babbage governance create-mir-certificate: %s",
130+
" ".join(str(a) for a in full_args),
131+
)
132+
133+
self._clusterlib_obj.cli(full_args, add_default_args=False)
134+
135+
def create_genesis_key_delegation_certificate(
136+
self,
137+
cli_args: itp.UnpackableSequence,
138+
) -> None:
139+
"""Wrap the `governance create-genesis-key-delegation-certificate` command."""
140+
full_args = [
141+
*self._cli_args,
142+
"create-genesis-key-delegation-certificate",
143+
*cli_args,
144+
]
145+
146+
LOGGER.debug(
147+
"Running compatible babbage governance create-genesis-key-delegation-certificate: %s",
148+
" ".join(str(a) for a in full_args),
149+
)
150+
151+
self._clusterlib_obj.cli(full_args, add_default_args=False)
152+
153+
def __repr__(self) -> str:
154+
return f"<{self.__class__.__name__} cli_args={self._cli_args}>"
155+
156+
157+
class TransactionGroup:
158+
"""Transaction commands for `cardano-cli compatible babbage transaction`."""
159+
160+
def __init__(self, clusterlib_obj: "ClusterLib", base_args: tuple[str, str]) -> None:
161+
self._clusterlib_obj = clusterlib_obj
162+
# Full prefix: cardano-cli compatible babbage transaction
163+
self._cli_args = ("cardano-cli", *base_args, "transaction")
164+
165+
def signed_transaction(
166+
self,
167+
cli_args: itp.UnpackableSequence,
168+
) -> None:
169+
"""Wrap the `transaction signed-transaction` command."""
170+
full_args = [
171+
*self._cli_args,
172+
"signed-transaction",
173+
*cli_args,
174+
]
175+
176+
LOGGER.debug(
177+
"Running compatible babbage transaction signed-transaction: %s",
178+
" ".join(str(a) for a in full_args),
179+
)
180+
181+
self._clusterlib_obj.cli(full_args, add_default_args=False)
182+
183+
def __repr__(self) -> str:
184+
return (
185+
f"<{self.__class__.__name__} cli_args={self._cli_args} "
186+
f"clusterlib_obj={id(self._clusterlib_obj)}>"
187+
)

0 commit comments

Comments
 (0)