


'''simple docstring'''




import json
import os
from datetime import date
from pathlib import Path

from tabulate import DataRow, TableFormat, tabulate


_lowerCAmelCase  :		str		     =	TableFormat(
    lineabove=None,
    linebelowheader=None,
    linebetweenrows=None,
    linebelow=None,
    headerrow=DataRow('', '|', '|'),
    datarow=DataRow('', '|', '|'),
    padding=1,
    with_header_hide=None,
)


_lowerCAmelCase  :		Tuple		     =	[]
_lowerCAmelCase  :		List[str]		     =	[]

_lowerCAmelCase  :		Tuple		     =	{'type': 'section', 'text': {'type': 'plain_text', 'text': 'No failed tests! 🤗', 'emoji': True}}

_lowerCAmelCase  :		str		     =	[
    {
        'type': 'header',
        'text': {
            'type': 'plain_text',
            'text': f"""🤗 Accelerate nightly {os.environ.get('TEST_TYPE', '')} test results""",
            'emoji': True,
        },
    }
]

_lowerCAmelCase  :		Any		     =	0
for log in Path().glob('*.log'):
				_lowerCAmelCase  :		Optional[int]		     =	0
				with open(log, 'r') as f:
								for line in f:
												_lowerCAmelCase  :		Dict		     =	json.loads(line)
												if line.get('nodeid', '') != "":
																_lowerCAmelCase  :		Union[str, Any]		     =	line['nodeid']
																if line.get('duration', None) is not None:
																				_lowerCAmelCase  :		Optional[int]		     =	f"""{line['duration']:.4f}"""
																				if line.get('outcome', '') == "failed":
																								section_num_failed += 1
																								failed.append([test, duration, log.name.split('_')[0]])
																								total_num_failed += 1
				group_info.append([str(log), section_num_failed, failed])
				_lowerCAmelCase  :		Optional[Any]		     =	[]
				log.unlink()

_lowerCAmelCase  :		Dict		     =	''
_lowerCAmelCase  :		List[Any]		     =	[]
if total_num_failed > 0:
				for name, num_failed, failed_tests in group_info:
								if num_failed > 0:
												if num_failed == 1:
																message += f"*{name[1:]}: {num_failed} failed test*\n"
												else:
																message += f"*{name[1:]}: {num_failed} failed tests*\n"
												_lowerCAmelCase  :		Any		     =	[]
												_lowerCAmelCase  :		Tuple		     =	{}
												for test in failed_tests:
																_lowerCAmelCase  :		str		     =	test[0].split('::')
																_lowerCAmelCase  :		Optional[Any]		     =	data[0].split('/')[-1]
																if data[0] not in filesafailed:
																				_lowerCAmelCase  :		int		     =	[data[1:]]
																else:
																				filesafailed[data[0]] += [data[1:]]
																failed_table.append(data)

												_lowerCAmelCase  :		int		     =	[test[0] for test in failed_table]
												_lowerCAmelCase  :		Union[str, Any]		     =	list(set(files))
												# Count number of instances in failed_tests
												_lowerCAmelCase  :		Optional[int]		     =	[]
												for file in individual_files:
																table.append([file, len(filesafailed[file])])

												_lowerCAmelCase  :		Any		     =	tabulate(
												    table,
												    headers=['Test Location', 'Num Failed'],
												    tablefmt=hf_table_format,
												    stralign='right',
												)
												message += f"\n```\n{failed_table}\n```"
												all_filesafailed.append(filesafailed)
				if len(message) > 3000:
								_lowerCAmelCase  :		Union[str, Any]		     =	'Too many failed tests, please see the full report in the Action results.'
								_lowerCAmelCase  :		List[Any]		     =	len(err) + 10
								_lowerCAmelCase  :		Optional[Any]		     =	message[: 3000 - offset] + f"""\n...\n```\n{err}"""
				print(f"""### {message}""")
else:
				_lowerCAmelCase  :		Optional[int]		     =	'No failed tests! 🤗'
				print(f"""## {message}""")
				payload.append(no_error_payload)

if os.environ.get('TEST_TYPE', '') != "":
				from slack_sdk import WebClient

				_lowerCAmelCase  :		Optional[int]		     =	WebClient(token=os.environ['SLACK_API_TOKEN'])
				if message != "No failed tests! 🤗":
								_lowerCAmelCase  :		str		     =	{
								    'type': 'section',
								    'text': {
								        'type': 'mrkdwn',
								        'text': message,
								    },
								}
								payload.append(md_report)
								_lowerCAmelCase  :		List[Any]		     =	{
								    'type': 'section',
								    'text': {
								        'type': 'mrkdwn',
								        'text': '*For more details:*',
								    },
								    'accessory': {
								        'type': 'button',
								        'text': {
								            'type': 'plain_text',
								            'text': 'Check Action results',
								            'emoji': True,
								        },
								        'url': f"""https://github.com/{os.environ['GITHUB_REPOSITORY']}/actions/runs/{os.environ['GITHUB_RUN_ID']}""",
								    },
								}
								payload.append(action_button)
								_lowerCAmelCase  :		Optional[int]		     =	{
								    'type': 'context',
								    'elements': [
								        {
								            'type': 'plain_text',
								            'text': f"""Nightly {os.environ.get('TEST_TYPE')} test results for {date.today()}""",
								        }
								    ],
								}
								payload.append(date_report)
				_lowerCAmelCase  :		Dict		     =	client.chat_postMessage(channel='#accelerate-ci-daily', text=message, blocks=payload)
				_lowerCAmelCase  :		List[str]		     =	response.data['ts']
				for failed_file in all_filesafailed:
								for test_location, test_failures in failed_file.items():
												# Keep only the first instance of the test name
												_lowerCAmelCase  :		Optional[Any]		     =	''
												for i, row in enumerate(test_failures):
																if row[0] != test_class:
																				_lowerCAmelCase  :		Dict		     =	row[0]
																else:
																				_lowerCAmelCase  :		str		     =	''

												_lowerCAmelCase  :		List[str]		     =	{
												    'type': 'section',
												    'text': {
												        'type': 'mrkdwn',
												        'text': f"""Test location: {test_location}\n```\n{tabulate(test_failures, headers=['Class', 'Test'], tablefmt=hf_table_format, stralign='right')}\n```""",
												    },
												}

												client.chat_postMessage(
												    channel='#accelerate-ci-daily',
												    thread_ts=ts,
												    blocks=[payload],
												)




'''simple docstring'''




_lowerCAmelCase  :		List[str]		     =	{str(digit): digit**5 for digit in range(10)}

def 			__UpperCamelCase    (    _A    :				int				)    ->      int:




	"""simple docstring"""





	return sum(DIGITS_FIFTH_POWER[digit] for digit in str(_A				)				)

def 			__UpperCamelCase    (    )    ->      int:




	"""simple docstring"""





	return sum(
	    number
	    for number in range(10_00					,   1_00_00_00				)
	    if number == digits_fifth_powers_sum(_A				)				)


if __name__ == "__main__":
				print(solution())
