seam-code 0.3.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.
Files changed (109) hide show
  1. seam/__init__.py +3 -0
  2. seam/_data/schema.sql +225 -0
  3. seam/_web/assets/index-BL_tqprR.js +216 -0
  4. seam/_web/assets/index-GTKUhVyD.css +1 -0
  5. seam/_web/index.html +13 -0
  6. seam/analysis/__init__.py +14 -0
  7. seam/analysis/affected.py +254 -0
  8. seam/analysis/builtins.py +966 -0
  9. seam/analysis/byte_budget.py +217 -0
  10. seam/analysis/changes.py +709 -0
  11. seam/analysis/cluster_naming.py +260 -0
  12. seam/analysis/clustering.py +216 -0
  13. seam/analysis/confidence.py +699 -0
  14. seam/analysis/embeddings.py +195 -0
  15. seam/analysis/flows.py +708 -0
  16. seam/analysis/impact.py +444 -0
  17. seam/analysis/imports.py +994 -0
  18. seam/analysis/imports_ext.py +780 -0
  19. seam/analysis/imports_resolve.py +176 -0
  20. seam/analysis/processes.py +453 -0
  21. seam/analysis/relevance.py +155 -0
  22. seam/analysis/rwr.py +129 -0
  23. seam/analysis/staleness.py +328 -0
  24. seam/analysis/steer.py +282 -0
  25. seam/analysis/synthesis.py +253 -0
  26. seam/analysis/synthesis_channels.py +433 -0
  27. seam/analysis/testpaths.py +103 -0
  28. seam/analysis/traversal.py +470 -0
  29. seam/cli/__init__.py +0 -0
  30. seam/cli/install.py +232 -0
  31. seam/cli/main.py +2602 -0
  32. seam/cli/output.py +137 -0
  33. seam/cli/read.py +244 -0
  34. seam/cli/serve.py +145 -0
  35. seam/config.py +551 -0
  36. seam/indexer/__init__.py +0 -0
  37. seam/indexer/cluster_index.py +425 -0
  38. seam/indexer/db.py +496 -0
  39. seam/indexer/embedding_index.py +183 -0
  40. seam/indexer/field_access.py +536 -0
  41. seam/indexer/field_access_c_cpp.py +643 -0
  42. seam/indexer/field_access_ext.py +708 -0
  43. seam/indexer/field_access_ext2.py +408 -0
  44. seam/indexer/field_access_go_rust.py +737 -0
  45. seam/indexer/field_access_php_swift.py +888 -0
  46. seam/indexer/field_access_ts.py +626 -0
  47. seam/indexer/graph.py +321 -0
  48. seam/indexer/graph_c.py +562 -0
  49. seam/indexer/graph_c_cpp.py +39 -0
  50. seam/indexer/graph_common.py +644 -0
  51. seam/indexer/graph_cpp.py +615 -0
  52. seam/indexer/graph_csharp.py +651 -0
  53. seam/indexer/graph_go.py +723 -0
  54. seam/indexer/graph_go_rust.py +39 -0
  55. seam/indexer/graph_java.py +689 -0
  56. seam/indexer/graph_java_csharp.py +38 -0
  57. seam/indexer/graph_php.py +914 -0
  58. seam/indexer/graph_python.py +628 -0
  59. seam/indexer/graph_ruby.py +748 -0
  60. seam/indexer/graph_rust.py +653 -0
  61. seam/indexer/graph_scope_infer.py +902 -0
  62. seam/indexer/graph_scope_infer_ext.py +723 -0
  63. seam/indexer/graph_scope_infer_ext2.py +992 -0
  64. seam/indexer/graph_swift.py +1014 -0
  65. seam/indexer/graph_swift_infer.py +515 -0
  66. seam/indexer/graph_typescript.py +663 -0
  67. seam/indexer/migrations.py +816 -0
  68. seam/indexer/parser.py +204 -0
  69. seam/indexer/pipeline.py +197 -0
  70. seam/indexer/signatures.py +634 -0
  71. seam/indexer/signatures_ext.py +780 -0
  72. seam/indexer/sync.py +287 -0
  73. seam/indexer/synthesis_index.py +291 -0
  74. seam/indexer/tokenize.py +79 -0
  75. seam/installer/__init__.py +67 -0
  76. seam/installer/claude.py +97 -0
  77. seam/installer/codex.py +94 -0
  78. seam/installer/core.py +127 -0
  79. seam/installer/cursor.py +61 -0
  80. seam/installer/guide.py +110 -0
  81. seam/installer/jsonfile.py +85 -0
  82. seam/installer/markdownfile.py +146 -0
  83. seam/installer/tomlfile.py +72 -0
  84. seam/query/__init__.py +0 -0
  85. seam/query/clusters.py +206 -0
  86. seam/query/comments.py +217 -0
  87. seam/query/context.py +293 -0
  88. seam/query/engine.py +940 -0
  89. seam/query/fts.py +328 -0
  90. seam/query/names.py +470 -0
  91. seam/query/pack.py +433 -0
  92. seam/query/semantic.py +339 -0
  93. seam/query/structure.py +727 -0
  94. seam/server/__init__.py +0 -0
  95. seam/server/graph_api.py +437 -0
  96. seam/server/handler_common.py +323 -0
  97. seam/server/impact_handler.py +615 -0
  98. seam/server/mcp.py +556 -0
  99. seam/server/tools.py +697 -0
  100. seam/server/trace_handler.py +184 -0
  101. seam/server/web.py +922 -0
  102. seam/watcher/__init__.py +0 -0
  103. seam/watcher/__main__.py +56 -0
  104. seam/watcher/daemon.py +237 -0
  105. seam_code-0.3.0.dist-info/METADATA +318 -0
  106. seam_code-0.3.0.dist-info/RECORD +109 -0
  107. seam_code-0.3.0.dist-info/WHEEL +4 -0
  108. seam_code-0.3.0.dist-info/entry_points.txt +2 -0
  109. seam_code-0.3.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,109 @@
1
+ seam/__init__.py,sha256=iKnDmtIFi7eqfB-QOTfMDtLZYAGSkuZFthqtumle1KI,88
2
+ seam/config.py,sha256=vS_znK2s4wBYWY69nB9WnK3Yho5QNH_JWdaeNaEDAj4,33768
3
+ seam/_web/index.html,sha256=BxTpkz_s0qvVaYLicCPHtqha3BvVHFDwDvxw-EPBRq8,413
4
+ seam/_web/assets/index-BL_tqprR.js,sha256=HzkdIj_6Cd0CEihwPcJZT-6X8yt8EE6hNy8-F9TwNf4,560930
5
+ seam/_web/assets/index-GTKUhVyD.css,sha256=E5EYvePHD8QsQZ_MECh35cD77PVuoSlq0SBes5PlWJw,33581
6
+ seam/analysis/__init__.py,sha256=PRKVYBw4Gi0RRLKfc0fRF_Bu2L1CIo1KpRQVoVgCmV8,681
7
+ seam/analysis/affected.py,sha256=dfz_jKupENx2wf5F-1VdSezN56_XTwPIhlivNKPrB44,11213
8
+ seam/analysis/builtins.py,sha256=qBjBZ_uTlV6JOhj5WkMW59O5hM7ucYgjnwCTnVtYaaQ,24374
9
+ seam/analysis/byte_budget.py,sha256=9PNMvG4xLhfc6uxGGjlmFfnSgFbrzrnR6fNCimnYKzU,10956
10
+ seam/analysis/changes.py,sha256=6jeKSj0ksOUi_Ig0jPpTINKCLLwbzRaea-81IYYf84Q,27746
11
+ seam/analysis/cluster_naming.py,sha256=6m8BSQYFlCePzWE2AAvC3-F14nADrrL_NRsqfE1ZJdU,10721
12
+ seam/analysis/clustering.py,sha256=qoer7LhtnyOCLKJY9Mv6ZWW__6rm1b6-DbdQkivCnjU,8730
13
+ seam/analysis/confidence.py,sha256=4pa8z6o4FPQrTuNxWQ8_JjtwefDmIFAEBBUsLfpKyTg,29732
14
+ seam/analysis/embeddings.py,sha256=tsQ332kUR61GSVhjGPL-nNMChiY9tPdcdADVE6MDnVY,7847
15
+ seam/analysis/flows.py,sha256=ODpJ3T3YsGPT3CU1jBN9rdhQ9GknFwm7kP8dqeqNrfY,30296
16
+ seam/analysis/impact.py,sha256=BHh5826edGd77b6AlBdpGq-SnsT4-55GAt3wEWm77fc,21428
17
+ seam/analysis/imports.py,sha256=F93dDja2tHmN5GxXH1JT0xVlWdnnbfNsbkxQ31Y5B0g,37090
18
+ seam/analysis/imports_ext.py,sha256=nDED2tCw1RxracOYu_Gx0J3tKQOv-q6WdKyni5DLyLI,30431
19
+ seam/analysis/imports_resolve.py,sha256=7pgjLy_Xd2W2KljE2y2xdHUakwQRI5n6VjfnakhBEQE,7571
20
+ seam/analysis/processes.py,sha256=uf4dY0gLc0nzWYFjmsSXui3__40Q1PFY7iziTpp6-eE,18810
21
+ seam/analysis/relevance.py,sha256=PlWbh5mZ1SBjB1OyMRnlxW_mFMhe-xRvfPfSQaJZNjM,6976
22
+ seam/analysis/rwr.py,sha256=0oMMHHAg2mA_i54VQdyL3JelTxLFNf3PDFqFa0k4iw0,6292
23
+ seam/analysis/staleness.py,sha256=3kPEBt_DX-wvwx4ELMIYDoH__MYOJL9Um26PSv8j3VE,14865
24
+ seam/analysis/steer.py,sha256=Ggzp6BvNJONuOjkndo7QGKKYsz80wl0qremQ7zfk_K8,13699
25
+ seam/analysis/synthesis.py,sha256=inO-qo6cXx0UDm7xbyAGSzxVB7VUxxnKvjw-x-UFTzQ,11525
26
+ seam/analysis/synthesis_channels.py,sha256=pMPz25x0rm7lJWBOYrcIcIMx4U_cwhYmjfqC2z_4Hrs,19212
27
+ seam/analysis/testpaths.py,sha256=tRQ2bFy06mknCGH2O-EGHlK2ed87V5LSejoYxp99bCM,3608
28
+ seam/analysis/traversal.py,sha256=SQFIAp-tCaclx6mDV8_ZTsrpECc5eBd8Yt3SmXj9MlA,22501
29
+ seam/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
+ seam/cli/install.py,sha256=SIfXMrF82P-Y63JsAAlxQgukKg_6Nj35-1vHO-af4Cs,9665
31
+ seam/cli/main.py,sha256=Yr6cAtA-3nkrfzVh_kswGPwgoPwZiBfV11HcjzspBAI,115998
32
+ seam/cli/output.py,sha256=PEq--FhRjsYUEj9pH8mkrZ20hY_2eNSlYTNE_S3W45s,5924
33
+ seam/cli/read.py,sha256=AgYa6xzW_B-nwEwzE8IvvGJFKqbSWoYdj1ybMjTMweE,9673
34
+ seam/cli/serve.py,sha256=Cyc0kFDlO82YQmoxMnYlSCGp7ScyY7VAGHdL-bb27C8,6620
35
+ seam/indexer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
+ seam/indexer/cluster_index.py,sha256=CkT6VU2NhQd6F3cOZCyYrihXvitTA_iZZ2gxofgE7IA,19738
37
+ seam/indexer/db.py,sha256=UamaOvtHwgo4BxTxa7EgKQTaGTl8hrXOKKLA-7JdZdM,23189
38
+ seam/indexer/embedding_index.py,sha256=Uc5Chj8g-R5K-56nQzKr57nD_SKlZB173QakIg5Znz0,7829
39
+ seam/indexer/field_access.py,sha256=eGFSP993L-sJMfFo1EAbqwaluc158VVoLX-xambeV28,21315
40
+ seam/indexer/field_access_c_cpp.py,sha256=P39BndcLhT4ThOKm5tDfeWffPykKxxYGkN22p2QpLAI,24400
41
+ seam/indexer/field_access_ext.py,sha256=gkSQQyucM4Ypi6FhK-kFkeYGm8-jk2Cyro6F9eAbax0,26774
42
+ seam/indexer/field_access_ext2.py,sha256=vh3FQXDhsTIbEOOUQfJkPEEzmqPQX1JS1wO-UTO4oa4,15154
43
+ seam/indexer/field_access_go_rust.py,sha256=QV_mN8PzoxqCuDuIkaV43BBbTZvZtuS6BUZB71h8lvE,27813
44
+ seam/indexer/field_access_php_swift.py,sha256=J6QmemlGde_qAtF2beYfpIs1xsTtvn6dHPhTvOnjf04,33991
45
+ seam/indexer/field_access_ts.py,sha256=LwUeV___Bd2e98u4snNDFmybCMh6XTDEiXSpTlyItDc,23663
46
+ seam/indexer/graph.py,sha256=e3zigfaLcgPDAaY8P0cOFs7zE0G460kXjk3y2JBcd1I,12587
47
+ seam/indexer/graph_c.py,sha256=FI-aST0BgSGs5p95FMBBpLR4URNw8DQlZHnx2uCSM-c,20696
48
+ seam/indexer/graph_c_cpp.py,sha256=b07oUi0epnMbiVMFDvgVh-BCLdeOLRs4s3p423GN4_k,1198
49
+ seam/indexer/graph_common.py,sha256=161TUnBQPlnJF2oL0ZeWIIS0s6UrjdxqlvuOU5u5rHI,29177
50
+ seam/indexer/graph_cpp.py,sha256=51nNnB7GNukoX7ybAL_jwQEeGEZcSmKngWRdtAYjjoc,23981
51
+ seam/indexer/graph_csharp.py,sha256=hFmfOumNFom0PSjVZq0VVQ1FnBhg4tPRTTK-LOvIj6s,26152
52
+ seam/indexer/graph_go.py,sha256=pYEFtUGDWri2Ad8hbs5qyKmOLZtrCZ4gBzwCISXWRVo,28870
53
+ seam/indexer/graph_go_rust.py,sha256=rnEukE9aABHMg2UPL1gSDItsIg-eOUGQ0ua37huesYQ,1234
54
+ seam/indexer/graph_java.py,sha256=Cr7TXmztmdLyRnSijqwNs80XzyZ7mWepIVBBzi2HFsA,27568
55
+ seam/indexer/graph_java_csharp.py,sha256=aiUSv19MNezN-fbOgX0fX-95kBChWvCvYmBImWiMJV0,1346
56
+ seam/indexer/graph_php.py,sha256=PCZQ2Ju-JFm0GtUifOnmnYXxVyjWRn8ADZarMisP5fY,34711
57
+ seam/indexer/graph_python.py,sha256=_rnjUoEr72-T-tnObG5TwgKsGwBL-KqScwMOYVgzajo,27261
58
+ seam/indexer/graph_ruby.py,sha256=TYr78C_pCdHzYc1oO3y5f3qx4cI6Scv0vwvZqZakgJw,26723
59
+ seam/indexer/graph_rust.py,sha256=C2EOgll41qw5I1mgVrCeJDkVEtr5FE57RFTG3zV63D8,27750
60
+ seam/indexer/graph_scope_infer.py,sha256=D0avpfpa0tsT4nZiohcONURb4dTzG3taV_7cr1G2jX8,39827
61
+ seam/indexer/graph_scope_infer_ext.py,sha256=FPIW9uvqt9pThOvC-i93hmYoFeL283ZILse9VS9jNfo,31498
62
+ seam/indexer/graph_scope_infer_ext2.py,sha256=2aQqnHVi42yTHRvmYEDZ52LmCITrDZ_dwDDGmstb3v0,41244
63
+ seam/indexer/graph_swift.py,sha256=XFi4IcBu5FFIegvY84OBNqlPTO6Vv-JilKVgyqS5rWo,38771
64
+ seam/indexer/graph_swift_infer.py,sha256=Py18Cc0yckYm-kudtpUzJAIaS2jhyJ9DSJ0ZmxP5GMM,22299
65
+ seam/indexer/graph_typescript.py,sha256=eTIWIDz3wSw8EhL74w5JUFCf_RCT8ismZvYDxNUnYMw,27349
66
+ seam/indexer/migrations.py,sha256=V4YNvA1Ygci_AfGTL_rorm0z9Igs1YYztTaK4_IuCFo,39014
67
+ seam/indexer/parser.py,sha256=EtZzBoYGb4GA3-6ODcgILbAj7bSfl-P8FrS1pFrvfvc,7143
68
+ seam/indexer/pipeline.py,sha256=Q7sSCC1fCNxfdKqLvOKkHQU1BFfHb7B8KnrwJTrUFns,7459
69
+ seam/indexer/signatures.py,sha256=Z94P4fbSU5pSotldx0D9lhQXBaDznUDthZyn2A34QQ8,25330
70
+ seam/indexer/signatures_ext.py,sha256=5FQMfD1kohGn44OCQvBv2yf4OREuZv1f5113VhFTj7I,27267
71
+ seam/indexer/sync.py,sha256=V31v8YXtGzBO5dTbtdbNzn59XTmhVbB6W5uf4mRpSMM,13070
72
+ seam/indexer/synthesis_index.py,sha256=KcWJs6IylO--uWQxXavEIh9eJA_rf_5uHnIZVJmlCDA,12407
73
+ seam/indexer/tokenize.py,sha256=Q4KHLdBUg8oe_MvPiC5G5zmObs8p8xKTSXisUoO_lyM,3800
74
+ seam/installer/__init__.py,sha256=IAn5z9Jqwasv9vBZ_Tr7kqqSrYrev2Qbx0UcZHPDueQ,2528
75
+ seam/installer/claude.py,sha256=nn45oCrRrih2m4KZ1eznCtVdIWTu3S9Rtqn8RxgFGuc,3624
76
+ seam/installer/codex.py,sha256=Bdn-ZuJG85RvXScXcTDerP30buTTW8NH58TyMSoI5Qo,3582
77
+ seam/installer/core.py,sha256=JqkTSbLjFlNMEt-sEFPNB8qzVi1D5P5ljogP6jL0eJY,4970
78
+ seam/installer/cursor.py,sha256=GnrVYJZasSFCyqPyUbGlYTdr7hZ_5-Wezt85D3itxdw,2417
79
+ seam/installer/guide.py,sha256=e7ssgZHcOxrpx4o6rPwrSrk4tfbCh8hQK-mxz_eFbeU,4536
80
+ seam/installer/jsonfile.py,sha256=mO0dfnCaZUUaK4ZVBaO6MGzd7UgRggQc6JHYZsg-v9c,3016
81
+ seam/installer/markdownfile.py,sha256=rqfK2jULgbf4KK59UcwNd8lR768h7j-S9qogqXvFimg,5327
82
+ seam/installer/tomlfile.py,sha256=RxCddaO_yP6xmD6ixn9s7uJw7YsSvxNKZPDGo8DCVDI,2636
83
+ seam/query/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
+ seam/query/clusters.py,sha256=VaNqVHDtjSlCMOUy2LCmpkY-fm4Tiigz5fzH9qztpTU,6960
85
+ seam/query/comments.py,sha256=YPFhtoqpqdsonMXpjgUfHAgIh5AfNsrAuwfjLwGbypM,8119
86
+ seam/query/context.py,sha256=WLOGx0Aiw1lYzrNon7VW6fh9tQjv4fAw33ROi3GhQRU,12217
87
+ seam/query/engine.py,sha256=XOjmQlQJhRllkzuqdtCV9V7nW4VnDgOQthuApBzb9Yk,39855
88
+ seam/query/fts.py,sha256=XCQpubxZSSLgK7rEy7Q4_A9198kY2sjO4qnKYTtCihw,16119
89
+ seam/query/names.py,sha256=jF5k3cK30pHz4mySmC6lj858GuQ9RLFYO68LQuJfIK8,22441
90
+ seam/query/pack.py,sha256=po6DQsUkbKpEd1dol7uYEEBG7d1am9Qr7oc8Pglggzg,18319
91
+ seam/query/semantic.py,sha256=ssTA6svBKTFLB5x5mwnhTGKqhXkJfw9qAatHNu4k9MI,14108
92
+ seam/query/structure.py,sha256=o1mwl1dyANVa0klsrQtHFc9F_wttVROUj4c_N4z7Ewo,30674
93
+ seam/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
94
+ seam/server/graph_api.py,sha256=oCNo2E2xrX7A7B9UPseHEJR9AFssLaGEVrLR7qE4gP4,15998
95
+ seam/server/handler_common.py,sha256=ELVvkeeR-ef1PIXcsQjlNry5yg_dGVFfuU6Gq93Av8U,13297
96
+ seam/server/impact_handler.py,sha256=Dhk7K5JEiISIICCTN8kd9LdlQxzbyyJST0NMA7kJdso,30576
97
+ seam/server/mcp.py,sha256=jF6eyGoFi7sKK4oTMLpFk34UTiA7kmu0TiluUHk7Xb4,28793
98
+ seam/server/tools.py,sha256=XaLfAgQuQiOgsDMd0P3gJLC4CaqfNNzv42uFf1yaibM,27432
99
+ seam/server/trace_handler.py,sha256=8F95vvSzaQPCLtzfkyXokuo1HTvAjoAFYfJWqOuhU4o,8658
100
+ seam/server/web.py,sha256=DKz6WMeScRkOGyPaiXukwww3wYnjkPudmyY3kwki8cY,33308
101
+ seam/watcher/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
102
+ seam/watcher/__main__.py,sha256=MAZjLvh1yz6SRJdmrPWLURPgkKSeMkojUWHvtRY8V10,1562
103
+ seam/watcher/daemon.py,sha256=ilWLgBK7DyBin-JjAxDh7HN75_j5tlRCoFiU0gP8k40,9693
104
+ seam/_data/schema.sql,sha256=HJpdUW5259H99yG_LZwtVY34ybxoWNairg6nKXqzbbc,15479
105
+ seam_code-0.3.0.dist-info/METADATA,sha256=keQ9CVLtEXfrITQWL9V585vtlJ5fEEgQjvHAZgAebXk,18867
106
+ seam_code-0.3.0.dist-info/WHEEL,sha256=mffPy8wBnZQn2VnJUU5jE99KsxaSfiyMHV9Yt0aLVxs,87
107
+ seam_code-0.3.0.dist-info/entry_points.txt,sha256=ErD4FACf0TiYOhgbmX7yXhZCUWvebiIzf_3oCm8Sdt4,43
108
+ seam_code-0.3.0.dist-info/licenses/LICENSE,sha256=GpurMICo48L6BNVAvM-AxpCj-8WKUHdkYKDQjbHvdRs,1070
109
+ seam_code-0.3.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.30.1
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ seam = seam.cli.main:app
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Jordi Catafal
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.