
from __future__ import annotations

from collections.abc import Generator

import requests
from bsa import BeautifulSoup

UpperCAmelCase	      = '''https://www.indeed.co.in/jobs?q=mobile+app+development&l='''






def 							UpperCAmelCase_		(							__SCREAMING_SNAKE_CASE = "mumbai"							):
	lowercase       =    BeautifulSoup(requests.get(url + location							).content ,							'html.parser'							)
	# This attribute finds out all the specifics listed in a job
	for job in soup.find_all('div' ,							attrs={'data-tn-component': 'organicJob'}							):
		lowercase       =    job.find('a' ,							attrs={'data-tn-element': 'jobTitle'}							).text.strip()
		lowercase       =    job.find('span' ,							{'class': 'company'}							).text.strip()
		yield job_title, company_name


if __name__ == "__main__":
	for i, job in enumerate(fetch_jobs('''Bangalore'''), 1):
		print(F"""Job {i:>2} is {job[0]} at {job[1]}""")



import importlib
import sys
from argparse import REMAINDER, ArgumentParser
from pathlib import Path

import torch_xla.distributed.xla_multiprocessing as xmp






def 							UpperCAmelCase_		(							):
	lowercase       =    ArgumentParser(
	    description=(
	        'PyTorch TPU distributed training launch '
	        'helper utility that will spawn up '
	        'multiple distributed processes'
	    )							)

	# Optional arguments for the launch helper
	parser.add_argument('--num_cores' ,							type=__SCREAMING_SNAKE_CASE ,							default=1 ,							help='Number of TPU cores to use (1 or 8).'							)

	# positional
	parser.add_argument(
	    'training_script' ,							type=__SCREAMING_SNAKE_CASE ,							help=(
	        'The full path to the single TPU training '
	        'program/script to be launched in parallel, '
	        'followed by all the arguments for the '
	        'training script'
	    ) ,							)

	# rest from the training program
	parser.add_argument('training_script_args' ,							nargs=__SCREAMING_SNAKE_CASE							)

	return parser.parse_args()






def 							UpperCAmelCase_		(							):
	lowercase       =    parse_args()

	# Import training_script as a module.
	lowercase       =    Path(args.training_script							)
	sys.path.append(str(script_fpath.parent.resolve()							)							)
	lowercase       =    script_fpath.stem
	lowercase       =    importlib.import_module(__SCREAMING_SNAKE_CASE							)

	# Patch sys.argv
	lowercase       =    [args.training_script] + args.training_script_args + ['--tpu_num_cores', str(args.num_cores							)]
	xmp.spawn(mod._mp_fn ,							args=() ,							nprocs=args.num_cores							)


if __name__ == "__main__":
	main()

