def __new__(meta, name, bases, dct): print('-----------------------------------') print(f"Allocating memory for class {name}") print(meta) print(bases) print(dct) if '__asynclib__' in dct: #using async requests import multio multio.init(dct['__asynclib__']) dct['asynclib'] = multio.asynclib # no __async__ member implies sync blocking return super(AsyncApi, meta).__new__(meta, name, bases, dct)
import datetime import logging import multio from curious.core.client import Client from ruamel.yaml import YAML from irc import IRC, User with open('config.yml', 'r') as fp: config = YAML().load(fp) logging.basicConfig(level=logging.DEBUG) logging.getLogger('lomond').setLevel(logging.WARNING) logging.getLogger('curious').setLevel(logging.WARNING) multio.init('trio') bot = Client(config['discord']['token']) bot.irc = IRC(config['irc']['host'], config['irc']['port'], autojoin=config['irc']['autojoin'], nick=config['irc'].get('nick'), bot=bot, config=config) @bot.irc.on('privmsg') async def privmsg_handler(channel: str, author: User, message: str): dest = bot.find_channel(config['discord']['broadcast_channel']) clean_message = message.replace('@', '@\u200b').replace( '`', '\N{MODIFIER LETTER GRAVE ACCENT}')[:1500]
def run_asy(urls: list): """ set up trio """ multio.init("trio") return trio.run(nurs, urls)
import logging import multio from curious import EventContext from curious.commands import CommandsManager, Context from curious.commands.exc import ConditionsFailedError, ConversionFailedError from curious.core.client import Client from pathlib import Path from sixx.credentials import discord multio.init('curio') client = Client(discord.token) manager = CommandsManager.with_client(client, command_prefix='t!') client.manager = manager logger = logging.getLogger('6X') @client.event('command_error') async def handle_errors(event_ctx: EventContext, ctx: Context, error): if isinstance(error, ConditionsFailedError): logger.info('{author.name}#{author.discriminator} ({author.user.id}) ' 'Tried to use the command `{0.command_name}`'.format( ctx, error, author=ctx.author.user)) return if isinstance(error, ConversionFailedError): await ctx.channel.messages.send(str(error)) raise error
def setup_class(cls): multio.init('trio')
""" The core of Curious. This package contains the bulk of the network interface with Discord, including parsing data that is incoming and delegating it to client code. .. currentmodule:: curious.core .. autosummary:: :toctree: core client event gateway httpclient state """ import asks import multio if asks.init != multio.init: _init = multio.init multio.init = lambda lib: (asks.init(lib), _init(lib)) multio.init("curio")
def multio_init(*args, **kwargs): multio.init(os.environ.get("MULTIO_LIB"))
import yaml import multio import trio import raven from curious.dataclasses.presence import Game, GameType, Status from curious.commands.exc import ConversionFailedError from . import web from .config import SENTRY_DSN, BOT_TOKEN, GLADOS_TOKEN, MASHERY_API_KEY, DEVELOPMENT from .i18n import I18NCommandsManager from .models import Database from .orisa import Orisa, OrisaClient multio.init("trio") with open("logging.yaml") as logfile: logging.config.dictConfig(yaml.safe_load(logfile)) logger = logging.getLogger("orisa.main") if SENTRY_DSN: logger.info("USING SENTRY") raven_client = raven.Client(dsn=SENTRY_DSN, release=raven.fetch_git_sha( os.path.dirname(__file__))) @client.event("command_error") async def command_error(ev_ctx, ctx, err): exc_info = (type(err), err, err.__traceback__)
def asynclib(request): libstr = request.config.getoption("--async") multio.init(libstr) return multio.asynclib