dataeval-flow 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- dataeval_flow/__init__.py +93 -0
- dataeval_flow/__main__.py +149 -0
- dataeval_flow/_app/__init__.py +5 -0
- dataeval_flow/_app/_model/__init__.py +5 -0
- dataeval_flow/_app/_model/_coerce.py +126 -0
- dataeval_flow/_app/_model/_discover.py +171 -0
- dataeval_flow/_app/_model/_execution.py +108 -0
- dataeval_flow/_app/_model/_introspect.py +280 -0
- dataeval_flow/_app/_model/_item.py +213 -0
- dataeval_flow/_app/_model/_registry.py +255 -0
- dataeval_flow/_app/_model/_state.py +322 -0
- dataeval_flow/_app/_model/_undo.py +61 -0
- dataeval_flow/_app/_panes/__init__.py +35 -0
- dataeval_flow/_app/_panes/_config_pane.py +173 -0
- dataeval_flow/_app/_panes/_result_pane.py +125 -0
- dataeval_flow/_app/_panes/_task_pane.py +91 -0
- dataeval_flow/_app/_panes/_widgets.py +111 -0
- dataeval_flow/_app/_screens/__init__.py +25 -0
- dataeval_flow/_app/_screens/_base.py +242 -0
- dataeval_flow/_app/_screens/_detail.py +333 -0
- dataeval_flow/_app/_screens/_model.py +102 -0
- dataeval_flow/_app/_screens/_params.py +80 -0
- dataeval_flow/_app/_screens/_pathpicker.py +68 -0
- dataeval_flow/_app/_screens/_section.py +621 -0
- dataeval_flow/_app/_screens/_settings.py +183 -0
- dataeval_flow/_app/_viewmodel/__init__.py +15 -0
- dataeval_flow/_app/_viewmodel/_builder_vm.py +272 -0
- dataeval_flow/_app/_viewmodel/_model_vm.py +70 -0
- dataeval_flow/_app/_viewmodel/_rendering.py +189 -0
- dataeval_flow/_app/_viewmodel/_result_vm.py +210 -0
- dataeval_flow/_app/_viewmodel/_section_vm.py +224 -0
- dataeval_flow/_app/app.py +742 -0
- dataeval_flow/_app/cli.py +592 -0
- dataeval_flow/_logging.py +102 -0
- dataeval_flow/cache.py +1355 -0
- dataeval_flow/config/__init__.py +80 -0
- dataeval_flow/config/_loader.py +79 -0
- dataeval_flow/config/_merge.py +92 -0
- dataeval_flow/config/_models.py +115 -0
- dataeval_flow/config/_paths.py +85 -0
- dataeval_flow/config/schemas/__init__.py +112 -0
- dataeval_flow/config/schemas/_dataset.py +111 -0
- dataeval_flow/config/schemas/_extractor.py +119 -0
- dataeval_flow/config/schemas/_metadata.py +28 -0
- dataeval_flow/config/schemas/_preprocessor.py +18 -0
- dataeval_flow/config/schemas/_selection.py +100 -0
- dataeval_flow/config/schemas/_task.py +89 -0
- dataeval_flow/config/schemas/_workflow.py +135 -0
- dataeval_flow/dataset.py +635 -0
- dataeval_flow/embeddings.py +135 -0
- dataeval_flow/metadata.py +48 -0
- dataeval_flow/preprocessing.py +141 -0
- dataeval_flow/py.typed +0 -0
- dataeval_flow/runner.py +118 -0
- dataeval_flow/selection.py +50 -0
- dataeval_flow/workflow/__init__.py +328 -0
- dataeval_flow/workflow/_text_report.py +511 -0
- dataeval_flow/workflow/base.py +69 -0
- dataeval_flow/workflow/orchestrator.py +454 -0
- dataeval_flow/workflows/__init__.py +1 -0
- dataeval_flow/workflows/analysis/__init__.py +38 -0
- dataeval_flow/workflows/analysis/outputs.py +202 -0
- dataeval_flow/workflows/analysis/params.py +114 -0
- dataeval_flow/workflows/analysis/workflow.py +1313 -0
- dataeval_flow/workflows/cleaning/__init__.py +23 -0
- dataeval_flow/workflows/cleaning/outputs.py +200 -0
- dataeval_flow/workflows/cleaning/params.py +160 -0
- dataeval_flow/workflows/cleaning/report.py +304 -0
- dataeval_flow/workflows/cleaning/workflow.py +794 -0
- dataeval_flow/workflows/drift/__init__.py +1 -0
- dataeval_flow/workflows/drift/outputs.py +144 -0
- dataeval_flow/workflows/drift/params.py +332 -0
- dataeval_flow/workflows/drift/report.py +201 -0
- dataeval_flow/workflows/drift/workflow.py +647 -0
- dataeval_flow/workflows/ood/__init__.py +1 -0
- dataeval_flow/workflows/ood/outputs.py +134 -0
- dataeval_flow/workflows/ood/params.py +161 -0
- dataeval_flow/workflows/ood/report.py +311 -0
- dataeval_flow/workflows/ood/workflow.py +728 -0
- dataeval_flow/workflows/prioritization/__init__.py +1 -0
- dataeval_flow/workflows/prioritization/outputs.py +122 -0
- dataeval_flow/workflows/prioritization/params.py +124 -0
- dataeval_flow/workflows/prioritization/report.py +117 -0
- dataeval_flow/workflows/prioritization/workflow.py +587 -0
- dataeval_flow/workflows/splitting/__init__.py +25 -0
- dataeval_flow/workflows/splitting/outputs.py +101 -0
- dataeval_flow/workflows/splitting/params.py +61 -0
- dataeval_flow/workflows/splitting/report.py +485 -0
- dataeval_flow/workflows/splitting/workflow.py +371 -0
- dataeval_flow-0.1.0.dist-info/METADATA +305 -0
- dataeval_flow-0.1.0.dist-info/RECORD +94 -0
- dataeval_flow-0.1.0.dist-info/WHEEL +4 -0
- dataeval_flow-0.1.0.dist-info/entry_points.txt +2 -0
- dataeval_flow-0.1.0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
dataeval_flow/__init__.py,sha256=ZDhEdMyr-f0O4ri9iL8POw_i_CkpKpvQkhrlLXVTbHk,2622
|
|
2
|
+
dataeval_flow/__main__.py,sha256=ucwMUB4Os3Cprhy0WeYt3WGtUplx8NEnsclJkdssbyQ,4467
|
|
3
|
+
dataeval_flow/_logging.py,sha256=CYzuHKqIIOxOsspt50pghafs9PNBQTiaNtb5yhvs3i4,3139
|
|
4
|
+
dataeval_flow/cache.py,sha256=bdZ_4RL4cDbY-9_Eel1PFqI0LN-MujSZfr5O7HV-tWA,51155
|
|
5
|
+
dataeval_flow/dataset.py,sha256=4AHgvX6fZ5I_2hbZKgcUiqmzibPYKm27uPN39rrs8WE,24718
|
|
6
|
+
dataeval_flow/embeddings.py,sha256=giqXIdaAETOKGGYRxJobNP1Y2_TnP0eakmSRAb6BKN0,4693
|
|
7
|
+
dataeval_flow/metadata.py,sha256=loOz-uGHcP5C6vLJ2wKo4_TULCXxZRmPnZc1fdIjatQ,1452
|
|
8
|
+
dataeval_flow/preprocessing.py,sha256=987vwUbWX1PvTzlYdT_ig8N1ZTCBlU1oMHV3IBcE9Ks,4843
|
|
9
|
+
dataeval_flow/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
|
+
dataeval_flow/runner.py,sha256=gB3GI9ppnGLlF23DL9dKMbFmhZh_FS5dmoYpq4OHwqw,4109
|
|
11
|
+
dataeval_flow/selection.py,sha256=bRjOjZo5__i9HSlH84ScKSOr-_mIguc1DbsewNaeOnY,1455
|
|
12
|
+
dataeval_flow/_app/__init__.py,sha256=SOG7OGwlPKqPKOexnal_81DS9OPWdjYfCG9Mi8IW18g,206
|
|
13
|
+
dataeval_flow/_app/app.py,sha256=sQvGACr748OkxKgqIsEcJDHFTIApvOoDsE5QxdsQ1_k,25835
|
|
14
|
+
dataeval_flow/_app/cli.py,sha256=Wb4nsaKNa7-cQJTafQ1liwP1S-fqCDrD6DksmOM8cg4,21040
|
|
15
|
+
dataeval_flow/_app/_model/__init__.py,sha256=Q1iJ35WQo1eyz-bexyo3IpeeGiwBCXCRhljhI9j7sPE,145
|
|
16
|
+
dataeval_flow/_app/_model/_coerce.py,sha256=8FbmA08BXkVXcBUuto2NbyF59UB-rHlj0i8h6AZSuZg,3653
|
|
17
|
+
dataeval_flow/_app/_model/_discover.py,sha256=sgjffarSHmaZ1dBVcCImzTA9ueluIA_DXC833AcuptA,5054
|
|
18
|
+
dataeval_flow/_app/_model/_execution.py,sha256=D7P8o3j2I1YLRoKWCu8rvYfasi81-kQNx-cWGBFDwLQ,3675
|
|
19
|
+
dataeval_flow/_app/_model/_introspect.py,sha256=DzbSIxsIcp_Yq22OoRDEfywdVvnaG5u7aeEVq0_jnoI,9688
|
|
20
|
+
dataeval_flow/_app/_model/_item.py,sha256=MfNtNbr23vQGJkW_PWjQ2Lzcd_tYJ0HBN5TRQCU57Bw,7140
|
|
21
|
+
dataeval_flow/_app/_model/_registry.py,sha256=TeUe7--laG2N9aZaDJVQaEYhsF56HrKrgzBybS_nh_s,8726
|
|
22
|
+
dataeval_flow/_app/_model/_state.py,sha256=C4ElY0hTaVKI8YMjuxtXkLwgnB-QK_ZIIi4UXOisR1Y,12033
|
|
23
|
+
dataeval_flow/_app/_model/_undo.py,sha256=OvS8EZZLyMZslCaXgJ0RsAc7axAcnBy54jhKN6-H4ek,1770
|
|
24
|
+
dataeval_flow/_app/_panes/__init__.py,sha256=dedv8vkQM6cpWq3vtdWQqMRa1f3a5FOQzv2_LbMWxrA,786
|
|
25
|
+
dataeval_flow/_app/_panes/_config_pane.py,sha256=KFayoPXbQh_k2icMrMzseBA2LB_nEUN5IISMD1lptKw,6325
|
|
26
|
+
dataeval_flow/_app/_panes/_result_pane.py,sha256=xYgyJtWuTNP-8ZVsXHw6Ne3qoW6bXAscmebSzNCqTIU,4838
|
|
27
|
+
dataeval_flow/_app/_panes/_task_pane.py,sha256=5EtLKQ5bsd2sWukjhnYsp3sHpnK63DlwtdaBCWZoWJQ,3192
|
|
28
|
+
dataeval_flow/_app/_panes/_widgets.py,sha256=Rca5n-PH8Bay9BVDavfbqp_3cgUEJjuopMWSHwvcRS8,3165
|
|
29
|
+
dataeval_flow/_app/_screens/__init__.py,sha256=W2Zb0tr0MVlNG0e7H5UbUrlm7X6I3IEUcIxo2_0qw4I,912
|
|
30
|
+
dataeval_flow/_app/_screens/_base.py,sha256=TBFoDbkGyK1DvnrryYsuwvs2xywBb-y1b74vBuhbfjY,5936
|
|
31
|
+
dataeval_flow/_app/_screens/_detail.py,sha256=MlTokzuIKQVLSOVFuEWunb6Yyoyo0SAEQ39mHgiuirU,9445
|
|
32
|
+
dataeval_flow/_app/_screens/_model.py,sha256=hUv3fhjMN_o_lmqh_W84ySQ2YvZx4bGikXYp5nVrk8U,4378
|
|
33
|
+
dataeval_flow/_app/_screens/_params.py,sha256=CkwnQ2DIzhVMXl-EYfqU9ZM-JPA9c2BnYi4I30kVkAM,3247
|
|
34
|
+
dataeval_flow/_app/_screens/_pathpicker.py,sha256=m0YCgG033aO84sZkS_87VWLFfxjHm1laVQpJYhIxnMs,2774
|
|
35
|
+
dataeval_flow/_app/_screens/_section.py,sha256=9jUsPBwrN2az0XHnJSTfTleNUqkdtqiNoupm3kCKe74,27437
|
|
36
|
+
dataeval_flow/_app/_screens/_settings.py,sha256=kVXQuEHqEJzSY_RCHb7JndPZW7uVTN97SinAllI58zI,5974
|
|
37
|
+
dataeval_flow/_app/_viewmodel/__init__.py,sha256=VXUg7CmqJXRGQF091hG9sA6fbz-mlgevlyKPApaMlTw,466
|
|
38
|
+
dataeval_flow/_app/_viewmodel/_builder_vm.py,sha256=Ui0dU_eB646VLnGw7wIe8bJRRQtz_a18_Fd0vPe7Y-o,11009
|
|
39
|
+
dataeval_flow/_app/_viewmodel/_model_vm.py,sha256=XWbsrJEJr7oQhPPABmT49llue8JyqS_NbQJ3WAk0uCU,2227
|
|
40
|
+
dataeval_flow/_app/_viewmodel/_rendering.py,sha256=oWmiyyXTF6vQ8yysnNsGaNWbufO4jVWMYIFJ9h44ckQ,6896
|
|
41
|
+
dataeval_flow/_app/_viewmodel/_result_vm.py,sha256=7GRp_lI08vmVQX7YvyLdnnj13rmX0MHH8Ismumq2JF0,7974
|
|
42
|
+
dataeval_flow/_app/_viewmodel/_section_vm.py,sha256=CRTMa15HyxcR0FzpyknsDabvw-jGEocg0x6BPPwWJxI,8967
|
|
43
|
+
dataeval_flow/config/__init__.py,sha256=YTec0icaMkotkby24W13VFUL4p-AX8tEiF9sg1Nn-EY,2123
|
|
44
|
+
dataeval_flow/config/_loader.py,sha256=9C68Bn0pZfxl56RIRBH4D0-wi-eAEORJV5knbGzx9mM,2517
|
|
45
|
+
dataeval_flow/config/_merge.py,sha256=luJ4cNPrza2-T8A3-IlE7Tf037yIXaev4Pfo6OI5KQk,3446
|
|
46
|
+
dataeval_flow/config/_models.py,sha256=XXVH0CYuzY8BaxoRb1dpKyn4FQzQT0haWWOji36XWGU,3802
|
|
47
|
+
dataeval_flow/config/_paths.py,sha256=c-e2JSD-UJbczkO8GHsfXUgpfdwQJDxrAl5IqgWWMvo,2484
|
|
48
|
+
dataeval_flow/config/schemas/__init__.py,sha256=2a_9T0vPlo3NikI2iPJ-Z2qt8Sd6Wzpd-P0RU4G1CAA,3222
|
|
49
|
+
dataeval_flow/config/schemas/_dataset.py,sha256=4swTw2ZXASmJg1-Do5B3tqDjYvI29hxdFBSvH8atJ94,2693
|
|
50
|
+
dataeval_flow/config/schemas/_extractor.py,sha256=6h45hE5-njnIHTPMXcwxjbDmLsX0OEck5FJGUMygzGY,3805
|
|
51
|
+
dataeval_flow/config/schemas/_metadata.py,sha256=yKeB9wNVmmfWRyQMFTTM3GwKaqYG9lZeCYRcKgEsjZc,897
|
|
52
|
+
dataeval_flow/config/schemas/_preprocessor.py,sha256=92peShmzFN4R6QPiHpLIjfGpBhxfISSL9GUnEPyuaHs,444
|
|
53
|
+
dataeval_flow/config/schemas/_selection.py,sha256=TO6uXb0nU4Ko8Vkf2x4Rp-oqB1nd8GBB6HJ3veN5i6w,3556
|
|
54
|
+
dataeval_flow/config/schemas/_task.py,sha256=bNhD6Ao-8Z9qFiELDupNRzP0KmjMQy6gpARjUSWb5fI,3358
|
|
55
|
+
dataeval_flow/config/schemas/_workflow.py,sha256=Fi0AZRy7y9glw0zKNkQUgjclMw7zv9mxTVxhPxnrbbk,4026
|
|
56
|
+
dataeval_flow/workflow/__init__.py,sha256=M1Vk3UCzdZQZmPg3ETmFz-onhrYKGq-R8YZgspEroS8,11252
|
|
57
|
+
dataeval_flow/workflow/_text_report.py,sha256=RXSp5ow-i2PbXSPfMYIXRuJ3NKRonTag7O3idC4cwAw,19468
|
|
58
|
+
dataeval_flow/workflow/base.py,sha256=olcUbghEv7L-eWmKKc6gQ247BoegcWU5XxjCxmn3U8E,1833
|
|
59
|
+
dataeval_flow/workflow/orchestrator.py,sha256=CUXyC9pqsG5F8g0YQut3ZOIOkLLvkQFmb5nJTix4Zkw,16715
|
|
60
|
+
dataeval_flow/workflows/__init__.py,sha256=Rk9Mw6LSAc-JdNx22k5DcdN26xLrcWKHqP6cv1eYbZ8,41
|
|
61
|
+
dataeval_flow/workflows/analysis/__init__.py,sha256=ZSglzqZK_FtGzootWm9_xCx_xjOFn4zYfYVXvmXhBhc,1059
|
|
62
|
+
dataeval_flow/workflows/analysis/outputs.py,sha256=Wm24RTMPhozvqXGVQ0p1w58WzKsgsQ2vPjFwUlGcz-w,7662
|
|
63
|
+
dataeval_flow/workflows/analysis/params.py,sha256=EV80nj1CM9DJvxnL03QhvQ2O9fz-0AF4izyC4ZpjGgI,4056
|
|
64
|
+
dataeval_flow/workflows/analysis/workflow.py,sha256=hYtYTLieU9kCg6PsgG9-mYhoWJLkykwrhX8UJMg8594,48049
|
|
65
|
+
dataeval_flow/workflows/cleaning/__init__.py,sha256=oLB1CPVm4xLLEpS9LnsE6uZgtxGVdbGtyI8niHOcmJ0,645
|
|
66
|
+
dataeval_flow/workflows/cleaning/outputs.py,sha256=I0Hhs3INFN7NzHLAqnoHcSYODPtasufXdsikGwUEqtg,6212
|
|
67
|
+
dataeval_flow/workflows/cleaning/params.py,sha256=J35TwLqZoRcJ_d48iE3LQih1tFjRvMr7Ng6k_R2t8a0,6445
|
|
68
|
+
dataeval_flow/workflows/cleaning/report.py,sha256=k1wT1VRrRI6AS2zHSW60YjI5lchp7tyZr-tRrPMkwDs,12863
|
|
69
|
+
dataeval_flow/workflows/cleaning/workflow.py,sha256=RWBdCUDcWKJBs7-MWw1mb1BgcVIWeEMntfGoR48F5Qw,31050
|
|
70
|
+
dataeval_flow/workflows/drift/__init__.py,sha256=PLpZeh0wLXlH6E7CApD8KAQlZRmoDSBZDYbzKAbKUCk,33
|
|
71
|
+
dataeval_flow/workflows/drift/outputs.py,sha256=ILD1EKu5r_L16_58YbOf1WMzRQkCpbHkg7UgKiFx_Ms,4254
|
|
72
|
+
dataeval_flow/workflows/drift/params.py,sha256=qqf90t6UzRXIvJuW7EUhOqflMYiTxPIlsVAx1AI_IlQ,11521
|
|
73
|
+
dataeval_flow/workflows/drift/report.py,sha256=sqCuh0egCl_8DHDtR_gLnkjeP98osLNn2iP2nHw32hM,6635
|
|
74
|
+
dataeval_flow/workflows/drift/workflow.py,sha256=Zh3kBJYpVkXdiUw_j1vmyuO9GUohgZ8SYQqvknoLgXY,24545
|
|
75
|
+
dataeval_flow/workflows/ood/__init__.py,sha256=t3kpebd1nT7tIz03MTTpKijPAnB14mZzK290sW1ERRU,30
|
|
76
|
+
dataeval_flow/workflows/ood/outputs.py,sha256=L9cLNMudVHU5o3Ijj9OGC2iWtrKeakksaDRQsa9XJNU,4036
|
|
77
|
+
dataeval_flow/workflows/ood/params.py,sha256=KZhDL3dqQuj8ESRSPZ6BAiYEebbExoB6Z-JyztNtRMw,5043
|
|
78
|
+
dataeval_flow/workflows/ood/report.py,sha256=19ddZaxc2b0e8exuKRl9brmUEcSe7VjsAWcb4rBlCyQ,11236
|
|
79
|
+
dataeval_flow/workflows/ood/workflow.py,sha256=9Gc_uskxrriH7s7e52MM9rkHXJ8bHw5tYGqLoSZ3TDY,27544
|
|
80
|
+
dataeval_flow/workflows/prioritization/__init__.py,sha256=N6EwAKGIu8fKJRS8IJ1Bl4jaQL0nr_bQvjWecBGg0Vs,36
|
|
81
|
+
dataeval_flow/workflows/prioritization/outputs.py,sha256=h3QM0UhxBCuOk6AvvBkunsSaPSeI2K1wnYhC0EHcu6c,3908
|
|
82
|
+
dataeval_flow/workflows/prioritization/params.py,sha256=Y9HmYoJXhesN3Az6ks-A8GROabpVzlrsYpAwMcCr1NE,4432
|
|
83
|
+
dataeval_flow/workflows/prioritization/report.py,sha256=v9Co0mA7UaFiDQfkX2eZRN5iwC0VTpIITFdJssk6dpc,3652
|
|
84
|
+
dataeval_flow/workflows/prioritization/workflow.py,sha256=UK8GwoTq3TOexXsGHPCob-ftv5xL4zhibOSCUbrksl4,21888
|
|
85
|
+
dataeval_flow/workflows/splitting/__init__.py,sha256=HwR4jwDMnA1KWaggVL1yjSqT0Y-umX9sCNMnxUn05iU,680
|
|
86
|
+
dataeval_flow/workflows/splitting/outputs.py,sha256=FSCOvDzR3RL-bPgWISX_es6-Cs-wMODcKM64VQDxG6A,3304
|
|
87
|
+
dataeval_flow/workflows/splitting/params.py,sha256=3PPPyEtFOrbw5WfhTSlw4TQYzKU7ST3En74s4e22vzM,1836
|
|
88
|
+
dataeval_flow/workflows/splitting/report.py,sha256=PQW4ksBcwge7om7vz6ugFoAttufdmO38UCDkIDCw1HU,17852
|
|
89
|
+
dataeval_flow/workflows/splitting/workflow.py,sha256=yh3hBtkV8hQy9uzoagwvzNTcylCgu5CnL0bPYR4YiN0,13349
|
|
90
|
+
dataeval_flow-0.1.0.dist-info/METADATA,sha256=abFUvoF6AibgdVo3BBNW5vNgUNwNLUdC3BMlx9PIqCE,9518
|
|
91
|
+
dataeval_flow-0.1.0.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
|
|
92
|
+
dataeval_flow-0.1.0.dist-info/entry_points.txt,sha256=SwcOY-p5UB6ZzCjLezWCLETmsAWeFeBP4P3PmRnFf3A,62
|
|
93
|
+
dataeval_flow-0.1.0.dist-info/licenses/LICENSE,sha256=uAooygKWvX6NbU9Ran9oG2msttoG8aeTeHSTe5JeCnY,1061
|
|
94
|
+
dataeval_flow-0.1.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 ARiA
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|