@@ -54,7 +54,7 @@ def create_account(self, account=None, sequence_retry_count=20):
54
54
55
55
:param `Account` account: :class:`.Account` object that you whish to use as the signing account.
56
56
The :class:`.Account` object contains the public/private keys to access and submit commands
57
- on the convex network. The address property will be changed by this method.
57
+ on the convex network.
58
58
59
59
If no object given, then this method will automatically create a new :class:`.Account` object.
60
60
:type account: Account, optional
@@ -64,7 +64,7 @@ def create_account(self, account=None, sequence_retry_count=20):
64
64
create accounts on the same node, then we will get sequence errors.
65
65
:type sequence_retry_count: int, optional
66
66
67
- :returns: A new :class:`.Account` object, or the current supplied :class:`.Account` object with a new `address` property set
67
+ :returns: A new :class:`.Account` object, or copy of the :class:`.Account` object with a new `address` property value set
68
68
69
69
70
70
.. code-block:: python
@@ -127,18 +127,86 @@ def create_account(self, account=None, sequence_retry_count=20):
127
127
def load_account (self , name , account ):
128
128
"""
129
129
130
- Load an account using the account name. If successfull return the account address
130
+ Load an account using the account name. If successfull return the :class:`.Account` object with the address set.
131
+
132
+ This is a Query operation, so no convex tokens are used in loading the account.
133
+
134
+ :param str name: name of the account to load
135
+ :param Account account: :class:`.Account` object to import
136
+
137
+ :results: :class:`.Account` object with the address and name set, if not found then return None
138
+
139
+
140
+ .. code-block:: python
141
+
142
+ >>> # Create a new account with new public/priavte keys and address
143
+ >>> import_account = Account.import_from_file('my_account.pem', 'secret')
144
+ >>> account = convex.load_account('my_account, import_account)
145
+ >>> print(account.name)
146
+ my_account
147
+ >>> print(account.address)
148
+ 930
131
149
132
150
"""
133
151
address = self .resolve_account_name (name )
134
152
if address :
135
153
new_account = Account .import_from_account (account , address = address , name = name )
136
154
return new_account
137
155
156
+ def setup_account (self , name , import_account ):
157
+ """
158
+
159
+ Convenience method to create or load an account based on the account name.
160
+ If the account name cannot be found then account will be created and account name registered,
161
+ if the name is found, then account and it's address with that name will be loaded.
162
+
163
+ :param str name: name of the account to create or load
164
+ :param Account account: :class:`.Account` object to import
165
+
166
+ :results: :class:`.Account` object with the address and name set, if not found then return None
167
+
168
+ **Note** This method calls the :meth:`.topup_account` method to get enougth funds to register an account name.
169
+
170
+
171
+ .. code-block:: python
172
+
173
+ >>> import_account = Account.import_from_file('my_account.pem', 'secret')
174
+ >>> # create or load the account named 'my_account'
175
+ >>> account = convex.setup_account('my_account', import_account)
176
+ >>> print(account.name)
177
+ my_account
178
+
179
+ """
180
+ if self .resolve_account_name (name ):
181
+ account = self .load_account (name , import_account )
182
+ else :
183
+ account = self .create_account (account = import_account )
184
+ self .topup_account (account )
185
+ self .register_account_name (name , account )
186
+ self .topup_account (account )
187
+ return account
188
+
138
189
def register_account_name (self , name , account ):
139
190
"""
140
191
141
- Register an account with the given address, with a name.
192
+ Register an account address with an account name.
193
+
194
+ This call will submit to the CNS (Convex Name Service), a name in the format
195
+ "`account.<your_name>`". You need to have some convex balance in your account, and
196
+ a valid account address.
197
+
198
+ :param str name: name of the account to register
199
+ :param Account account: :class:`.Account` object to register the account name
200
+
201
+
202
+ >>> # create a new account
203
+ >>> account = convex.create_account()
204
+ >>> # add some convex tokens to the account
205
+ >>> convex.topup_account(account)
206
+ 10000000
207
+ >>> account = convex.register_account('my_new_account', account)
208
+ >>> print(account.name)
209
+ my_new_account
142
210
143
211
"""
144
212
if account .address :
0 commit comments