Saravanan666/pypi-org huggingface dataset:
Package: asynctwitch
AsyncTwitch=======================This library is used to asynchronously interact with twitch chat.----Requirements:- Create a twitch.tv account- Get an Oauth token----How to use:```pythonimport asynctwitch# Use the pre-made CommandBot, to handle messages yourself, use asynctwitch.Bot and handle event_message.bot = asynctwitch.CommandBot(user = "Your_bot_twitch_username",oauth = "Your_twitch_oauth_token",  # oauth:1234567890abcdefghijklmnopqrstchannel = "channel_name",           # Defaults to Twitchprefix = "your_prefix_here",            # Defaults to '!')# Example command:@bot.command('example', alias=['moreexample','anothaone'], desc='example command')async def example(message, word1:str, number1:int, rest:str):bot.say('wow')# Example subcommand:@bot.command('say')async def say(m, subcommand:str):pass@say.subcommand('this')async def this(m):bot.say("that")bot.start()```To use a config file instead, use```pythonasynctwitch.Bot(config="your_settings.ini")# orasynctwitch.CommandBot(config="your_settings.ini")```see config.ini for an example fileIt's also possible to handle messages your own way, just use```python@bot.overrideasync def event_message(message):# your handling here```The same applies to all bot.event_X functions.To use `await bot.play_file('file.mp3')`, ffprobe, ffmpeg and ffplay have to be installed. They can be found on the ffmpeg website.To use `await bot.play_ytdl('song')`, youtube_dl has to be installed. Use `pip install youtube_dl` to install it.You will also need the requirements for `bot.play_file`These examples use the `async/await` syntax added in python 3.5, to use this code in 3.4 use `@asyncio.coroutine` and `yield from` instead.THIS DOES NOT WORK WITH PYTHON VERSIONS BELOW 3.4!
Package: async-typer
async-typerasync-typeris asimple async wrapperfor thetyperlibrary.
We already have a lot of async implementations for our applications, but we can't use them easily with typer.
Andasync-typerhave more features than typer to solve our real-world problems in a more elegant way.Installationpipinstallasync-typerHow to usefromasync_typerimportAsyncTyperapp=AsyncTyper()@app.command()deffoo():service.work()@app.async_command()asyncdefbar():awaitservice.work_async()FastAPI-like event handlersHandle startup and shutdown events with async or sync functions.app.add_event_handler("startup",redis_async_pool_manager.init_redis_pool)app.add_event_handler("shutdown",redis_async_pool_manager.close_redis_pool)Please check thetyper documentationfor more information.
Package: asyncudp
Asyncio high level UDP socketsAsyncio high level UDP sockets.Project homepage:https://github.com/eerimoq/asyncudpDocumentation:https://asyncudp.readthedocs.org/en/latestInstallation$pipinstallasyncudpExample clientimportasyncioimportasyncudpasyncdefmain():sock=awaitasyncudp.create_socket(remote_addr=('127.0.0.1',9999))sock.sendto(b'Hello!')print(awaitsock.recvfrom())sock.close()asyncio.run(main())Example serverimportasyncioimportasyncudpasyncdefmain():sock=awaitasyncudp.create_socket(local_addr=('127.0.0.1',9999))whileTrue:data,addr=awaitsock.recvfrom()print(data,addr)sock.sendto(data,addr)asyncio.run(main())Test$ python3 -m unittest
Package: async-unzip
async-unzipAsynchronous unzipping of big files with low memory usage in Python
Helps with big zip files unpacking (memory usage + buffer_size could be changed).
Also, prevents having Asyncio Timeout errors especially in case of many workers using same CPU cores.From version 0.3.6 module doesn't require, but expect to haveaiofileORaiofilesto be installed for I/O operations.
However,aiofileis recommended for linux, just don't forget to installlibaio(libaio1) linux module (e.g.,apt install -y libaio1for debian)fromasync_unzip.unzipperimportunzipimportasyncioasyncio.run(unzip('tests/test_files/nvidia_me.zip',path='some_dir'))
Package: asyncur
asyncurSome async functions that using anyio, and toolkit for excel read.Installation$pipinstallasyncur---> 100%Successfully installed asyncurOr use poetry:poetry add asyncurUsagegather/run_async>>>asyncdeffoo():...return1...>>>run_async(gather(foo(),foo()))(1,1)Read Excel File(need to install with xls extra:pip install "asyncur[xls]")>>>fromasycur.xlsimportload_xls>>>awaitload_xls('tests/demo.xlsx')[{'Column1':'row1-\\t%c','Column2\nMultiLines':0,'Column 3':1,4:''},{'Column1':'r2c1\n00','Column2\nMultiLines':'r2 c2','Column 3':2,4:''}]
Package: asyncurban
Yet another UrbanDictionary API wrapper.AsyncUrban is a non-blocking library, using asyncio and aiohttp, which
can be used to access UrbanDictionary data.InstallationMake sure you have Python3.5+ and runpy-3-mpip install asyncurbanfor Windows, orpython3-mpip install asyncurbanfor most other things.DocumentationYou can find the docs athttp://asyncurban.readthedocs.io/and a brief example below.Examples>>>importasyncio>>>fromasyncurbanimportUrbanDictionary>>>loop=asyncio.get_event_loop()# session and loop are optional kwargs for your convenience if# You already have them defined for your project>>>urban=UrbanDictionary(loop=loop)# Get a word definition>>>word=loop.run_until_complete(urban.get_word('dank'))>>>word.definition'Also an expression requently used by stoners and hippies for something of high quality.'# Get a random word>>>random_word=loop.run_until_complete(urban.get_random())>>>print(random_word)Orgasm>>>random_word.definition"When a woman reaches their 'climax'. It is the most desirable feeling EVER. Its like an explosion inside the body that feels so good."# You can even search for X matching words and get a list# The default is 3 but can be specified>>>word_list=loop.run_until_complete(urban.search('test',limit=5))>>>print(word_list)[<Wordword=testdefid=708924>,<Wordword=testdefid=2957653>,<Wordword=testdefid=2573364>,<Wordword=testdefid=1876232>,<Wordword=testdefid=1662552>]>>>word_list[0].definition'A process for testing things'IssuesFeel free to open up an issue or submit a PR if you have trouble or see a way to improve the code.
Package: async-url-validator
Async package and CLI command for URL validation.Allows you to check:server response coderedirect settingspresence of text on the pageIt is possible to use throttling to avoid blocking.Installpip install py_url_validatorUsageimportasynciofromasync_url_validatorimportStatusAssigner,DomainThrottler,URLValidatorasyncdefmain():status_assigner=StatusAssigner(page_text='not available')request_method=(status_assigner.page_textand'GET')or'HEAD'validator=URLValidator(request_method=request_method,throttler=DomainThrottler(rate_limit_per_sec=10),status_assigner=status_assigner)urls=['https://www.python.org','http://google.com']asyncforstatusinvalidator.validate(*urls):print(status)asyncio.run(main())CLIurl_validator -i input.csv -o output.csv -s "not available"
Package: asyncwago
Welcome toAsyncWago!This library controls access to I/O on Wago controllers.
These are industrial devices with various analog and digital extension modules.
They run a basic embedded Linux. Older models don’t even have a MMU.A small control program needs to run on the controller.
You can get its source from theWago Firmwarearchive.License: GPLv3 as published by the Free Software Foundation, or (at your option) any later version
Package: asyncwatch
Asyncwatch=========An asyncronous[inotify](http://man7.org/linux/man-pages/man7/inotify.7.html) wrapper based on curio.Installing-----------````pip install asyncwatch````Requirements------------ A recent enough version of the Linux Kernel (at least 2.7).- Python >= 3.5- [Curio](https://github.com/dabeaz/curio)
Package: async-weather-api
Async weather APIThis project represents sample of asynchronous weather REST API that is build usingquart(flask compatible API) python web microframework based on Asyncio.Toolspython 3.6 | 3.7 | 3.8asyncioquartcode analysispytestmypyblackpylintflake8pydocstyleUsagePYPIPlease run following script to obtain latest package from PYPI:➜pipinstallasync-weather-apiThen please execute instructions below to launch game from your environment:importweatherweather.run(key="your-secret-key",bind="0.0.0.0:5001",debug=False)Runningonhttps://0.0.0.0:5001(CTRL+Ctoquit)...Notekeystands for API key fromhttps://openweathermap.orgDocker imagePlease run next command to start async weather api via docker:dockerrun-it-p3000:5001vyahello/async-weather-api:0.5.0weatherrun--bind0.0.0.0:5001--modeprod--key<secret-key>Source codeTo be able to run source code please execute command below:➜python-mweatherrun--bind0.0.0.0:5001--modeprod--keyyour-secret-key
Runningonhttps://0.0.0.0:5001(CTRL+Ctoquit)...Endpoints/- home page➜curl-XGEThttp://0.0.0.0:5001/➜curl-XGEThttp://0.0.0.0:5001/indexResponse: html page/api/weather/{city}/{state}/{country}- current weather event➜curl-XGEThttp://0.0.0.0:5001/api/events/London/GB/GreatBritainResponse: json object{"city":"London","country":"GreatBritain","name":"Jeff the player","state":"GB"}/api/weather/{zip_code}/{country}- current weather in city➜curl-XGEThttp://0.0.0.0:5001/api/weather/97002/usResponse: json object{"base":"stations","clouds":{"all":90},"cod":200,"coord":{"lat":45.23,"lon":-122.8},...}/api/sun/{zip_code}/{country}- current sunset/sunrise in city➜curl-XGEThttp://0.0.0.0:5001/sun/weather/97002/usResponse: json object{"astronomical_twilight_begin":"04:03:49 PM","astronomical_twilight_end":"04:29:50 AM",...}Development notesCI/CDProject has Travis CI integration using.travis.ymlfile thus code analysis (black,mypy,pydocstyle,pylint,flake8) and unittests (pytest) will be run automatically
after every made change to the repository.To be able to run code analysis, please execute command below:➜./analyse-code.shAlsotest-report.htmlwill be generated after unittests execution.Other than that, a fresh versioned package will be delivered on PYPI after new tag is created usingpythonpublish.ymlfile.Release notes0.5.0Add official docker image0.4.2Add manifest package installer file0.4.1Read requirements for PYPI build0.4.0Introduce PYPI package0.3.0Introduce asynchronous approach0.2.0Introduce synchronous approach0.1.0Distribute initial project versionMetaAuthor – Volodymyr YahelloDistributed under theMITlicense. SeeLICENSEfor more information.You can reach out me at:vyahello@gmail.comhttps://github.com/vyahellohttps://www.linkedin.com/in/volodymyr-yahello-821746127Contributingclone the repositoryconfigure Git for the first time after cloning with yournameandemailpip install -r requirements.txtto install all project dependenciespip install -r requirements-dev.txtto install all development project dependencies
Package: async-weather-sdk
Async Weather SDKAsync weather API wrapper for fetching weather and forecast dataCore DependenciesAsyncio:a library to write concurrent code using the async/await syntax.Aiohttp:an asynchronous HTTP Client/Server for asyncio and Python.Installpipinstallasync-weather-sdk

OR

poetryaddasync-weather-sdkUsageQQ Weather API SDKGet current weather/forecast data by province and city.fromasync_weather_sdk.qqimportQQWeatherweather=QQWeather()awaitweather.fetch_current_weather('北京市','北京市')awaitweather.fetch_weather_forecast('北京市','北京市',3)Query current weather/forecast data with tencent map api key.fromasync_weather_sdk.qqimportquery_current_weather,query_weather_forecastawaitquery_current_weather('API_KEY','北京市')awaitquery_weather_forecast('API_KEY','39.90469,116.40717')
Package: asyncweb
Asynchronous restful API特色✓ 基于aiohttp的异步web后端，实现了路由层和视图层✓ 使用设计较友好安装pipinstallasyncweb开始使用“asyncweb”允许您在几个步骤中快速创建一个rest资源。
它自动在集合或单个项上创建资源路由;只需在方法上指定'_collection'或'_item'后缀即可。
使用python字典，结果/请求的序列化/反序列化是透明的。使用案例fromaiohttpimportwebfromasyncwebimportRestView,routes@routes.resource("/views")classRestResource(RestView):# example call: GET to <server>/views?start=10asyncdefon_get_collection(self,start=0)->list:return[{"id":int(start)+1,"value":1},{"id":int(start)+2,"value":2},]# example call: GET <server>/views/80asyncdefon_get_item(self,id:str)->dict:returnself.key# example call: POST to <server>/viewsasyncdefon_post_collection(self,body:dict)->dict:returnbodyapp=web.Application()app.add_routes(routes)app['key']=[1,2,4,5]if__name__=='__main__':web.run_app(app)
Package: async-web3
This is an opinionated web3 library.async as the first citizen.websocket support as the first citizen.it supportseth_subscribe()andeth_unsubscribe().w3 = AsyncWeb3(WebsocketTransport("ws://127.0.0.1:8546"))
        await w3.connect()
        block_stream = await w3.subscribe_block()
        async for new_block in block_stream:
            print(f"got new block: {new_block}")It has no middleware support.This library tries to simplify the interaction with thedeployedcontracts. If you want to deploy a new smart contract, please checkout the awesomebrownietool.How to Contribute:installpoetryunder this folder, runpoetry installthen runpoetry shellstart the developmentrunpoetry run pytestsend PR
Package: async-websocket-client
Async WebSocket clientA module that implements an asynchronous interface based onwebsocketsfor working with websocketsFunctionalityРегистрация / Удаление WSСоздание / Удаление групп WSПодключение WS в группуПоддержка реестров: memory, redisQuick startУстановка:pipinstallasync-websocket-clientПодключение:importasynciofromasync_websocket_client.appsimportAsyncWebSocketAppfromasync_websocket_client.dispatchersimportBaseDispatcherclassSomeDispatcher(BaseDispatcher):asyncdefon_connect(self):returnawaitself.ws.send('hello, server')asyncdefon_message(self,message:str):returnawaitself.ws.send(f'server, I received your message. len(message)=={len(message)}')client=AsyncWebSocketApp('ws://localhost:8001/ws',SomeDispatcher())client.asyncio_run()# quick run# orasyncio.run(client.run())# Run with asyncio
Package: async-websocket-pool
Async WebSocket PoolThis repository contains a Python-based Async WebSocket Pool that allows for asynchronous connections to multiple WebSocket endpoints.Getting StartedThese instructions will get you a copy of the project up and running on your local machine.InstallationYou can install the Async WebSocket Pool using pip:pip install async-websocket-poolPlease note that this project requires Python 3.7 or later.Usagefromasync_websocket_poolimportconnect,run_poolasyncdefon_message(message):print(message)tasks=[lambda:connect('ws://example1.com',on_message=on_message,timeout=5),lambda:connect('ws://example2.com',on_message=on_message,timeout=5),]awaitrun_pool(tasks)Built WithPoetry- Packaging and dependency managementDocumentationFor more information, please refer to the full documentation.ContributionContributions are always welcome! Please read our contributing guide to learn about our development process, how to propose bugfixes and improvements, and how to build and test your changes.Authorsmpol1tLicenseThis project is licensed under the MIT License
Package: asyncwebsockets
asyncwebsockets is ananyio-compatible websocket client library.
Thus it works withcurio,trio, orasyncio.InstallationTo install the latest stable version:$ pip install asyncwebsocketsTo install the latest development version:$ pip install git+https://github.com/Fuyukai/asyncwebsockets.git#egg=asyncwebsocketsBasic Usageimportanyioimportasyncwebsocketsasyncdeftest():asyncwithasyncwebsockets.open_websocket("wss://echo.websocket.org")asws:awaitws.send("test")evt=awaitws.next_event()print(type(evt),getattr(evt,'data',None))anyio.run(test)
Package: async-westjr
WestJRJR西日本列車走行位置 非公式API Async-Pythonライブラリ列車走行位置取得 (/api/v3/{LINE}.json)メンテナンス予定取得 (/api/v3/area_{AREA}_maintenance.json)路線名取得 (/api/v3/area_{AREA}_master.json)駅一覧取得 (/api/v3/{LINE}_st.json)運行情報取得 (/api/v3/area_{AREA}_trafficinfo.json)列車環境取得 (/api/v3/trainmonitorinfo.json)列車走行位置駅名，列車停車種別の変換Notice動作を完全には確認していません．Installationpipinstallasync-westjrUsageimportasync_westjrjr=async_westjr.WestJR()# あらかじめ area や line をセットするjr=async_westjr.WestJR(line="kobesanyo",area="kinki")Example列車走行位置取得asyncdefget_trains():data=awaitjr.get_trains()print(data)awaitget_trains()# TrainPos(update='2023-03-21T16:54:54.612Z', trains=[TrainsItem(no='502C', ...メンテナンス予定取得asyncdefget_maintenance():data=awaitjr.get_maintenance()print(data)awaitget_maintenance()# 平常時:# AreaMaintenance(status=0, notification=Notification(groupId=0, text='', duration=''), ...# 異常時:# AreaMaintenance(status=1, notification=Notification(groupId=2023012802, text='1月24日から1月31日を, ...路線一覧取得asyncdefget_lines():data=awaitjr.get_lines()print(data)awaitget_lines()# AreaMaster(lines={'ako': Line(name='赤穂線', range='相生〜播州赤穂', relatelines=None, st='...駅一覧取得asyncdefget_stations():data=awaitjr.get_stations()print(data)awaitget_stations()# Stations(stations=[StationsItem(info=Info(name='新大阪', code='0415', stopTrains=[1, 2, 5], typeNotice=None, ...運行情報取得asyncdefget_traffic_info():data=awaitjr.get_traffic_info()print(data)awaitget_traffic_info()# 平常時:# TrainInfo(lines={}, express={})# 異常時:# TrainInfo(lines={'bantan': Info_LineItem(...)}, express={'bantan': Info_ExpressItem(...)})エリア名一覧表示print(jr.areas)# ['hokuriku', 'kinki', 'okayama', 'hiroshima', 'sanin']路線名一覧表示print(jr.lines)# ['hokuriku', 'kobesanyo', 'hokurikubiwako', 'kyoto', 'ako', 'kosei', 'kusatsu', 'nara', 'sagano', 'sanin1', 'sanin2', 'osakahigashi', 'takarazuka']列車環境取得asyncdefget_train_monitor_info():congestion=(awaitjr.get_train_monitor_info()).trains["3489M"][0].cars[0].congestionprint(congestion)# 26(%)temp=(awaitjr.get_train_monitor_info()).trains["3489M"][0].cars[0].tempprint(temp)# 23(°C)駅に停車する種別を id から名称に変換するasyncdefget_train_monitor_info():station=(awaitjr.get_stations(line="kyoto")).stations[0]print(station.info.name)# 山科print(jr.convert_stopTrains(station.info.stopTrains))# ['新快速', '快速', '特急']列車走行位置の場所を前駅と次駅の名前に変換するasyncdefget_convert_pos():train=(awaitjr.get_trains(line="kobesanyo")).trainstr=train[0]prev,next=jr.convert_pos(train=tr)print(prev)# 塚本ContributionPRを出してください
Package: asyncwica
PyWica - Async Wica Python APITable of ContentsIntroductionInstallationQuick-start GuidDocumentationDependenciesContributeProject Changes and Tagged ReleasesDeveloper NotesContactIntroductionThis project/package aims to provide a simple python interface to the wica-http server.
Check out the main branch to get the blocking version of the packageInstallationInstall with pippipinstallasyncwicaQuick-start GuideHere are some simple examples to get you started:importasyncioimporttimeasyncdefsimple_example():"""A simple example of how to use AsyncWicaStream. Run it in main by uncommenting it! """wica_stream=WicaStream(base_url="http://student08/ca/streams",channels=["MMAC3:STR:2"])asyncdefrun_stream():awaitwica_stream.create()asyncformessageinwica_stream.subscribe():print(message)asyncdefstop_stream():awaitasyncio.sleep(10)print(awaitwica_stream.destroy())awaitasyncio.gather(run_stream(),stop_stream())asyncdefexample_using_with():""" An example using the compound statement async with and another method to exit the event loop. Run it in main by uncommenting it!"""asyncwithWicaStream(base_url="http://student08/ca/streams",channels=["MMAC3:STR:2"])asstream:i:int=0asyncformessageinstream.subscribe():i+=1print(message)ifi==25:breakasyncdefmultistream_example():""" An example of how to run multiple streams at once using aiostream. Run it in main by uncommenting it! """fromaiostreamimportstreamstreams=[]asyncdefrun_streams():for_inrange(10):wica_stream=WicaStream(base_url="http://student08/ca/streams",channels=["MMAC3:STR:2"])streams.append(wica_stream)awaitwica_stream.create()print("Doing someting else before starting the stream...")awaitasyncio.sleep(5)subscribed_streams=[]forwica_streaminstreams:print(f"Subscribing to stream{wica_stream.id}")subscribed_streams.append(wica_stream.subscribe())combine=stream.merge(*subscribed_streams)asyncwithcombine.stream()asstreamer:asyncforiteminstreamer:print(item)continueasyncdefstop_streams():awaitasyncio.sleep(25)forwica_streaminstreams:print(awaitwica_stream.destroy())awaitasyncio.gather(run_streams(),stop_streams())asyncdefmain():#await simple_example()#await example_using_with()#await multistream_example()passif__name__=="__main__":asyncio.run(main())DocumentationCurrent Features:Custom Client to handle be able to extract last line of SSE with timestamp and message type.Simple functions to create, delete and subscribe to streamsFully Async (blocking versions available in main branch)Check out the wiki for more info!DependencieshttpxContributeTo contribute, simply clone the project.
You can usespip -r requirements.txtor the make file to set up the project.Project Changes and Tagged ReleasesSee the Changelog file for further informationProject releases are available in pypiDeveloper NotesCurrently NoneContactIf you have any questions pleas contract 'niklas.laufkoetter@psi.ch'
Package: async-worker
async-workerO projeto tem como objetivo ser um framework para escrever workers assíncronos em python. Por worker entende-se qualquer aplicação que rode por tempo indeterminado e que receba estímulos de várias origens diferentes. Essas orignes podem ser:Uma mensagem em um broker, como RabbitMQ;Um evento recorrente gerado em um intervalo fixo de tempo;Uma requisição HTTP...Documentação:https://async-worker.github.io/async-worker/Exemplos rápidosAbaixo estão alguns exemplos bem simples que dão uma ideia do projeto e de como fica um código escrito com async-worker.Handler HTTPfromaiohttpimportwebfromasyncworkerimportAppapp=App()@app.http.get(["/","/other"])asyncdefhandler():returnweb.json_response({})app.run()Esse handler recebe reqisições HTTP (GET) nos seguintes endereços (por padrão):http://127.0.0.1:8080/ehttp://127.0.0.1:8080/otherHandler RabbitMQfromtypingimportListfromasyncworkerimportAppfromasyncworker.connectionsimportAMQPConnectionfromasyncworker.optionsimportOptionsfromasyncworker.rabbitmqimportRabbitMQMessage,AMQPRouteOptionsamqp_conn=AMQPConnection(hostname="127.0.0.1",username="guest",password="guest",prefetch_count=1024,)app=App(connections=[amqp_conn])@app.amqp.consume(["queue","queue-2"],options=AMQPRouteOptions(bulk_size=512))asyncdefhandler(messages:List[RabbitMQMessage]):print(f"Received{len(messages)}messages")forminmessages:awaitamqp_conn.put(data=m.body,exchange="other",routing_key="another-routing-key")@app.run_every(1)asyncdefproduce(app:App):awaitamqp_conn.put(data={"msg":"ok"},routing_key="queue")app.run()Esse handler recebe mensagens das filasqueueequeue-2em lotes de 512 mensagens. Se essas duas filas demorarem mais de 60 segundos para acumular, juntas, 1024 mensagens o handler será chamado imediatamente com a quantidade de mensagens que estiver disponível no momento.O que esse handler está fazendo é apenas pegar todas as mensagens que ele recebe e enviar para oexchange="", routing_key="queue".Logo created withDesignEvo logo maker
Package: async-wrapper
async-wrapperhow to install$pipinstallasync_wrapperhow to usefrom__future__importannotationsimporttimeimportanyiofromasync_wrapperimportTaskGroupWrapper,toggle_func@toggle_funcasyncdefsample_func()->int:awaitanyio.sleep(1)return1asyncdefsample_func_2(x:int)->int:awaitanyio.sleep(1)returnxdefmain():result=sample_func()assertisinstance(result,int)assertresult==1asyncdefasync_main():semaphore=anyio.Semaphore(2)start=time.perf_counter()asyncwithanyio.create_task_group()astask_group:wrapper=TaskGroupWrapper(task_group)func=wrapper.wrap(sample_func_2,semaphore)value_1=func(1)value_2=func(2)value_3=func(3)end=time.perf_counter()assertisinstance(value_1.value,int)assertisinstance(value_2.value,int)assertisinstance(value_3.value,int)assertvalue_1.value==1assertvalue_2.value==2assertvalue_3.value==3assert1.5<end-start<2.5if__name__=="__main__":main()anyio.run(async_main)LicenseMIT, seeLICENSE.