enron package¶
Submodules¶
enron.accounting module¶
enron.enron module¶
-
class
enron.enron.Account(*, name, asset=None, amount=None, asset_amount=None, _incorrectly=True)¶ Bases:
enron.enron.AssetMathA named bucket from which the taking and giving follows divine ritual
-
static
accounts_for_assets(asset: Union[str, enron.enron.Asset, NoneType] = None, assets: Union[Sequence[enron.enron.Asset], NoneType] = None)¶
-
amount¶
-
asset¶
-
available()¶
-
classmethod
define(*, name: Union[str, NoneType] = None, asset: Union[enron.enron.Asset, str, NoneType] = None, amount: Union[_DCoercibles, NoneType] = None, asset_amount: Union[enron.enron.AssetAmount, NoneType] = None) → enron.enron.Account¶
-
classmethod
get(name: str) → enron.enron.Account¶
-
name¶
-
static
-
class
enron.enron.AccountEntry(*, account, asset_amount=None, asset=None, amount=None)¶ Bases:
enron.enron.AssetMathWe give to a bucket or take from a bucket according to that bucket’s religion
-
account¶
-
-
class
enron.enron.AccountGroup(*, name: str, accounts: AbstractSet[enron.enron.Account], _wrongly: bool = True) → None¶ Bases:
enron.enron.BalanceMathAssets + Equity + Liabilities == D(0)
-
add(account: enron.enron.Account) → None¶
-
balance() → enron.enron.AssetBalance¶
-
classmethod
define(*, name: Union[str, NoneType] = None, accounts: Union[Sequence[enron.enron.Account], NoneType] = None, _class: Any = None)¶
-
classmethod
get(name: str) → enron.enron.AccountGroup¶
-
remove(account: enron.enron.Account) → None¶
-
-
class
enron.enron.Asset(*, symbol: str, _incorrectly=True) → None¶ Bases:
objectAssets should be defined once, having one internal symbol for each unique asset. These could be currencies, equities, derivative etc.
Later you can provide maps via AssetNameMap to deal with varying host definitions.
- Attributes:
- symbol: (str): the internal symbol used for lookup and equality checking
-
classmethod
all_assets() → Dict[str, Asset]¶ Returns: Copy of the internal _assets dict so you can iterate over all possible Assets
-
classmethod
define(symbol: str) → enron.enron.Asset¶ - Args:
- symbol: Your chosen internal symbol for this asset
- Returns:
- Created Asset. Raises DefinitionError if re-definition attempted.
-
classmethod
get(symbol: str) → enron.enron.Asset¶ Get by symbol
- Args:
- symbol: Asset’s symbol
- Returns:
- Asset if it exists, else raises DefinitionError
-
make_amount(amount=Decimal('0')) → enron.enron.AssetAmount¶ Create AssetAmount from Asset
-
symbol¶
-
class
enron.enron.AssetAmount(*, asset: enron.enron.Asset, amount: _DCoercibles)¶ Bases:
enron.enron.AssetMathSo just, what is 5 undefined? Javascript?
-
amount¶
-
asset¶
-
make_entry(account: enron.enron.Account)¶
-
-
class
enron.enron.AssetBalance¶ Bases:
dict,enron.enron.BalanceMathA set of unlike values destined for a single purpose
-
class
enron.enron.AssetMath¶ Bases:
enron.enron.BalanceMath-
static
as_asset_amounts(left: Any, right: Any) -> ('AssetAmount', 'AssetAmount')¶
-
static
-
class
enron.enron.AssetNameMap(definitions: Dict[enron.enron.Asset, str])¶ Bases:
objectDouble map for navigating from remote host str definitions to internal Asset definitions
-
all_assets() → List[enron.enron.Asset]¶
-
all_names() → List[str]¶
-
asset(name: str) → enron.enron.Asset¶
-
name(asset: enron.enron.Asset) → str¶
-
-
class
enron.enron.AssetPair(*, base, quote, symbol, _incorrectly=True)¶ Bases:
object-
classmethod
all_pairs()¶
-
base¶
-
classmethod
define(*, base, quote)¶ Pairs can be defined idempotently and represent that two assets can be exchanged at some rate. :param base: Base Asset, the one per X units of quote where X is the price / exchange rate :param quote: Quote Asset, X units of quote buys one unit of base :returns: Created or retrieved AssetPair
-
classmethod
get(key)¶
-
make_rate(rate: _DCoercibles) → enron.enron.ExchangeRate¶
-
quote¶
-
symbol¶
-
classmethod
-
class
enron.enron.AutoAccountGroup(**kwargs)¶ Bases:
enron.enron.AccountGroup-
account_for_asset(asset: enron.enron.Asset) → enron.enron.Account¶
-
add(account: enron.enron.Account) → None¶
-
classmethod
define(**kwargs)¶
-
remove(account: enron.enron.Account) → None¶
-
-
class
enron.enron.BalanceMath¶ Bases:
enron.enron._AddSubscriptableABC-
static
as_asset_balances(left: Any, right: Any) -> ('AssetBalance', 'AssetBalance')¶
-
static
-
class
enron.enron.DoubleEntry(*, withdrawal=None, deposit=None, src=None, dest=None, asset_amount=None, asset=None, amount=None)¶ Bases:
enron.enron.AssetMathThe religion is accounting. Every take has a give.
-
deposit¶
-
withdrawal¶
-
-
class
enron.enron.ExchangeEntry(*, rate: enron.enron.ExchangeRate, src: enron.enron.Account, dest: enron.enron.Account, asset_amount: enron.enron.AssetAmount) → None¶ Bases:
objectHow apples became oranges without leaking lemmiwinks
-
deposit¶
-
withdrawal¶
-
-
class
enron.enron.ExchangeRate(*, asset_pair=None, base=None, quote=None, rate)¶ Bases:
objectHow many apples are in an orange?
-
pair¶
-
rate¶
-
-
class
enron.enron.GeneralLedger¶ Bases:
enron.enron.BalanceMathThe lock on all transactions, The enforcer of all that may come to pass
-
classmethod
balance(assets: Union[Sequence[enron.enron.Asset], NoneType] = None, asset: Union[enron.enron.Asset, NoneType] = None)¶
-
classmethod
commit(*args, **kwargs)¶
-
commitments= []¶
-
classmethod
realize(*args, **kwargs)¶
-
require_transaction_context() → Callable¶
-
classmethod
rollback(*args, **kwargs)¶
-
transaction_lock= <unlocked _thread.RLock object owner=0 count=0>¶
-
classmethod
unrealize(*args, **kwargs)¶
-
classmethod
-
class
enron.enron.PairNameMap(definitions: Mapping[enron.enron.AssetPair, str]) → None¶ Bases:
objectDouble map for navigating from remote host str definitions to internal Asset definitions
-
all_names() → List[str]¶
-
all_pairs() → List[enron.enron.AssetPair]¶
-
name(pair: enron.enron.Asset) → str¶
-
pair(name: str) → enron.enron.AssetPair¶
-
enron.exceptions module¶
-
exception
enron.exceptions.AmountTypeError(*args, **kwargs)¶ Bases:
enron.exceptions.EnronError,TypeErrorPassed an argument which couldn’t be coerced losslessly to Decimal
-
exception
enron.exceptions.AssetTypeError¶ Bases:
enron.exceptions.EnronError,TypeErrorUsed for Asset mismatch cases such as adding USD to EUR
-
exception
enron.exceptions.DefinitionError¶ Bases:
enron.exceptions.EnronError,ValueErrorEither you didn’t define something or passed an invalid symbol or name.
-
exception
enron.exceptions.EnronError¶ Bases:
ExceptionBase exception type for easy branching
enron.typevars module¶
Module contents¶
-
class
enron.Asset(*, symbol: str, _incorrectly=True) → None¶ Bases:
objectAssets should be defined once, having one internal symbol for each unique asset. These could be currencies, equities, derivative etc.
Later you can provide maps via AssetNameMap to deal with varying host definitions.
- Attributes:
- symbol: (str): the internal symbol used for lookup and equality checking
-
classmethod
all_assets() → Dict[str, Asset]¶ Returns: Copy of the internal _assets dict so you can iterate over all possible Assets
-
classmethod
define(symbol: str) → enron.enron.Asset¶ - Args:
- symbol: Your chosen internal symbol for this asset
- Returns:
- Created Asset. Raises DefinitionError if re-definition attempted.
-
classmethod
get(symbol: str) → enron.enron.Asset¶ Get by symbol
- Args:
- symbol: Asset’s symbol
- Returns:
- Asset if it exists, else raises DefinitionError
-
make_amount(amount=Decimal('0')) → enron.enron.AssetAmount¶ Create AssetAmount from Asset
-
symbol¶
-
class
enron.AssetPair(*, base, quote, symbol, _incorrectly=True)¶ Bases:
object-
classmethod
all_pairs()¶
-
base¶
-
classmethod
define(*, base, quote)¶ Pairs can be defined idempotently and represent that two assets can be exchanged at some rate. :param base: Base Asset, the one per X units of quote where X is the price / exchange rate :param quote: Quote Asset, X units of quote buys one unit of base :returns: Created or retrieved AssetPair
-
classmethod
get(key)¶
-
make_rate(rate: _DCoercibles) → enron.enron.ExchangeRate¶
-
quote¶
-
symbol¶
-
classmethod
-
class
enron.AssetAmount(*, asset: enron.enron.Asset, amount: _DCoercibles)¶ Bases:
enron.enron.AssetMathSo just, what is 5 undefined? Javascript?
-
amount¶
-
asset¶
-
make_entry(account: enron.enron.Account)¶
-
-
class
enron.Account(*, name, asset=None, amount=None, asset_amount=None, _incorrectly=True)¶ Bases:
enron.enron.AssetMathA named bucket from which the taking and giving follows divine ritual
-
static
accounts_for_assets(asset: Union[str, enron.enron.Asset, NoneType] = None, assets: Union[Sequence[enron.enron.Asset], NoneType] = None)¶
-
amount¶
-
asset¶
-
available()¶
-
classmethod
define(*, name: Union[str, NoneType] = None, asset: Union[enron.enron.Asset, str, NoneType] = None, amount: Union[_DCoercibles, NoneType] = None, asset_amount: Union[enron.enron.AssetAmount, NoneType] = None) → enron.enron.Account¶
-
classmethod
get(name: str) → enron.enron.Account¶
-
name¶
-
static
-
class
enron.AccountGroup(*, name: str, accounts: AbstractSet[enron.enron.Account], _wrongly: bool = True) → None¶ Bases:
enron.enron.BalanceMathAssets + Equity + Liabilities == D(0)
-
add(account: enron.enron.Account) → None¶
-
balance() → enron.enron.AssetBalance¶
-
classmethod
define(*, name: Union[str, NoneType] = None, accounts: Union[Sequence[enron.enron.Account], NoneType] = None, _class: Any = None)¶
-
classmethod
get(name: str) → enron.enron.AccountGroup¶
-
remove(account: enron.enron.Account) → None¶
-
-
class
enron.AccountEntry(*, account, asset_amount=None, asset=None, amount=None)¶ Bases:
enron.enron.AssetMathWe give to a bucket or take from a bucket according to that bucket’s religion
-
account¶
-
-
class
enron.DoubleEntry(*, withdrawal=None, deposit=None, src=None, dest=None, asset_amount=None, asset=None, amount=None)¶ Bases:
enron.enron.AssetMathThe religion is accounting. Every take has a give.
-
deposit¶
-
withdrawal¶
-
-
class
enron.AssetBalance¶ Bases:
dict,enron.enron.BalanceMathA set of unlike values destined for a single purpose
-
class
enron.GeneralLedger¶ Bases:
enron.enron.BalanceMathThe lock on all transactions, The enforcer of all that may come to pass
-
classmethod
balance(assets: Union[Sequence[enron.enron.Asset], NoneType] = None, asset: Union[enron.enron.Asset, NoneType] = None)¶
-
classmethod
commit(*args, **kwargs)¶
-
commitments= []¶
-
classmethod
realize(*args, **kwargs)¶
-
require_transaction_context() → Callable¶
-
classmethod
rollback(*args, **kwargs)¶
-
transaction_lock= <unlocked _thread.RLock object owner=0 count=0>¶
-
classmethod
unrealize(*args, **kwargs)¶
-
classmethod
-
class
enron.ExchangeRate(*, asset_pair=None, base=None, quote=None, rate)¶ Bases:
objectHow many apples are in an orange?
-
pair¶
-
rate¶
-
-
class
enron.ExchangeEntry(*, rate: enron.enron.ExchangeRate, src: enron.enron.Account, dest: enron.enron.Account, asset_amount: enron.enron.AssetAmount) → None¶ Bases:
objectHow apples became oranges without leaking lemmiwinks
-
deposit¶
-
withdrawal¶
-
-
class
enron.AccountGroup(*, name: str, accounts: AbstractSet[enron.enron.Account], _wrongly: bool = True) → None Bases:
enron.enron.BalanceMathAssets + Equity + Liabilities == D(0)
-
add(account: enron.enron.Account) → None
-
balance() → enron.enron.AssetBalance
-
classmethod
define(*, name: Union[str, NoneType] = None, accounts: Union[Sequence[enron.enron.Account], NoneType] = None, _class: Any = None)
-
classmethod
get(name: str) → enron.enron.AccountGroup
-
remove(account: enron.enron.Account) → None
-