moody.bridge.common API documentation

# Module `moody.bridge.common`

Expand source code

    import sys
    from collections import namedtuple
    from contextlib import contextmanager
    from dataclasses import dataclass
    from os import remove
    from pathlib import Path
    from tempfile import NamedTemporaryFile
    from typing import List, Generator

    swap_retry_address = '0x00000000000000000000000000000000deadbeef'

    @contextmanager
    def temp_file(data: str):
        f = NamedTemporaryFile(mode="w+", delete=False)
        f.write(data)
        f.close()
        yield f.name
        remove(f.name)

    # todo: I don't think this actually works
    @contextmanager
    def temp_files(data: List[str], logger) -> Generator:
        temp = []
        for d in data:
            temp.append(temp_file(d))

        yield list(manager.__enter__() for manager in temp)
        for manager in temp:
            try:
                manager.__exit__(*sys.exc_info())
            except OSError as e:
                logger.debug(msg=e)

    # noinspection PyTypeChecker
    def project_base_path(src: str):
        res = module_dir(src)
        return Path(res).parent

    def module_dir(module) -> Path:
        return Path(module.__file__).parent

    # Token = namedtuple('Token', ['address', 'name', 'code_hash'], defaults=(None,) * 3)
    @dataclass
    class Token:
        address: str = None
        name: str = None
        code_hash: str = None
        token_contract: str = None

    SecretAccount = namedtuple('SecretAccount', ['address', 'name'])

    def bytes_from_hex(s: str):
        if s[0:1] == '0x':
            return bytes.fromhex(s[2:])
        return bytes.fromhex(s)

## Functions

`def bytes_from_hex(s: str)`
  Expand source code

      def bytes_from_hex(s: str):
          if s[0:1] == '0x':
              return bytes.fromhex(s[2:])
          return bytes.fromhex(s)

`def module_dir(module) ‑> pathlib.Path`
  Expand source code

      def module_dir(module) -> Path:
          return Path(module.__file__).parent

`def project_base_path(src: str)`
  Expand source code

      def project_base_path(src: str):
          res = module_dir(src)
          return Path(res).parent

`def temp_file(data: str)`
  Expand source code

      @contextmanager
      def temp_file(data: str):
          f = NamedTemporaryFile(mode="w+", delete=False)
          f.write(data)
          f.close()
          yield f.name
          remove(f.name)

`def temp_files(data: List[str], logger) ‑> Generator`
  Expand source code

      @contextmanager
      def temp_files(data: List[str], logger) -> Generator:
          temp = []
          for d in data:
              temp.append(temp_file(d))

          yield list(manager.__enter__() for manager in temp)
          for manager in temp:
              try:
                  manager.__exit__(*sys.exc_info())
              except OSError as e:
                  logger.debug(msg=e)

## Classes

`class SecretAccount (address, name)`

  SecretAccount(address, name)

  ### Ancestors

  - builtins.tuple

  ### Instance variables

  `var address`

    Alias for field number 0

  `var name`

    Alias for field number 1

`class Token (address: str = None, name: str = None, code_hash: str = None, token_contract: str = None)`

  Token(address: str = None, name: str = None, code_hash: str = None, token_contract: str = None)

  Expand source code

      class Token:
          address: str = None
          name: str = None
          code_hash: str = None
          token_contract: str = None

  ### Class variables

  `var address : str`
  `var code_hash : str`
  `var name : str`
  `var token_contract : str`