Saravanan666/pypi-org huggingface dataset:
Package: easy-manage
easy-manage :fish:This python package has been created to facilitate remote server management.
It is focused on out-of-band management through IPMI and Redefish standards, however,
it is possible to perform in-band management with it.The reason of creation of such package is need to unify server management regardless of
standard or protocol we use below. Easy-manage delivers unified management interface.Easy-manage is able to connet either Network Interface Card assigned to BMC or whole system.
You can give multiple IP addresses to ControllerFactory and it will try to connect to all of them.
Example config:from easy_manage.tools import Protocol
from easy_manage import Credentials

bmc_credentials = Credentials('username', 'password')
system_credentials = Credentials('username2', 'password2')

config = {
    Protocol.REDFISH: {
        'address': bmc_ip_address,
        'credentials': bmc_credentials
    },
    Protocol.IPMI: {
        'address': bmc_ip_address,
        'credentials': bmc_credentials
    },
    Protocol.BASH: {
        'address': system_ip_address,
        'credentials': system_credentials
    },
}Above configuration will enable user to connect to device with all three accessible protocols.
To create abstract controller over theses interfaces, we need to use ControllerFactorycontroller = ControllerFactory.get_controller(config)Now it is ready to use.# See all available system methods
print(ControllerFactory.get_methods(controller.system))

# See all available chassis methods
print(ControllerFactory.get_methods(controller.chassis))

# Test simple abstract methods
print(controller.chassis.get_power_state())
print(controller.system.get_led_state())
controller.system.power_on()Connector depending on its configuration is able to aggregate up to three components:SystemChassisShellYou can get bulk data from every component using pre-defined methodsredings(),static_data()andraw_data()on controller components.from pprint import pprint

pprint(controller.shell.readings())
pprint(controller.system.static_data())
pprint(controller.chassis.raw_data())What is important, you can invoke methods through any connected component interface by referencing it explicitly. Above calls could be transformed to:from pprint import pprint

pprint(controller.components['shell']['bash'].readings())
pprint(controller.components['system']['redfish'].static_data())
pprint(controller.components['chassis']['redfish'].raw_data())

# PowerShell is not supported yet
#pprint(controller.components['shell']['power_shell'].readings())
pprint(controller.components['system']['ipmi'].static_data())
pprint(controller.components['system']['ipmi'].static_data())See more examples in demo/demo.pyPackage has been designed to provide command line tool but it has not been binded with implemented functionalities yet.Please note that this package came into existence as a part of bachelor's thesis and has not
been commercially used and thus may be buggy.
Package: easymatch
DeepCTRDeepCTR is aEasy-to-use,ModularandExtendiblepackage of deep-learning based CTR models along with lots of core components layers which can be used to easily build custom models.It is compatible withtensorflow 1.4+ and 2.0+.You can use any complex model withmodel.fit()andmodel.predict().Let'sGet Started!(Chinese Introduction)Models ListModelPaperConvolutional Click Prediction Model[CIKM 2015]A Convolutional Click Prediction ModelFactorization-supported Neural Network[ECIR 2016]Deep Learning over Multi-field Categorical Data: A Case Study on User Response PredictionProduct-based Neural Network[ICDM 2016]Product-based neural networks for user response predictionWide & Deep[DLRS 2016]Wide & Deep Learning for Recommender SystemsDeepFM[IJCAI 2017]DeepFM: A Factorization-Machine based Neural Network for CTR PredictionPiece-wise Linear Model[arxiv 2017]Learning Piece-wise Linear Models from Large Scale Data for Ad Click PredictionDeep & Cross Network[ADKDD 2017]Deep & Cross Network for Ad Click PredictionsAttentional Factorization Machine[IJCAI 2017]Attentional Factorization Machines: Learning the Weight of Feature Interactions via Attention NetworksNeural Factorization Machine[SIGIR 2017]Neural Factorization Machines for Sparse Predictive AnalyticsxDeepFM[KDD 2018]xDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender SystemsAutoInt[arxiv 2018]AutoInt: Automatic Feature Interaction Learning via Self-Attentive Neural NetworksDeep Interest Network[KDD 2018]Deep Interest Network for Click-Through Rate PredictionDeep Interest Evolution Network[AAAI 2019]Deep Interest Evolution Network for Click-Through Rate PredictionONN[arxiv 2019]Operation-aware Neural Networks for User Response PredictionFGCNN[WWW 2019]Feature Generation by Convolutional Neural Network for Click-Through Rate PredictionDeep Session Interest Network[IJCAI 2019]Deep Session Interest Network for Click-Through Rate PredictionFiBiNET[RecSys 2019]FiBiNET: Combining Feature Importance and Bilinear feature Interaction for Click-Through Rate PredictionDisscussionGroupPlease follow our wechat to join group:公众号：浅梦的学习笔记wechat ID:deepctrbot
Package: easymatrix
Simple module to work with matrices. Division between matrices isn't supported yet.Important: this package is not maintained anymore.Examples:>>> from easymatrix import Matrix# Create a 2x3 matrix.>>> a = Matrix([...     [1, 5, 0],...     [2, 0, 3]... ])# Output is automatically created to be human-readable.>>> a1 5 02 0 3# Define another to operate with.>>> b = Matrix([...     [-3, -5, 7],...     [0, 9, 1]... ])# Arithmetic operations.>>> c = a + b>>> c-2 0  72  9  4>>> d = a - b>>> d4  10 -72  -9 2# Multiplication: matrix * matrix.>>> e = d * cTraceback (most recent call last):ValueError: Expected ?x3 and 2x? matrices.>>> f = Matrix([...     [1, 0],...     [3, -2],...     [0, 5]... ])>>> g = d * f>>> print(g)34  -55-25 28# Matrix * number.>>> g*268   -110-50  56# Power.>>> g**22531  -3410-1550 2159# Division: matrix / number.>>> g/10.3.4  -5.5-2.5 2.8
Package: easymed
EasyMedEasyMed is a one-stop medical Python advanced package based on the PyTorch framework. It allows you to easily and conveniently create some commonly used models by simply editing parameters. In the initial version, you can create UNet models and variants suitable for image segmentation tasks.FeaturesFast UNet model creationCustomizable encoder blocksSelectable bridgeFlexible and adjustable number of channelsInstallationYou can install EasyMed using pip:pipinstalleasymedQuick Startfromtorch.utilsimportdata
fromeasymed.CV.utilsimportImageDataset
fromeasymed.CV.model.unetimportUNet_2plus# Here we use the default parameters# in_channels=1 out_channels=1 mid_channels=[32, 64, 128, 256]# encoder=double_conv  bridge =DilatedConvnet=UNet_2plus()train_data=ImageDataset({your_path})# Here we use the default parameters# batch_size=4  shuffle=Truetrain_iter=data.DataLoader(train_data,batch_size=4,shuffle=True)# Here we use the default parameters#loss=nn.BCEWithLogitsLoss()  optimizer=torch.optim.SGD  epochs=40  lr=0.0001net.train_net(train_iter=train_iter)Parameter DescriptionHere are the parameters you can customize when creating a UNet model using MyPyTorchUNet:in_channels: Input the number of input channels.outchannels: Input the number of output channels.mid_channels锛欼nput the number of feature channels of the hidden layers as a list.encoder:    Different kinds of blocks such as sigle_VGG,double_VGG,triple_VGG,sigle_Residual,double_Resudual, triple_Residual are provided to build the encoder.bridge:  DilatedConv,APSS,bridges from sota models in many well-known public datasets.decoder:    Different kinds of blocks such as sigle_VGG,double_VGG,triple_VGG,sigle_Residual,double_Resudual, triple_Residual are provided to build the decoder....ContributionsIf you are interested in contributing to MyPyTorchUNet by adding code or suggesting improvements, please feel free to submit issues or pull requests.
Package: easy-memmap
Numpy Memmap easy wrapper for array manipulationPython2/3 memmap wrapper to share arrays easily between processes in real time.InstallationYou can installeasy_memmapfrom pip usingpip install easy_memmapor usingpip install git+https://github.com/charlielito/easy_memmapNumpy [d]types supportedThe library accepts any type of the following supported bynumpynp.boolnp.int8, np.int16, np.int32, np.int64np.uint8, np.uint16, np.uint32, np.uint64np.float16, np.float32, np.float64UsageThe program that shares the array can befromeasy_memmapimportEasyMemmapimportnumpyasnpm=EasyMemmap(mode="w",name="mytest")data=np.zeros((480,640,4))m.write(data)And the programm that reads the arrayfromeasy_memmapimportEasyMemmapm=EasyMemmap(mode="r",name="mytest")data=m.read()The name of theEasyMemmapobject needs to be the same, otherwise it won't be able to find the data and it will returnNoneTo see other usages streaming in real time images from a web_camera, seeexamples
Package: easy-mhi
MotionHistoryImage Python LibraryImage-Processing library built in Python 3.7 allowing developers to easily
generate MHI images from from a list of frames. A motion history image (MHI) is a static image template
that helps in understanding the motion location and path as it progresses. Using MHI, moving parts of a video
sequence can be engraved within a single image, from where the motion flow can be predicted.Essentially this library is concatenating a series of frames into one single image, where brighter values correspond
to a more recent motionExample:I'd recommend using OpenCV to perform background subtraction on frames being processed.
I'll add a code snippet below to demonstrate how I got the above background subtraction images from raw frames.importcv2ascvIMG_SIZE=224frame=cv.resize(frame,(IMG_SIZE,IMG_SIZE))# Filters tend to provide smoother subtraction with less background noiseframe=cv.medianBlur(frame,5)frame=cv.filter2D(frame,-1,kernel)fgbg=cv.createBackgroundSubtractorMOG2()mask=fgbg.apply(image)SetupYou can either setup this library by cloning this repo and running setup.py from the install directory.$  git clone https://github.com/larrett/mhi.git
$  cd mhi
$  python setup.py installAlternatively, use this command to install via pip:$ sudo pip install easy-mhiUsageImport the MotionHistoryImage libraryfromeasy-mhiimportgenerate_mhiBelow is an demonstration of how I used the library to generate MHI's from
a directory containing background subtracted images I wanted to combine in incremental order,
and saving them.fromPILimportImageimportosimportshutilfromeasy-mhiimportgenerate_mhidefgenerate_mhi_frames(file_dir,num_frames_per_mhi,start_index=1,output_dir='mhi_output',):all_frames=[]# Create list of framesi=start_indexwhileTrue:# For all filesfile=file_dir+'/'+str(i)+'.jpg'# File from starting indextry:img_pixels=Image.open(file).convert('RGB').load()# Open and load the fileall_frames.append(img_pixels)# Append file to list of framesprint('Loaded frame '+file)exceptIOError:print('Assuming all images are loaded... (next sequential file '\+file+' does not exist)')breaki+=1# Increment indexprint('Loaded '+str(len(all_frames))+' raw motion frames!')# Generate each MHI framenum_mhis=len(all_frames)-num_frames_per_mhi+1# Calculation how many MHI images should be generatedforiinrange(num_mhis):# Compile list of frames to be used for this MHImhi_frames=[]# Create a list of MHI framesforjinrange(num_frames_per_mhi):# Loop for amount of frames inside each MHImhi_frames.append(all_frames[i+j])# Specify which frames to get added to MHI# Generate MHIimg=generate_mhi(mhi_frames,224,224)# Generate 224x224 MHI based on frames in mhi_frames listoutput_path=output_dir+'/'+str(i+1)+'.png'# Create string for outputPathimg.save(output_path)# Save new MHI to outputPathprint('MHI '+str(i+1)+' saved to '+output_path)# Return to top of loop, generate next MHI for the framesprint('Generated and saved a total of '+str(num_mhis)\+' MHI frames to '+file_dir+'/mhi_output/')Use this project for whatever you want, I built this for my machine-learning thesis on fall detection.
Package: easymirror
# easymirror进行时间序列数据库的索引同步## 说明1. `easymirror`使用Redis作为消息转发。2. 本地使用`easymirror`的`mirror.Mirror`做基类，进一步开发供各种数据录入程序的接口。参考`easymirror.vnpy.py`文件。3. 多个相同的行情录入程序可以在盘中(未实现)、盘后对齐缺失的 ticker 数据。## 环境将仓库`clone`到本地后，运行以下命令安装：```bashpip install -e .```### 配置文件主要的配置文件是`conf/conf.json`。### Redis1. 这里`Redis`使用的端口是23002，对应的`Redis`配置文件是`23002.conf`。2. 基本上只需要简单地配置一下端口号和异地访问密码即可。3. 生产环境下，在公网部署部署该`## 使用1. 实盘中对齐2. 盘后对齐3. 二次开发### 1. 实盘中对齐（未实现）1. demo见`debug.py`文件。2. 在子进程中建立服务后，通过`api.pushTickerIndex`接口推入Ticker数据。3. 代码基于`python3.5`的协程来实现。如果实盘数据录入不是`python3.5`以上，那么只能使用`盘后对齐`的功能### 2. 盘后对齐1. demo见`makeup.py`文件。2. 先从数据库中加载 ticker 数据，并缓存。3. 开始广播前，所有在线的节点都需要在本地做好缓存。4. 通过调用`api.pushTickerIndex`接口开始广播。5. 使用的`python3.5`的协程来实现并发。### 3. 二次开发参考`easymirror.vnpy.py`，通过继承`easymirro.mirror.Mirror`来重写部分接口。
Package: easymix
UsageLive Audio MixerimporteasymixasmixerimporttimedefliveMix():mixer.play('01.mp3')foriinrange(5):mixer.play('02.mp3')time.sleep(2)mixer.stop()Compose Audio trackimporteasymixasmixerdefcomposeTrack():track=mixer.Track()track.addSound('01.mp3',1.0)fortinrange(5):track.addSound('02.mp3',t)track.save('track.mp3')You can also define the sounds aspydubaudio segments. It's convenient in case you need to apply effects on the sounds before playing, such as volume adjustment.importpydubsound01=pydub.AudioSegment.from_file('01.mp3')sound01-=5# reduce 5dB...mixer.play(sound01)...track.addSound(sound01,1.0)SetupInstall pip packagepip3 install easymixKnown issuesThis is only a prototype. Beware of the following issues which require proper investigation:Thepyaudiopackage installation fails with Python 3.11.4, but works with Python 3.9.2.The sounds might be played at higher speed than expected (bit rate issue)
Package: easymms
EasyMMSA simple Python package to easily useMeta's Massively Multilingual Speech (MMS) project.Thecurrent MMS codeis using subprocess to call another Python script, which is not very convenient to use, and might lead to severalissues.
This package is created to address those problems and to wrap up the project in an API to easily integrate it with other projects.InstallationQuickstartASRASR with AlignmentTTSLIDAPI referenceLicenseDisclaimer & CreditsInstallationYou will needffmpegfor audio processingInstalleasymmsfrom Pypipipinstalleasymmsor from sourcepipinstallgit+https://github.com/abdeladim-s/easymmsIf you want to use theAlignmentmodel:you will needperlto useuroman.
Check theperl websitefor installation instructions on different platforms.You will need a nightly version oftorchaudio:pipinstall-U--pretorchaudio--index-urlhttps://download.pytorch.org/whl/nightly/cu118You might needsoxas well.Fairseqhas not included theMMSproject yet in the released PYPI version, so until the next release, you will need to installfairseqfrom source:pipuninstallfairseq&&pipinstallgit+https://github.com/facebookresearch/fairseqQuickstart:warning: There is anissuewithfairseqwhen running the code in interactive environments like Jupyter notebooks.Please use normal Python filesor use the colab notebook provided above.ASRYou will need first to download the model weights, you can find and download all the supported models fromhere.fromeasymms.models.asrimportASRModelasr=ASRModel(model='/path/to/mms/model')files=['path/to/media_file_1','path/to/media_file_2']transcriptions=asr.transcribe(files,lang='eng',align=False)fori,transcriptioninenumerate(transcriptions):print(f">>> file{files[i]}")print(transcription)ASR with Alignmentfromeasymms.models.asrimportASRModelasr=ASRModel(model='/path/to/mms/model')files=['path/to/media_file_1','path/to/media_file_2']transcriptions=asr.transcribe(files,lang='eng',align=True)fori,transcriptioninenumerate(transcriptions):print(f">>> file{files[i]}")forsegmentintranscription:print(f"{segment['start_time']}->{segment['end_time']}:{segment['text']}")print("----")Alignment model onlyfromeasymms.models.alignmentimportAlignmentModelalign_model=AlignmentModel()transcriptions=align_model.align('path/to/wav_file.wav',transcript=["segment 1","segment 2"],lang='eng')fortranscriptionintranscriptions:forsegmentintranscription:print(f"{segment['start_time']}->{segment['end_time']}:{segment['text']}")TTSfromeasymms.models.ttsimportTTSModeltts=TTSModel('eng')res=tts.synthesize("This is a simple example")tts.save(res)LIDComing SoonAPI referenceYou can check theAPI reference documentationfor more details.LicenseSince the models arereleased under the CC-BY-NC 4.0 license.
This project is following the sameLicense.Disclaimer & CreditsThis project is not endorsed or certified by Meta AI and is just simplifying the use of the MMS project.All credit goes to the authors and to Meta for open sourcing the models.Please check their paperScaling Speech Technology to 1000+ languagesand theirblog post.
Package: easy-mock
Easy Mock针对个人和公司提供有偿UI自动化技术、接口自动化技术、接口mock技术等培训及测试工具定制开发有意者请联系 QQ:40690263简单、易用的接口Mock工具根据Yaml文件快速生成接口Mock服务要求python版本 > 3.7Yaml文件示例example.ymlapis:# 最精简写法-url:login# 接口路径method:GET# 接口方法defined_data_list:# request与response的匹配关系[{body:{"username":"edison","password":"123"},response:{"code":-1,"msg":"密码输入不正确"}}]v 1.0 主要功能根据Yaml文件内容返回Mock数据，两种方式：一、根据request内容返回defined_data_list中与之匹配的response二、若defined_data_list未定义或无与request内容匹配的response,则根据response_schema返回随机数据：支持的随机数据类型: bool, int, float, double, string根据PB(.proto)生成Mock接口文件(yml)支持输入文件和目录支持http/https支持对request和response做定制化处理（见自定义扩展）安装两种安装方式：
一、pip安装（不需要源码）
pipinstalleasy-mock

二、源码安装(需安装setuptools)下载源码并进入到setup.py所在目录
pythonsetup.pyinstall使用查看帮助$easy_mock-h
usage:easy_mock[-h][-v][-pPORT][-https][-req][-res]file_path

GeneratemockserviceaccordingtotheYAMLfile

positionalarguments:file_pathyamlconfigurationfile,directoryor.protofile

optionalarguments:-h,--helpshowthishelpmessageandexit-v,--versionshowversion-pmockserviceport-httpsenablemockserverhttpsprotocol-reqgeneraterequest_schemainyaml-resgenerateresponse_schemainyaml启动Mock Server服务启动后可调用yml中定义的mock服务easy_mockexample.yml
curl-H"Content-Type: application/json"-XPOST'http://127.0.0.1:9000/login'-d'{"username":"edison", "password": "123"}'|python-mjson.tool自定义扩展在当前目录下新建python文件processor.py$touchprocessor.py
$vimprocessor.py# 函数命名无限制，在yaml指定函数名即可defxxx_setup(req):req["username"]="abc"returnreq

defxxx_teardown(req,resp):resp["age"]=100returnresp在YAML文件中新增setuporteardown字段apis:login:name:用户登录desc:用户登录成功，接口会返回一个tokenmethod:POSTsetup:xxxx_setup# 指定前置处理函数名，此函数接受一个参数, 对请求体做前置操作teardown:xxx_teardown# 指定后置处理函数名，此函数接受两个参数, 对请求体和响应体做后置操作Yaml文件示例及详解(复杂写法)-url:login# 接口路径method:POST# 接口方法request_schema:# （可选）用于对request body做合法性校验{"type":"object","properties":{"username":{"type":"string"},"password":{"type":"string"},},"required":["username","password"]}response_schema:# (可选) 根据schema生成response随机数据  response_schema 和 defined_data_list 二者不可全为空{"type":"object","properties":{"code":{"type":"integer",# 数据类型"maximun":100,# 数据范围 最大"minimun":1# 数据范围 最小},"msg":{"type":"string"},"token":{"type":"string"},},"required":[# required中的字段，response中必须返回, token字段则随机返回"code","msg"]}defined_data_list:# 自定义返回 如果请求体于list中的body匹配， 则返回对应的response  response_schema 和 defined_data_list必须有一个匹配[{body:{"username":"edison","password":"123"},response:{"code":-1,"msg":"密码输入不正确"}},{body:{"password":"123"},response:{"code":-1,"msg":"用户名是必填的"}}]将PB转换为Yaml参数为.proto文件类型时生成yaml文件easy_mockserver.proto-res
输出server.ymlTo Do支持Swagger定义的接口文件支持Request,Response schema存放在单独的文件支持延时返回(sleep关键字)参考文档Json schema用法http://json-schema.org/JSON Schema入门https://www.jianshu.com/p/1711f2f24dcf?utm_campaign=hugopython打包及支持pip安装https://blog.csdn.net/sinat_33718563/article/details/88928950
Package: easymodel
Qt Models and Views made easy with general purpose Model and a Widget delegate.DocumentationThe full documentation is athttp://pythonhosted.org/easymodel.FeaturesEasy to use tree model for arbitrary data.Widgets in views via delegates.Cascading views, similar to QColumnView but with arbitrary widgets (e.g. QComboBox or even a mix).History0.1.0 (2014-08-27)First release on PyPI.0.2.0 (2015-01-04)Specialized views that handle click events and propagate them to the editor widget.Easier insertion and removal of rowsEditing supported0.3.0 (2015-02-10)Fix emit signal when calling set_dataFix editor resizingAdd ItemDataRoles to retrieve the internal objects of an indexEasy conversion from ItemData to TreeItemEmit clicks on widgetdelegate via QApplication and to the actual child widget0.4.0 (2015-08-09)python 3 support0.4.1 (2015-11-05)Fix click recursion in delegate event propagation0.4.2 (2015-11-07)Update tests for PySide 1.2.40.5.0 (2015-11-08)Add cascading views
Package: easy-mongo
Easy to use python mongo(for kb first)pymongo Reference:https://pymongo.readthedocs.io/en/3.10.0/tutorial.htmlQuick StartInstallation: pip install easy_mongo1.configEdit conf/conf.ymlmongo: # mongo config
  host: 127.0.0.1
  port: 27017
  name: db_name
  password: password # blank if not require2.demofrom easy_mongo.mongo import EasyMongo

def demo_mongo():
    easy_mongo = EasyMongo('../conf/conf.yml')
    col = easy_mongo.get_collection('country')
    # get first 10 items
    # reference pymongo
    for item in col.find().limit(10):
        print(item)


if __name__ == '__main__':
    demo_mongo()
Package: easymp
EasyMPEasy multiprocessing and logging (SimpleMP) provides a solution for the two problems:Logging while using python multiprocessing.Stopping spawned processes using CTRL+C.InstallpipinstalleasympExamplefromeasympimportparallel,addlogging,execute@addloggingdefsquare(x):logger.info("Square:%d"%x)returnx*x@addlogging@paralleldefprocess(x):y=square(x)logger.info("Input%d, output%d."%(x,y))returnTrueif__name__=="__main__":execute(process,it=range(20),nprocs=3)
Package: easymq
easymq一个基于stomp的简单连接，发送和接收activemq的包A simple package based on stomp, connection, sending and receiving ActiveMQQuick StartYou can usepip install easymqto install easymqThereare two examples, send and receive message from activemqfromeasymq.mqimportMQdefreceive(headers,body):print(headers,body)mq=MQ(mq_user="root",password="root1234",host_and_ports=[("localhost",61613),("localhost",61613)],func=receive,queue_name="/queue/test_queue",)mq.receive()mq.send("12345")
Package: easy-mq
EasyMQLibrary for using RabbitMQ with python.This library was made to create a unified interface for async and sync message queues in Python. This project was made to manage queues between an async server and a sync server.To be implemented:Message classMore advanced features (these will be implemented as needed)Syncfromeasy_mq.queueimportQueueQueue.connect('url')q=Queue('queue_name')q.put('message')formessageinq.revivaid():print(message)Asyncfromeasy_mq.queueimportAsyncQueueAsyncQueue.connect('url')asyncdefmain():q=AsyncQueue('queue_name')q.put('message')asyncformessageinq.revivaid():print(message)importasyncioasyncio.run(main())To run testssourcescripts/test.sh
Package: easymsgbox
easymsgboxCreate message boxes easily in PythonThis module helps to create easy-to-use message boxes.Installationpip install easymsgboxUsageimport easymsgbox as mb

agreement = mb.agreement('Agreement', 'Are you agree?', is_cancel = True)
if agreement == None:
    mb.alert('Sorry to bother!', 'Exiting.')
    exit()
elif agreement:
    data_collect = mb.confrim('Thanks!', 'Starting collecting data, icon = 'warning')
    if data_collect:
        mb.alert('Done!', 'Have a nice day!')
    else:
        mb.alert('Data collecting canced!', 'Canceled by user')
else:
    mb.alert('Oooh', 'Sorry', icon = 'error')CompabilityCompatatable with all Python 3 versions!This is my first module ever!