##// END OF EJS Templates
rust-cpython: add panicking version of borrow_mut() and use it...
rust-cpython: add panicking version of borrow_mut() and use it The original borrow_mut() is renamed to try_borrow_mut(). Since leak_immutable() no longer incref the borrow count, the caller should know if the underlying value is borrowed or not. No Python world is involved. That's why we can simply use the panicking borrow_mut().

File last commit:

r43346:2372284d default
r44685:2a24ead0 default
Show More
__init__.py
57 lines | 1.5 KiB | text/x-python | PythonLexer
Gregory Szorc
automation: perform tasks on remote machines...
r42191 # __init__.py - High-level automation interfaces
#
# Copyright 2019 Gregory Szorc <gregory.szorc@gmail.com>
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
# no-check-code because Python 3 native.
import pathlib
import secrets
Augie Fackler
formatting: blacken the codebase...
r43346 from .aws import AWSConnection
Gregory Szorc
automation: perform tasks on remote machines...
r42191
class HGAutomation:
"""High-level interface for Mercurial automation.
Holds global state, provides access to other primitives, etc.
"""
def __init__(self, state_path: pathlib.Path):
self.state_path = state_path
state_path.mkdir(exist_ok=True)
def default_password(self):
"""Obtain the default password to use for remote machines.
A new password will be generated if one is not stored.
"""
p = self.state_path / 'default-password'
try:
with p.open('r', encoding='ascii') as fh:
data = fh.read().strip()
if data:
return data
except FileNotFoundError:
pass
password = secrets.token_urlsafe(24)
with p.open('w', encoding='ascii') as fh:
fh.write(password)
fh.write('\n')
p.chmod(0o0600)
return password
Augie Fackler
formatting: blacken the codebase...
r43346 def aws_connection(self, region: str, ensure_ec2_state: bool = True):
Gregory Szorc
automation: perform tasks on remote machines...
r42191 """Obtain an AWSConnection instance bound to a specific region."""
Gregory Szorc
automation: don't create resources when deleting things...
r42463 return AWSConnection(self, region, ensure_ec2_state=ensure_ec2_state)