importargparsefromfakerimportFakerfromoffice365.sharepoint.client_contextimportClientContextfromoffice365.sharepoint.listitems.listitemimportListItemfromoffice365.sharepoint.lists.listimportListfromtests.settingsimportclient_id,password,team_site_url,tenant,usernamedefload_source(amount=100):fake=Faker()result=[]for_inrange(amount):entry={"Title":fake.name(),"FullName":fake.name(),"Email":fake.email(),"Company":fake.company(),"WorkPhone":fake.phone_number(),"WorkAddress":fake.street_address(),"WorkCity":fake.city(),"WorkZip":fake.postcode(),"WorkCountry":fake.country(),# "WebPage": {"Url": fake.url()},}result.append(entry)returnresultdefrun_import(source_data:list,target_list:List)->None:ctx=target_list.contextforcontactinsource_data:target_list.add_item(contact)items_result={"added":0}def_print_progress(return_types)->None:items_result["added"]+=len([tfortinreturn_typesifisinstance(t,ListItem)])print(f"{items_result['added']} items added")ctx.execute_batch(100,success_callback=_print_progress)defmain():parser=argparse.ArgumentParser(description="Import list items in bulk")parser.add_argument("--list-title",default="Contacts_Large",help="target list title")parser.add_argument("--amount",type=int,default=100,help="number of items to generate")args=parser.parse_args()client=ClientContext(team_site_url).with_username_and_password(tenant=tenant,client_id=client_id,username=username,password=password,)contacts=load_source(args.amount)contacts_list=client.web.lists.ensure_list(args.list_title).execute_query()contacts_list.ensure_fields(list(contacts[0].keys()))client.execute_query()run_import(contacts,contacts_list)if__name__=="__main__":main()