﻿£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>
# -*- coding: utf-8 -*-
"""
Helper for testing a C++ exception throw aborts the process.

Takes one argument, the name of the function in :mod:`_test_extension_cpp` to call.
"""
import sys
import greenlet
from greenlet.tests import _test_extension_cpp
print('fail_cpp_exception is running')

def run_unhandled_exception_in_greenlet_aborts():
    def _():
        _test_extension_cpp.test_exception_switch_and_do_in_g2(
            _test_extension_cpp.test_exception_throw_nonstd
        )
    g1 = greenlet.greenlet(_)
    g1.switch()


func_name = sys.argv[1]
try:
    func = getattr(_test_extension_cpp, func_name)
except AttributeError:
    if func_name == run_unhandled_exception_in_greenlet_aborts.__name__:
        func = run_unhandled_exception_in_greenlet_aborts
    elif func_name == 'run_as_greenlet_target':
        g = greenlet.greenlet(_test_extension_cpp.test_exception_throw_std)
        func = g.switch
    else:
        raise
print('raising', func, flush=True)
func()
