py2ls 0.2.7.4__tar.gz

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 (272) hide show
  1. py2ls-0.2.7.4/PKG-INFO +576 -0
  2. py2ls-0.2.7.4/README.md +459 -0
  3. py2ls-0.2.7.4/py2ls/.DS_Store +0 -0
  4. py2ls-0.2.7.4/py2ls/.git/.DS_Store +0 -0
  5. py2ls-0.2.7.4/py2ls/.git/COMMIT_EDITMSG +1 -0
  6. py2ls-0.2.7.4/py2ls/.git/FETCH_HEAD +1 -0
  7. py2ls-0.2.7.4/py2ls/.git/HEAD +1 -0
  8. py2ls-0.2.7.4/py2ls/.git/config +16 -0
  9. py2ls-0.2.7.4/py2ls/.git/description +1 -0
  10. py2ls-0.2.7.4/py2ls/.git/hooks/applypatch-msg.sample +15 -0
  11. py2ls-0.2.7.4/py2ls/.git/hooks/commit-msg.sample +24 -0
  12. py2ls-0.2.7.4/py2ls/.git/hooks/fsmonitor-watchman.sample +174 -0
  13. py2ls-0.2.7.4/py2ls/.git/hooks/post-update.sample +8 -0
  14. py2ls-0.2.7.4/py2ls/.git/hooks/pre-applypatch.sample +14 -0
  15. py2ls-0.2.7.4/py2ls/.git/hooks/pre-commit.sample +49 -0
  16. py2ls-0.2.7.4/py2ls/.git/hooks/pre-merge-commit.sample +13 -0
  17. py2ls-0.2.7.4/py2ls/.git/hooks/pre-push.sample +53 -0
  18. py2ls-0.2.7.4/py2ls/.git/hooks/pre-rebase.sample +169 -0
  19. py2ls-0.2.7.4/py2ls/.git/hooks/pre-receive.sample +24 -0
  20. py2ls-0.2.7.4/py2ls/.git/hooks/prepare-commit-msg.sample +42 -0
  21. py2ls-0.2.7.4/py2ls/.git/hooks/push-to-checkout.sample +78 -0
  22. py2ls-0.2.7.4/py2ls/.git/hooks/update.sample +128 -0
  23. py2ls-0.2.7.4/py2ls/.git/index +0 -0
  24. py2ls-0.2.7.4/py2ls/.git/info/exclude +6 -0
  25. py2ls-0.2.7.4/py2ls/.git/logs/HEAD +22 -0
  26. py2ls-0.2.7.4/py2ls/.git/logs/refs/heads/main +22 -0
  27. py2ls-0.2.7.4/py2ls/.git/logs/refs/remotes/origin/HEAD +141 -0
  28. py2ls-0.2.7.4/py2ls/.git/logs/refs/remotes/origin/main +21 -0
  29. py2ls-0.2.7.4/py2ls/.git/objects/.DS_Store +0 -0
  30. py2ls-0.2.7.4/py2ls/.git/objects/01/d5bd8065e6860c0bd23ff9fa57161806a099e1 +0 -0
  31. py2ls-0.2.7.4/py2ls/.git/objects/09/08da26de58c114225ad81f484b80bf5d351b34 +0 -0
  32. py2ls-0.2.7.4/py2ls/.git/objects/0b/409e1bc918277010f5679b402d1d1dda53e15c +0 -0
  33. py2ls-0.2.7.4/py2ls/.git/objects/12/c2808a1b3a4d0892a4154dfba1e2ae3770fa73 +0 -0
  34. py2ls-0.2.7.4/py2ls/.git/objects/14/449a0e6ba4ea2f1a73acf63ef91c9c6193f9ed +4 -0
  35. py2ls-0.2.7.4/py2ls/.git/objects/15/a8e468aacfcb440e090020f36d0b985d45da23 +0 -0
  36. py2ls-0.2.7.4/py2ls/.git/objects/1a/b4585881a6a42889f01aa0cfe25fd5acfaf46f +0 -0
  37. py2ls-0.2.7.4/py2ls/.git/objects/1c/3f92adda34344bcbbbf9d409c79855ae2aaea8 +2 -0
  38. py2ls-0.2.7.4/py2ls/.git/objects/1c/9314c5f69b9390068a2a8616875d974849d71f +0 -0
  39. py2ls-0.2.7.4/py2ls/.git/objects/1d/fe9d9633b24ea560354f4f93d39c6e5f163ea0 +0 -0
  40. py2ls-0.2.7.4/py2ls/.git/objects/20/72c28e83f4347959d29f7b3a6c1fc3e4ee6b59 +0 -0
  41. py2ls-0.2.7.4/py2ls/.git/objects/24/6b368b986f758630c46dc02b7fa512b53422f7 +0 -0
  42. py2ls-0.2.7.4/py2ls/.git/objects/25/b796accd261b9135fd32a2c00785f68edf6c46 +0 -0
  43. py2ls-0.2.7.4/py2ls/.git/objects/27/aa6074f652bc6f7078f8647489d9ee8e24f0e2 +0 -0
  44. py2ls-0.2.7.4/py2ls/.git/objects/28/c2969d785c1b892c2a96b3f00eba63a59811b3 +0 -0
  45. py2ls-0.2.7.4/py2ls/.git/objects/2a/ae95d517d213b660bf4f65a4e0cfae7bb893eb +0 -0
  46. py2ls-0.2.7.4/py2ls/.git/objects/2a/fdf45791a26d42ccead35ace76a8f0b2a56561 +0 -0
  47. py2ls-0.2.7.4/py2ls/.git/objects/30/a2f8da47ee947811dc8d993f5a06a45de374f4 +0 -0
  48. py2ls-0.2.7.4/py2ls/.git/objects/32/fd627b62fad7cf3b2f9e34ab9777126a0987ad +0 -0
  49. py2ls-0.2.7.4/py2ls/.git/objects/34/9e31b6a3634cea102ce5588b98c11cc1738605 +0 -0
  50. py2ls-0.2.7.4/py2ls/.git/objects/34/b6f3a2ee84f39bed4eee57f2c0e0afb994feb1 +0 -0
  51. py2ls-0.2.7.4/py2ls/.git/objects/35/1a5f491ab97eee9d1ee699478d75a8bb5d3dc2 +0 -0
  52. py2ls-0.2.7.4/py2ls/.git/objects/36/b4a1b7403abc6c360f8fe2cb656ab945254971 +0 -0
  53. py2ls-0.2.7.4/py2ls/.git/objects/36/e56a361f526eafa59c5235a5c990bf288b5f9c +0 -0
  54. py2ls-0.2.7.4/py2ls/.git/objects/36/ef43e50009e59db11812c258846d9e38718173 +0 -0
  55. py2ls-0.2.7.4/py2ls/.git/objects/39/7ead045fbbcfb17c62019eb18fe21ed05dbee5 +0 -0
  56. py2ls-0.2.7.4/py2ls/.git/objects/39/b13be65125556784e44c7a1d9821703c7ab67e +0 -0
  57. py2ls-0.2.7.4/py2ls/.git/objects/3b/507acc7f23391644cc0b824b1e79fd2677a362 +0 -0
  58. py2ls-0.2.7.4/py2ls/.git/objects/3b/bd972aa7ad680858f8dfbd0f7fcd97756f0d6f +0 -0
  59. py2ls-0.2.7.4/py2ls/.git/objects/3c/bbe5f4173d165127b9ad96119f1ec24c306ffc +0 -0
  60. py2ls-0.2.7.4/py2ls/.git/objects/3d/9d10d27724657a436c65a6254bfd213d4b3562 +0 -0
  61. py2ls-0.2.7.4/py2ls/.git/objects/3f/d6561300938afbb3d11976cf9c8f29549280d9 +0 -0
  62. py2ls-0.2.7.4/py2ls/.git/objects/41/dcf4b3bf0460946b2da93776cf9e836d62178f +0 -0
  63. py2ls-0.2.7.4/py2ls/.git/objects/43/dbd49b2ee367c5434dd545e3b5795434f2ef0b +0 -0
  64. py2ls-0.2.7.4/py2ls/.git/objects/45/b1b6178bacbfc997811a998b5cc60c1ea7fac8 +0 -0
  65. py2ls-0.2.7.4/py2ls/.git/objects/47/6cbd5a7c5e35cddef2f8a38bdc4896d403b095 +0 -0
  66. py2ls-0.2.7.4/py2ls/.git/objects/48/a88fc5806305d0bb0755ee6801161b79696972 +2 -0
  67. py2ls-0.2.7.4/py2ls/.git/objects/4f/7afb40dff2153d857fc85748c2eecb85125042 +0 -0
  68. py2ls-0.2.7.4/py2ls/.git/objects/50/08ddfcf53c02e82d7eee2e57c38e5672ef89f6 +0 -0
  69. py2ls-0.2.7.4/py2ls/.git/objects/53/e0deb1cb4c2c606bced6e7f9a66b0fda60980d +0 -0
  70. py2ls-0.2.7.4/py2ls/.git/objects/56/e4e8b2d5545e0256090f45aa8fc42c5fe067d0 +0 -0
  71. py2ls-0.2.7.4/py2ls/.git/objects/57/63d0c52f5c9c69e89d514a1f96034947abe21a +0 -0
  72. py2ls-0.2.7.4/py2ls/.git/objects/57/bd1c0199483ab316235b094543b85edec6c35e +0 -0
  73. py2ls-0.2.7.4/py2ls/.git/objects/58/20a729045d4dc7e37ccaf8aa8eec126850afe2 +0 -0
  74. py2ls-0.2.7.4/py2ls/.git/objects/59/380c4c26bdcd4d9b71ae3e2e35f05b3f26c5ab +0 -0
  75. py2ls-0.2.7.4/py2ls/.git/objects/5a/192565abf89c9d765af846ce6d53a92b1ce7ad +0 -0
  76. py2ls-0.2.7.4/py2ls/.git/objects/60/f273eb1c412d916fa3f11318a7da7a9911b52a +0 -0
  77. py2ls-0.2.7.4/py2ls/.git/objects/61/570cec8c061abe74121f27f5face6c69b98f99 +0 -0
  78. py2ls-0.2.7.4/py2ls/.git/objects/62/4488173ed2c8936fa5cea3cf5dd3f26a30b86e +0 -0
  79. py2ls-0.2.7.4/py2ls/.git/objects/62/7c81b23b4e56e87b042b650b0103653cc9e34a +0 -0
  80. py2ls-0.2.7.4/py2ls/.git/objects/62/d90ccf8cbefdc2e4fd475e7c6f4f76e9fdf801 +3 -0
  81. py2ls-0.2.7.4/py2ls/.git/objects/63/100154b27846e8010e55b6bf4b3d7762c14c5f +0 -0
  82. py2ls-0.2.7.4/py2ls/.git/objects/64/27a4edff08f93d98f511418423f09f2ab90bcd +0 -0
  83. py2ls-0.2.7.4/py2ls/.git/objects/66/6227eeeba24073e63811e89f1449f3d958f183 +0 -0
  84. py2ls-0.2.7.4/py2ls/.git/objects/66/c998778721d424bd0aae80602dabbffa93af2e +0 -0
  85. py2ls-0.2.7.4/py2ls/.git/objects/68/6df3072c8b025fb18106ed2df505994ad062a9 +0 -0
  86. py2ls-0.2.7.4/py2ls/.git/objects/69/13c452ca319f7cbf6a0836dc10a5bb033c84e4 +0 -0
  87. py2ls-0.2.7.4/py2ls/.git/objects/6a/52e747a2b349b128d1490d9e896d2323818eb7 +0 -0
  88. py2ls-0.2.7.4/py2ls/.git/objects/6b/7fde264d93a7a0986d394c46c7650d0ce2ab92 +0 -0
  89. py2ls-0.2.7.4/py2ls/.git/objects/6c/cebb29b7f3f5b0c889f6dadbf9ff066554587d +0 -0
  90. py2ls-0.2.7.4/py2ls/.git/objects/6d/c2cdf4a84e538e5d4777486aeff87e42f41799 +2 -0
  91. py2ls-0.2.7.4/py2ls/.git/objects/6d/ee29dbdcc84edeeacede105110446f3ccac963 +0 -0
  92. py2ls-0.2.7.4/py2ls/.git/objects/71/36b2074a2754be8b58127d82250e5b37e3c373 +0 -0
  93. py2ls-0.2.7.4/py2ls/.git/objects/72/245a05b0966011cb381e6b32b0465000e969ab +0 -0
  94. py2ls-0.2.7.4/py2ls/.git/objects/72/e4179337639859678ddaecf38b16f33aaec8e1 +0 -0
  95. py2ls-0.2.7.4/py2ls/.git/objects/78/063f4c863fc371ec0313303c0a81283b35d9b6 +0 -0
  96. py2ls-0.2.7.4/py2ls/.git/objects/78/3d4167bc95c9d2175e0df03ef1c1c880ba75ab +0 -0
  97. py2ls-0.2.7.4/py2ls/.git/objects/79/7ae089b2212a937840e215276005ce76881307 +0 -0
  98. py2ls-0.2.7.4/py2ls/.git/objects/7e/5956c806b5edc344d46dab599dec337891ba1f +1 -0
  99. py2ls-0.2.7.4/py2ls/.git/objects/81/8f26b7bf042269729020cf944fc362d66ba27e +0 -0
  100. py2ls-0.2.7.4/py2ls/.git/objects/82/70b319ce4046854fbe7dc41054b6c2d112dab2 +0 -0
  101. py2ls-0.2.7.4/py2ls/.git/objects/84/59071b722a255b774a80b27746033f8141ab39 +0 -0
  102. py2ls-0.2.7.4/py2ls/.git/objects/85/aee46f478e9afdb84d50a05242c53b04ed2e21 +0 -0
  103. py2ls-0.2.7.4/py2ls/.git/objects/86/e288b46f8fe179907e4413f665aeb5053fddb1 +0 -0
  104. py2ls-0.2.7.4/py2ls/.git/objects/87/ef1fc3f7f1ddc4d0ab9b3e65381ce9f3388621 +0 -0
  105. py2ls-0.2.7.4/py2ls/.git/objects/8b/84f56978e1de8f2ae82abce5f8b3e182d365cd +0 -0
  106. py2ls-0.2.7.4/py2ls/.git/objects/8e/55a7d2b96184030211f20c9b9af201eefcac82 +0 -0
  107. py2ls-0.2.7.4/py2ls/.git/objects/91/c69ad88fe0ba94aa7859fb5f7edac5e6f1a3f7 +0 -0
  108. py2ls-0.2.7.4/py2ls/.git/objects/94/74152b4b463d70ae5ad07f0c658be3e296026b +0 -0
  109. py2ls-0.2.7.4/py2ls/.git/objects/94/f7dbe88e80c4205a901b71eb8f181974376bba +0 -0
  110. py2ls-0.2.7.4/py2ls/.git/objects/97/1aef09ea939f46b60b9646f8d524c78a9220f4 +0 -0
  111. py2ls-0.2.7.4/py2ls/.git/objects/9b/ec5ee2236ee2d5532c36bfd132e23c58fdb69c +0 -0
  112. py2ls-0.2.7.4/py2ls/.git/objects/9d/0df52899fe95279059286d9c0ec42287edc168 +0 -0
  113. py2ls-0.2.7.4/py2ls/.git/objects/a1/5389729850729fc7bd78a54f26fce77f30be12 +0 -0
  114. py2ls-0.2.7.4/py2ls/.git/objects/a1/906da89d1174f74867800c74c43af36253bd5e +0 -0
  115. py2ls-0.2.7.4/py2ls/.git/objects/a4/63fdd23e5efd713db8a71f316f3a1c7bd60916 +1 -0
  116. py2ls-0.2.7.4/py2ls/.git/objects/a5/ec8f74642fbba27f7ea78c53b372ae0c7dedce +0 -0
  117. py2ls-0.2.7.4/py2ls/.git/objects/a7/3e13eafee65c5b8d73ad2d3ea46d0eee82f0d3 +0 -0
  118. py2ls-0.2.7.4/py2ls/.git/objects/b0/56be4be89ba6b76949dd641df45bb7036050c8 +0 -0
  119. py2ls-0.2.7.4/py2ls/.git/objects/b0/9cd7856d58590578ee1a4f3ad45d1310a97f87 +0 -0
  120. py2ls-0.2.7.4/py2ls/.git/objects/b2/18e6a0f0f1c4df8cdefa9852058348abc713b7 +0 -0
  121. py2ls-0.2.7.4/py2ls/.git/objects/b3/4f7f271c6d6105e35a6556ffda71d03afe8c96 +0 -0
  122. py2ls-0.2.7.4/py2ls/.git/objects/b3/69579064bde9de9a19d114fc33e4e48cc8c0e4 +0 -0
  123. py2ls-0.2.7.4/py2ls/.git/objects/b5/61831c7dce8ea51e7ee6b6fa35745f14d8242d +0 -0
  124. py2ls-0.2.7.4/py2ls/.git/objects/b7/2c9e75ab7d0afe594664650aa8f6c772f5ac64 +0 -0
  125. py2ls-0.2.7.4/py2ls/.git/objects/bb/81ccc0513f18fc160b54a82861e9a80d23f4f6 +0 -0
  126. py2ls-0.2.7.4/py2ls/.git/objects/bb/934eb33bc1a8b85630bf680caffd99560c1b8f +0 -0
  127. py2ls-0.2.7.4/py2ls/.git/objects/bf/67907e337021ebff434e02b19b30a741c144af +0 -0
  128. py2ls-0.2.7.4/py2ls/.git/objects/bf/b54d65922ce1dfda1aaa014913a54e7172d0bc +0 -0
  129. py2ls-0.2.7.4/py2ls/.git/objects/c1/20fc812b9ad311c34a3608512d6a9d976bb48e +0 -0
  130. py2ls-0.2.7.4/py2ls/.git/objects/c1/397c6ed72c4e20ef6b9ab83163e9a6baba5b45 +0 -0
  131. py2ls-0.2.7.4/py2ls/.git/objects/c4/cba65f1163661999ee4b8ed23342b63bc1300c +0 -0
  132. py2ls-0.2.7.4/py2ls/.git/objects/c6/7f17e5707313600efcb85e9a3fedea35dba591 +0 -0
  133. py2ls-0.2.7.4/py2ls/.git/objects/c6/f32aced880bd165a251cb52b26b0c1107e2141 +0 -0
  134. py2ls-0.2.7.4/py2ls/.git/objects/cc/45df1d317a2eb63ff1ff3a5f3b4a9f98fd92b5 +0 -0
  135. py2ls-0.2.7.4/py2ls/.git/objects/cd/822b3574a88ebdd1ed82fd6983f37e626d52b4 +0 -0
  136. py2ls-0.2.7.4/py2ls/.git/objects/cf/0c0d9c6fb09473aaeb7f7e2edbd770c3f2ef3d +1 -0
  137. py2ls-0.2.7.4/py2ls/.git/objects/d2/992df305f4b56a466a2f221aeb182ddd20f418 +0 -0
  138. py2ls-0.2.7.4/py2ls/.git/objects/d6/39e8af592cd75a318d8affddd1bcc70c2095f2 +0 -0
  139. py2ls-0.2.7.4/py2ls/.git/objects/d6/9ab1c4aadf279936dd778e8346ba60f74705b6 +0 -0
  140. py2ls-0.2.7.4/py2ls/.git/objects/d8/4688b54c0040a30976b3a6540bc47adf7ce680 +0 -0
  141. py2ls-0.2.7.4/py2ls/.git/objects/d9/005f2cc7fc4e65f14ed5518276007c08cf2fd0 +0 -0
  142. py2ls-0.2.7.4/py2ls/.git/objects/d9/c2403fd166ce791b4e9d0c6792ed8342c71fcd +0 -0
  143. py2ls-0.2.7.4/py2ls/.git/objects/d9/dfa5aee51e92a541b707e8e7baea6f06deff98 +0 -0
  144. py2ls-0.2.7.4/py2ls/.git/objects/db/141dbaa93594df2a8156182f361ee4db829359 +0 -0
  145. py2ls-0.2.7.4/py2ls/.git/objects/db/3f2cd643292057936230b95cf7ec3046affe11 +0 -0
  146. py2ls-0.2.7.4/py2ls/.git/objects/db/ffa8ea7bda721d0cee7b9e4ce5b2ef927733ff +0 -0
  147. py2ls-0.2.7.4/py2ls/.git/objects/dc/c2bdbafb3296e09d9ee4955cfa55d275825f94 +5 -0
  148. py2ls-0.2.7.4/py2ls/.git/objects/dc/cdbd4266765d840be2ae35ab1752a0fa312c16 +0 -0
  149. py2ls-0.2.7.4/py2ls/.git/objects/dd/87fb5f606fe380d81e6fe3a2c98f9f99e3e09b +0 -0
  150. py2ls-0.2.7.4/py2ls/.git/objects/de/214c626ac2dd2685bfaa0bc0fc20f528d014d7 +0 -0
  151. py2ls-0.2.7.4/py2ls/.git/objects/df/e0770424b2a19faf507a501ebfc23be8f54e7b +0 -0
  152. py2ls-0.2.7.4/py2ls/.git/objects/e2/f2f8f4c25e62a297fc55f36acc6b01cfbab76f +3 -0
  153. py2ls-0.2.7.4/py2ls/.git/objects/e3/1356f90ea6dd0577b5e0b40b206319adcbf085 +0 -0
  154. py2ls-0.2.7.4/py2ls/.git/objects/e3/5a4dafc50850cacac7bf76c56db2715cbda2c4 +0 -0
  155. py2ls-0.2.7.4/py2ls/.git/objects/e4/6c715352db9fe3c887a635f1916df4ca1f4ff9 +0 -0
  156. py2ls-0.2.7.4/py2ls/.git/objects/e5/0580a0bd1e1b3d29f834382b80fceb61d5cf0c +0 -0
  157. py2ls-0.2.7.4/py2ls/.git/objects/e9/391ffe371f1cc43b42ef09b705d9c767c2e14f +0 -0
  158. py2ls-0.2.7.4/py2ls/.git/objects/ea/3a18cc75e53792744ef754e05d3f4481768c13 +0 -0
  159. py2ls-0.2.7.4/py2ls/.git/objects/ec/40fd8bf8e4c342534a9fc020289e402ba6bc9d +0 -0
  160. py2ls-0.2.7.4/py2ls/.git/objects/ec/d980279432b13f0374b90ca439a6329cdece0f +0 -0
  161. py2ls-0.2.7.4/py2ls/.git/objects/ee/cee64eacaff022dcdc509c0c2b1da492f21060 +0 -0
  162. py2ls-0.2.7.4/py2ls/.git/objects/f1/e50757fddc28b445545dc7e2759b54cdd0f42e +0 -0
  163. py2ls-0.2.7.4/py2ls/.git/objects/f4/b64d3107b39e3ad6f540c6607004ea34e6c024 +0 -0
  164. py2ls-0.2.7.4/py2ls/.git/objects/f4/ba7f815b886797b73fede071d86e0c134d2bc7 +0 -0
  165. py2ls-0.2.7.4/py2ls/.git/objects/f5/61c3c1bf1c9ea9c9d1f556a7be2869f71f3bdf +0 -0
  166. py2ls-0.2.7.4/py2ls/.git/objects/f6/44a8ff56fa035105fc517cbb1ac46c3d8e349a +0 -0
  167. py2ls-0.2.7.4/py2ls/.git/objects/f7/c98ba5c2f903e603b1f5e63d49fbc8a43815cc +0 -0
  168. py2ls-0.2.7.4/py2ls/.git/objects/f9/045a08e96eb76848fc4d68e3e3e687cca39a2d +0 -0
  169. py2ls-0.2.7.4/py2ls/.git/objects/fa/147e6bb78a2e8db241d231295fd7f1ed061af8 +0 -0
  170. py2ls-0.2.7.4/py2ls/.git/objects/fc/292e793ecfd42240ac43be407023bd731fa9e7 +0 -0
  171. py2ls-0.2.7.4/py2ls/.git/refs/.DS_Store +0 -0
  172. py2ls-0.2.7.4/py2ls/.git/refs/heads/main +1 -0
  173. py2ls-0.2.7.4/py2ls/.git/refs/remotes/origin/HEAD +1 -0
  174. py2ls-0.2.7.4/py2ls/.git/refs/remotes/origin/main +1 -0
  175. py2ls-0.2.7.4/py2ls/.gitattributes +2 -0
  176. py2ls-0.2.7.4/py2ls/.gitignore +152 -0
  177. py2ls-0.2.7.4/py2ls/ImageLoader.py +621 -0
  178. py2ls-0.2.7.4/py2ls/LICENSE +201 -0
  179. py2ls-0.2.7.4/py2ls/README.md +454 -0
  180. py2ls-0.2.7.4/py2ls/__init__.py +10 -0
  181. py2ls-0.2.7.4/py2ls/batman.py +352 -0
  182. py2ls-0.2.7.4/py2ls/bio.py +2595 -0
  183. py2ls-0.2.7.4/py2ls/brain_atlas.py +145 -0
  184. py2ls-0.2.7.4/py2ls/cell_image_clf.py +1632 -0
  185. py2ls-0.2.7.4/py2ls/chat.py +124 -0
  186. py2ls-0.2.7.4/py2ls/corr.py +475 -0
  187. py2ls-0.2.7.4/py2ls/correlators.py +475 -0
  188. py2ls-0.2.7.4/py2ls/data/.DS_Store +0 -0
  189. py2ls-0.2.7.4/py2ls/data/__pycache__/hyper_param_tabrepo_2024.cpython-312.pyc +0 -0
  190. py2ls-0.2.7.4/py2ls/data/db2ls_sql_chtsht.json +39 -0
  191. py2ls-0.2.7.4/py2ls/data/docs_links.json +865 -0
  192. py2ls-0.2.7.4/py2ls/data/email/email_html_template.html +88 -0
  193. py2ls-0.2.7.4/py2ls/data/hyper_param_autogluon_zeroshot2024.json +2383 -0
  194. py2ls-0.2.7.4/py2ls/data/hyper_param_tabrepo_2024.py +1753 -0
  195. py2ls-0.2.7.4/py2ls/data/lang_code_iso639.json +97 -0
  196. py2ls-0.2.7.4/py2ls/data/mygenes_fields_241022.txt +355 -0
  197. py2ls-0.2.7.4/py2ls/data/re_common_pattern.json +173 -0
  198. py2ls-0.2.7.4/py2ls/data/sns_info.json +74 -0
  199. py2ls-0.2.7.4/py2ls/data/styles/.DS_Store +0 -0
  200. py2ls-0.2.7.4/py2ls/data/styles/example/.DS_Store +0 -0
  201. py2ls-0.2.7.4/py2ls/data/styles/example/style1.pdf +0 -0
  202. py2ls-0.2.7.4/py2ls/data/styles/example/style2.pdf +0 -0
  203. py2ls-0.2.7.4/py2ls/data/styles/example/style3.pdf +0 -0
  204. py2ls-0.2.7.4/py2ls/data/styles/example/style4.pdf +0 -0
  205. py2ls-0.2.7.4/py2ls/data/styles/example/style5.pdf +0 -0
  206. py2ls-0.2.7.4/py2ls/data/styles/example/style6.pdf +0 -0
  207. py2ls-0.2.7.4/py2ls/data/styles/example/style7.pdf +0 -0
  208. py2ls-0.2.7.4/py2ls/data/styles/example/style8.pdf +0 -0
  209. py2ls-0.2.7.4/py2ls/data/styles/example/style9.pdf +0 -0
  210. py2ls-0.2.7.4/py2ls/data/styles/style1.json +145 -0
  211. py2ls-0.2.7.4/py2ls/data/styles/style10.json +213 -0
  212. py2ls-0.2.7.4/py2ls/data/styles/style11.json +213 -0
  213. py2ls-0.2.7.4/py2ls/data/styles/style12.json +192 -0
  214. py2ls-0.2.7.4/py2ls/data/styles/style2.json +146 -0
  215. py2ls-0.2.7.4/py2ls/data/styles/style3.json +146 -0
  216. py2ls-0.2.7.4/py2ls/data/styles/style4.json +142 -0
  217. py2ls-0.2.7.4/py2ls/data/styles/style5.json +142 -0
  218. py2ls-0.2.7.4/py2ls/data/styles/style6.json +153 -0
  219. py2ls-0.2.7.4/py2ls/data/styles/style7.json +201 -0
  220. py2ls-0.2.7.4/py2ls/data/styles/style8.json +199 -0
  221. py2ls-0.2.7.4/py2ls/data/styles/style9.json +215 -0
  222. py2ls-0.2.7.4/py2ls/data/styles/stylelib/.DS_Store +0 -0
  223. py2ls-0.2.7.4/py2ls/data/styles/stylelib/grid.mplstyle +15 -0
  224. py2ls-0.2.7.4/py2ls/data/styles/stylelib/high-contrast.mplstyle +6 -0
  225. py2ls-0.2.7.4/py2ls/data/styles/stylelib/high-vis.mplstyle +4 -0
  226. py2ls-0.2.7.4/py2ls/data/styles/stylelib/ieee.mplstyle +15 -0
  227. py2ls-0.2.7.4/py2ls/data/styles/stylelib/light.mplstyl +6 -0
  228. py2ls-0.2.7.4/py2ls/data/styles/stylelib/muted.mplstyle +6 -0
  229. py2ls-0.2.7.4/py2ls/data/styles/stylelib/nature-reviews-latex.mplstyle +616 -0
  230. py2ls-0.2.7.4/py2ls/data/styles/stylelib/nature-reviews.mplstyle +616 -0
  231. py2ls-0.2.7.4/py2ls/data/styles/stylelib/nature.mplstyle +31 -0
  232. py2ls-0.2.7.4/py2ls/data/styles/stylelib/no-latex.mplstyle +10 -0
  233. py2ls-0.2.7.4/py2ls/data/styles/stylelib/notebook.mplstyle +36 -0
  234. py2ls-0.2.7.4/py2ls/data/styles/stylelib/paper.mplstyle +290 -0
  235. py2ls-0.2.7.4/py2ls/data/styles/stylelib/paper2.mplstyle +305 -0
  236. py2ls-0.2.7.4/py2ls/data/styles/stylelib/retro.mplstyle +4 -0
  237. py2ls-0.2.7.4/py2ls/data/styles/stylelib/sans.mplstyle +10 -0
  238. py2ls-0.2.7.4/py2ls/data/styles/stylelib/scatter.mplstyle +7 -0
  239. py2ls-0.2.7.4/py2ls/data/styles/stylelib/science.mplstyle +48 -0
  240. py2ls-0.2.7.4/py2ls/data/styles/stylelib/std-colors.mplstyle +4 -0
  241. py2ls-0.2.7.4/py2ls/data/styles/stylelib/vibrant.mplstyle +6 -0
  242. py2ls-0.2.7.4/py2ls/data/tiles.csv +146 -0
  243. py2ls-0.2.7.4/py2ls/data/usages_pd.json +1417 -0
  244. py2ls-0.2.7.4/py2ls/data/usages_sns.json +31 -0
  245. py2ls-0.2.7.4/py2ls/db2ls.py +356 -0
  246. py2ls-0.2.7.4/py2ls/doc.py +106 -0
  247. py2ls-0.2.7.4/py2ls/docker2ls.py +656 -0
  248. py2ls-0.2.7.4/py2ls/ec2ls.py +61 -0
  249. py2ls-0.2.7.4/py2ls/export_requirements.py +71 -0
  250. py2ls-0.2.7.4/py2ls/fetch_update.py +145 -0
  251. py2ls-0.2.7.4/py2ls/freqanalysis.py +800 -0
  252. py2ls-0.2.7.4/py2ls/ich2ls.py +2249 -0
  253. py2ls-0.2.7.4/py2ls/im2.py +8242 -0
  254. py2ls-0.2.7.4/py2ls/image_ml2ls.py +2100 -0
  255. py2ls-0.2.7.4/py2ls/ips.py +34354 -0
  256. py2ls-0.2.7.4/py2ls/ml2ls.py +7700 -0
  257. py2ls-0.2.7.4/py2ls/mol.py +289 -0
  258. py2ls-0.2.7.4/py2ls/netfinder.py +2066 -0
  259. py2ls-0.2.7.4/py2ls/nl2ls.py +283 -0
  260. py2ls-0.2.7.4/py2ls/ocr.py +1996 -0
  261. py2ls-0.2.7.4/py2ls/plot.py +12473 -0
  262. py2ls-0.2.7.4/py2ls/rna2ls.py +311 -0
  263. py2ls-0.2.7.4/py2ls/setuptools-70.1.0-py3-none-any.whl +0 -0
  264. py2ls-0.2.7.4/py2ls/sleep_events_detectors.py +1359 -0
  265. py2ls-0.2.7.4/py2ls/stats.py +906 -0
  266. py2ls-0.2.7.4/py2ls/temp20251124.py +509 -0
  267. py2ls-0.2.7.4/py2ls/translator.py +1000 -0
  268. py2ls-0.2.7.4/py2ls/utils/__pycache__/decorators.cpython-312.pyc +0 -0
  269. py2ls-0.2.7.4/py2ls/utils/decorators.py +3564 -0
  270. py2ls-0.2.7.4/py2ls/utils_bio.py +3453 -0
  271. py2ls-0.2.7.4/py2ls/wb_detector.py +169 -0
  272. py2ls-0.2.7.4/pyproject.toml +210 -0
py2ls-0.2.7.4/PKG-INFO ADDED
@@ -0,0 +1,576 @@
1
+ Metadata-Version: 2.1
2
+ Name: py2ls
3
+ Version: 0.2.7.4
4
+ Summary: py(thon)2(too)ls
5
+ Author: Jianfeng
6
+ Author-email: Jianfeng.Liu0413@gmail.com
7
+ Requires-Python: >=3.5,<4.0
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: Programming Language :: Python :: 3.5
10
+ Classifier: Programming Language :: Python :: 3.6
11
+ Classifier: Programming Language :: Python :: 3.7
12
+ Classifier: Programming Language :: Python :: 3.8
13
+ Classifier: Programming Language :: Python :: 3.9
14
+ Classifier: Programming Language :: Python :: 3.10
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Provides-Extra: full
18
+ Provides-Extra: light
19
+ Provides-Extra: ml
20
+ Provides-Extra: neuroscience
21
+ Provides-Extra: superlight
22
+ Requires-Dist: GEOparse (>=2.0.4) ; extra == "full"
23
+ Requires-Dist: Pillow (>=11.2.1) ; extra == "full" or extra == "superlight" or extra == "light"
24
+ Requires-Dist: PyYAML (>=6.0.1) ; extra == "full" or extra == "superlight" or extra == "light"
25
+ Requires-Dist: SQLAlchemy (>=2.0.37) ; extra == "full"
26
+ Requires-Dist: adjustText (>=1.3.0) ; extra == "full" or extra == "superlight" or extra == "light"
27
+ Requires-Dist: autogluon (>=1.2) ; extra == "full" or extra == "ml"
28
+ Requires-Dist: beautifulsoup4 (>=4.12.3) ; extra == "full" or extra == "light"
29
+ Requires-Dist: catboost (>=1.2.8) ; extra == "full" or extra == "ml"
30
+ Requires-Dist: category_encoders (>=2.8.1) ; extra == "full"
31
+ Requires-Dist: chardet (>=3.0.4) ; extra == "full" or extra == "superlight" or extra == "light"
32
+ Requires-Dist: cryptography (>=45.0.3) ; extra == "full" or extra == "superlight" or extra == "light"
33
+ Requires-Dist: cycler (>=0.12.1) ; extra == "full" or extra == "superlight" or extra == "light"
34
+ Requires-Dist: docx2pdf (>=0.1.8) ; extra == "full" or extra == "superlight" or extra == "light"
35
+ Requires-Dist: fake-useragent (>=1.5.1) ; extra == "full" or extra == "light"
36
+ Requires-Dist: folium (>=0.19.6) ; extra == "full"
37
+ Requires-Dist: fpdf (>=1.7.2) ; extra == "full" or extra == "superlight" or extra == "light"
38
+ Requires-Dist: fuzzywuzzy (>=0.18.0) ; extra == "full" or extra == "superlight" or extra == "light"
39
+ Requires-Dist: geopy (>=2.4.1) ; extra == "full"
40
+ Requires-Dist: gseapy (>=1.1.8) ; extra == "full"
41
+ Requires-Dist: gtts (>=2.5.4) ; extra == "full"
42
+ Requires-Dist: hdbscan (>=0.8.40) ; extra == "full"
43
+ Requires-Dist: imagecodecs (>=2025.3.30) ; extra == "ml"
44
+ Requires-Dist: img2pdf (>=0.5.1) ; extra == "full"
45
+ Requires-Dist: ipykernel (>=6.29.4) ; extra == "full" or extra == "superlight" or extra == "light"
46
+ Requires-Dist: ipython (>=8.26.0) ; extra == "full" or extra == "light"
47
+ Requires-Dist: langdetect (>=1.0.9) ; extra == "full"
48
+ Requires-Dist: lightgbm (>=4.6.0) ; extra == "full" or extra == "ml"
49
+ Requires-Dist: lxml (>=5.3.0) ; extra == "full" or extra == "superlight" or extra == "light"
50
+ Requires-Dist: matplotlib (>=3.9.1) ; extra == "full" or extra == "superlight" or extra == "light"
51
+ Requires-Dist: matplotlib-venn (>=1.1.2) ; extra == "full"
52
+ Requires-Dist: mne (>=1.6.1) ; extra == "neuroscience"
53
+ Requires-Dist: msoffcrypto-tool (>=5.4.2) ; extra == "full" or extra == "superlight" or extra == "light"
54
+ Requires-Dist: neo (>=0.13.1) ; extra == "neuroscience"
55
+ Requires-Dist: networkx (>=3.3) ; extra == "full" or extra == "superlight" or extra == "light"
56
+ Requires-Dist: nltk (>=3.8.1) ; extra == "full" or extra == "light"
57
+ Requires-Dist: numerizer (>=0.2.3) ; extra == "full" or extra == "superlight" or extra == "light"
58
+ Requires-Dist: numpy (>=1.26.4,<2.0.0) ; extra == "full" or extra == "superlight" or extra == "light"
59
+ Requires-Dist: opencv-python-headless (>=4.10.0.84) ; extra == "full"
60
+ Requires-Dist: openlocationcode (>=1.0.1) ; extra == "full"
61
+ Requires-Dist: openpyxl (>=3.1.5) ; extra == "full" or extra == "superlight" or extra == "light"
62
+ Requires-Dist: paddleocr (>=2.9.1,<3.0.0) ; extra == "full" or extra == "light"
63
+ Requires-Dist: pandas (>=2.2.2) ; extra == "full" or extra == "superlight" or extra == "light"
64
+ Requires-Dist: pdf2image (>=1.17.0) ; extra == "full"
65
+ Requires-Dist: phonenumbers (>=8.13.51) ; extra == "full"
66
+ Requires-Dist: pingouin (>=0.5.4) ; extra == "full" or extra == "superlight" or extra == "light"
67
+ Requires-Dist: pixels2svg (>=0.2.2) ; extra == "full"
68
+ Requires-Dist: premailer (>=3.10.0) ; extra == "full" or extra == "light"
69
+ Requires-Dist: psutil (>=5.9.8) ; extra == "full" or extra == "superlight" or extra == "light"
70
+ Requires-Dist: py-cpuinfo (>=9.0.0) ; extra == "superlight" or extra == "light"
71
+ Requires-Dist: py7zr (>=0.22.0) ; extra == "full"
72
+ Requires-Dist: pyautogui (>=0.9.54) ; extra == "full"
73
+ Requires-Dist: pycryptodome (>=3.23.0) ; extra == "full"
74
+ Requires-Dist: pydeck (>=0.9.1) ; extra == "full"
75
+ Requires-Dist: pymupdf (>=1.26.1) ; extra == "full" or extra == "superlight" or extra == "light"
76
+ Requires-Dist: pypdf (>=5.6.1) ; extra == "light"
77
+ Requires-Dist: pyperclip (>=1.9.0) ; extra == "full"
78
+ Requires-Dist: pypinyin (>=0.54.0) ; extra == "full"
79
+ Requires-Dist: pytest (>=8.3.3) ; extra == "full" or extra == "superlight" or extra == "light"
80
+ Requires-Dist: python-box (>=7.2.0) ; extra == "full" or extra == "light"
81
+ Requires-Dist: python-dateutil (>=2.9.0.post0) ; extra == "full" or extra == "superlight" or extra == "light"
82
+ Requires-Dist: python-docx (>=1.1.2) ; extra == "full" or extra == "superlight" or extra == "light"
83
+ Requires-Dist: pytz (>=2024.1) ; extra == "full" or extra == "superlight" or extra == "light"
84
+ Requires-Dist: pyvis (>=0.3.2) ; extra == "full"
85
+ Requires-Dist: qrcode (>=8.2) ; extra == "full" or extra == "superlight" or extra == "light"
86
+ Requires-Dist: rarfile (>=4.2) ; extra == "full"
87
+ Requires-Dist: realesrgan (>=0.3.0) ; extra == "full"
88
+ Requires-Dist: regex (>=2024.5.15) ; extra == "full" or extra == "superlight" or extra == "light"
89
+ Requires-Dist: rembg (>=2.0.57) ; extra == "full"
90
+ Requires-Dist: requests (>=2.32.3) ; extra == "full" or extra == "light"
91
+ Requires-Dist: schedule (>=1.2.2) ; extra == "full"
92
+ Requires-Dist: scikit-image (>=0.23.2) ; extra == "full"
93
+ Requires-Dist: scikit-learn (>=1.5.1) ; extra == "full" or extra == "ml"
94
+ Requires-Dist: scipy (>=1.14.0) ; extra == "full" or extra == "superlight" or extra == "light"
95
+ Requires-Dist: seaborn (>=0.13.2) ; extra == "full" or extra == "superlight" or extra == "light"
96
+ Requires-Dist: selenium (>=4.23.1) ; extra == "full" or extra == "light"
97
+ Requires-Dist: setuptools (>=72.1.0) ; extra == "full" or extra == "superlight" or extra == "light"
98
+ Requires-Dist: skimpy (>=0.0.15) ; extra == "full"
99
+ Requires-Dist: skorch (>=1.0.0) ; extra == "full" or extra == "ml"
100
+ Requires-Dist: statsmodels (>=0.14.2) ; extra == "full"
101
+ Requires-Dist: streamlit (>=1.41.0) ; extra == "full"
102
+ Requires-Dist: streamlit-folium (>=0.25.0) ; extra == "full"
103
+ Requires-Dist: striprtf (>=0.0.29) ; extra == "full"
104
+ Requires-Dist: symspellpy (>=6.9.0) ; extra == "full"
105
+ Requires-Dist: tensorflow (>=2.19.0) ; extra == "full" or extra == "ml"
106
+ Requires-Dist: textblob (>=0.18.0.post0) ; extra == "full" or extra == "superlight" or extra == "light"
107
+ Requires-Dist: tifffile (>=2024.12.12) ; extra == "ml"
108
+ Requires-Dist: torch (>=2.4.0) ; extra == "full" or extra == "ml"
109
+ Requires-Dist: tqdm (>=4.66.4) ; extra == "full" or extra == "light"
110
+ Requires-Dist: umap (>=0.1.1) ; extra == "full"
111
+ Requires-Dist: validators (>=0.35.0) ; extra == "full"
112
+ Requires-Dist: venn (>=0.1.3) ; extra == "full"
113
+ Requires-Dist: webdriver-manager (>=4.0.1) ; extra == "full" or extra == "light"
114
+ Requires-Dist: xgboost (>=3.0.2) ; extra == "full" or extra == "ml"
115
+ Description-Content-Type: text/markdown
116
+
117
+ # Install
118
+
119
+ ```python
120
+ pip install py2ls
121
+
122
+
123
+ - Minimal version: pip install py2ls
124
+ - Light version: pip install py2ls[light]
125
+ - Full version: pip install py2ls[full]
126
+ - Or any combination like pip install py2ls[full,ml]
127
+ ```
128
+
129
+
130
+ # ips
131
+
132
+ ### listdir, basename, dirname, newfolder, finfo
133
+
134
+ e.g.,
135
+
136
+ ```python
137
+ fpath = "....../"
138
+ ips.listdir(fpath, kind='pdf', sort_by="size", ascending=0, output = 'df')
139
+ ```
140
+
141
+ it filters the ‘.pdf’ files, and sort by the (file-size/name, length of name, create_time, mod_time, last_open_time …) it returns a DataFrame or BoxList (setting by ‘output’)
142
+
143
+ ```python
144
+ dir_data, dir_fig = newfolder(fpath, {'data', 'fig'}) # create folder
145
+ ```
146
+
147
+ ```python
148
+ finfo(fpath) # get info: size, creation time, mod time, parent_path, fname, kind...
149
+ ```
150
+
151
+ ```python
152
+ dir_lib(lib_of_interest) # get the fpath
153
+ ```
154
+
155
+
156
+
157
+ ### list_func/func_list (same)
158
+
159
+ list functions in a package
160
+
161
+ ### fload, fsave, figsave
162
+
163
+ e.g.,
164
+
165
+ ```python
166
+ fload(fpath, kind=None, **kwargs)
167
+ ```
168
+
169
+ load file (docx, pdf, image, md, json,csv,txt, html, yaml, xml, xlsx…) or save file.
170
+
171
+ ```python
172
+ # figsave, as used in matlab.
173
+ figsave(dir_save, "fname.pdf", dpi=300)
174
+ ```
175
+
176
+
177
+
178
+ ### pdf2img, img2pdf, docx2pdf
179
+
180
+ extract images from a PDF, or merge images into a pdf file
181
+
182
+ ```python
183
+ pdf2img(dir_pdf, dir_save=None, page=None, kind="png",verbose=True, **kws)
184
+ pdf2img(fpath, page=[None, None]) # means extract all pages
185
+ # processing page: 1
186
+ # processing page: 2
187
+ # processing page: 3
188
+ # processing page: 4
189
+ # processing page: 5
190
+
191
+ ```
192
+
193
+ ```python
194
+ img2pdf(dir_img, kind="jpeg",page=None, dir_save=None, page_size="a4", dpi=300)
195
+ ```
196
+
197
+ ```python
198
+ docx2pdf(dir_docx, dir_save) # convert docx to pdf
199
+ ```
200
+
201
+ ### paper_size
202
+
203
+ quickly get the size info
204
+
205
+ ```python
206
+ paper_size('a4') # [210, 297]
207
+ paper_size('card') # [85.6, 53.98]
208
+ ```
209
+
210
+
211
+
212
+ ### str2num, num2str, str2list
213
+
214
+ ```python
215
+ str2num(“123.345 dollers”,2)# => 123.35 (float)
216
+ ```
217
+
218
+ ```python
219
+ str2list("abcd") # ['a','b','c','d']
220
+ ```
221
+
222
+ ```python
223
+ list2str(['a','b','c','d']) # 'abcd'
224
+ ```
225
+
226
+ ### ssplit, sreplace
227
+
228
+ ```python
229
+ sreplace(text, dict_replace=None, robust=True)
230
+ ```
231
+
232
+ ```python
233
+ ssplit(text, by="space", verbose=False, **kws) # by = "word", "sentence", ", ","num_strings","digital".....,"length", "upper followed lower", "lower followed upper"
234
+ ```
235
+
236
+ ```python
237
+ text = "The most pronounced physiological changes in sleep occur in the brain.[10] The brain uses significantly less energy during sleep than it does when awake, especially during non-REM sleep. In areas with reduced activity, the brain restores its supply of adenosine triphosphate (ATP), the molecule used for short-term storage and transport of energy.[11] In quiet waking, the brain is responsible for 20% of the body's energy use, thus this reduction has a noticeable effect on overall energy consumption.[12]"
238
+ ssplit(text, by=["[10]", "[11]", "[12]"])
239
+ # ['The most pronounced physiological changes in sleep occur in the brain.',
240
+ # ' The brain uses significantly less energy during sleep than it does when awake, especially during non-REM sleep. In areas with reduced activity, the brain restores its supply of adenosine triphosphate (ATP), the molecule used for short-term storage and transport of energy.',
241
+ # " In quiet waking, the brain is responsible for 20% of the body's energy use, thus this reduction has a noticeable effect on overall energy consumption.",
242
+ # '']
243
+ ```
244
+
245
+ ```python
246
+ ssplit(text[:30], by="len", length=5)
247
+ # ['The m', 'ost p', 'ronou', 'nced ', 'physi', 'ologi']
248
+ ```
249
+
250
+ ```python
251
+ ssplit(text, by="non_alphanumeric")
252
+ # ['The most pronounced physiological changes in sleep occur in the brain.[',
253
+ # '10',
254
+ # '] The brain uses significantly less energy during sleep than it does when awake, especially during non-REM sleep. In areas with reduced activity, the brain restores its supply of adenosine triphosphate (ATP), the molecule used for short-term storage and transport of energy.[',
255
+ # '11',
256
+ # '] In quiet waking, the brain is responsible for ',
257
+ # '20',
258
+ # "% of the body's energy use, thus this reduction has a noticeable effect on overall energy consumption.[",
259
+ # '12',
260
+ # ']']
261
+ ```
262
+
263
+ ```python
264
+ ssplit(text, by="sent")
265
+ #['The most pronounced physiological changes in sleep occur in the brain.',
266
+ #'[10] The brain uses significantly less energy during sleep than it does when awake, especially during non-REM sleep.',
267
+ #'In areas with reduced activity, the brain restores its supply of adenosine triphosphate (ATP), the molecule used for short-term storage and transport of energy.',
268
+ #"[11] In quiet waking, the brain is responsible for 20% of the body's energy use, thus this reduction has a noticeable effect on overall energy consumption.",
269
+ #'[12]']
270
+ ```
271
+
272
+ ```python
273
+ ssplit(text, by="lowup")
274
+ # ["The most pronounced physiological changes in sleep occur in the brain.[10] The brain uses significantly less energy during sleep than it does when awake, especially during non-REM sleep. In areas with reduced activity, the brain restores its supply of adenosine triphosphate (ATP), the molecule used for short-term storage and transport of energy.[11] In quiet waking, the brain is responsible for 20% of the body's energy use, thus this reduction has a noticeable effect on overall energy consumption.[12]"]
275
+
276
+ ```
277
+
278
+ ```python
279
+ sreplace(text, dict_replace=None, robust=True)
280
+ ```
281
+
282
+ ```python
283
+ text= 'The most pronounced physiological changes in sleep occur in the brain.[10] '
284
+ 'The brain uses significantly less energy during sleep than it does when '
285
+ 'awake, especially during non-REM sleep. In areas with reduced activity, the '
286
+ 'brain restores its supply of adenosine triphosphate (ATP), the molecule used '
287
+ 'for short-term storage and transport of energy.[11] In quiet waking, the '
288
+ "brain is responsible for 20% of the body's energy use, thus this reduction "
289
+ 'has a noticeable effect on overall energy consumption.[12]'
290
+ sreplace(text)
291
+ "The most pronounced physiological changes in sleep occur in the brain"
292
+ sreplace(text,{"sleep":"wakewake"}) # sreplace(text,dict(sleep="wakewake"))
293
+ "The most pronounced physiological changes in wakewake occur in the brain."
294
+ ```
295
+
296
+ ### stats
297
+
298
+ #### **FuncCmpt** ( two groups cmp)
299
+
300
+ ```python
301
+ FuncCmpt(X1, X2, pmc='auto', pair='unpaired')
302
+ e.g.,
303
+ X1 = [19, 22, 16, 29, 24]
304
+ X2 = [20, 11, 17, 12, 22]
305
+ p, res = FumcCmpt(X1,X2, pmc='pmc', pair = 'unpair')
306
+ # normally distributed
307
+ # normally distributed
308
+ # unpaired t text
309
+ # t(8) = 1.81117, p=0.1077
310
+ p,res = FuncCmpt(x1,x2, pmc='pmc',pair='pair')
311
+ # paired t test
312
+ # t(4)=1.55556,p=0.19479
313
+ ```
314
+
315
+ #### FuncMultiCmpt ( multiple groups cmp)
316
+
317
+ ```python
318
+ FuncMultiCmpt(pmc='pmc', pair='unpair', data=None, dv=None, factor=None,
319
+ ss_type=2, detailed=True, effsize='np2',
320
+ correction='auto', between=None, within=None,
321
+ subject=None, group=None
322
+ )
323
+ ```
324
+
325
+ ```python
326
+ df = pd.DataFrame({'score': [64, 66, 68, 75, 78, 94, 98, 79, 71, 80,
327
+ 91, 92, 93, 90, 97, 94, 82, 88, 95, 96,
328
+ 79, 78, 88, 94, 92, 85, 83, 85, 82, 81],
329
+ 'group': np.repeat(['strat1', 'strat2', 'strat3'],repeats=10)})
330
+ res = FuncMultiCmpt(pmc='auto',pair='unpaired',data=df, dv='score', factor='group', group='group')
331
+ res["APA"]
332
+ # ['group:F(2, 17)=9.71719,p=0.0016']
333
+ ```
334
+
335
+ #### FuncStars
336
+
337
+ ```python
338
+ FuncStars(ax,
339
+ pval=None,
340
+ Ylim=None,
341
+ Xlim=None,
342
+ symbol='*',
343
+ yscale=0.95,
344
+ x1=0,
345
+ x2=1,
346
+ alpha=0.05,
347
+ fontsize=14,
348
+ fontsize_note=6,
349
+ rotation=0,
350
+ fontname='Arial',
351
+ values_below=None,
352
+ linego=True,
353
+ linestyle='-',
354
+ linecolor='k',
355
+ linewidth=.8,
356
+ nsshow='off',
357
+ symbolcolor='k',
358
+ tailindicator=[0.06, 0.06],
359
+ report=None,
360
+ report_scale=-0.1,
361
+ report_loc=None)
362
+
363
+
364
+
365
+ ```
366
+
367
+ ### plots
368
+
369
+ #### stdshade
370
+
371
+ ```python
372
+ stdshade(ax=None,*args, **kwargs)
373
+ ```
374
+
375
+ #### add_colorbar
376
+
377
+ ```python
378
+ add_colorbar(im, width=None, pad=None, **kwargs)
379
+ ```
380
+
381
+ #### get_color
382
+
383
+ ```python
384
+ get_color(n=1, cmap='auto')
385
+ ```
386
+
387
+ ```python
388
+ get_color(12)
389
+ # ['#474747',
390
+ # '#FF2C00',
391
+ # '#0C5DA5',
392
+ # '#845B97',
393
+ # '#58BBCC',
394
+ # '#FF9500',
395
+ # '#D57DBE',
396
+ # '#474747',
397
+ # '#FF2C00',
398
+ # '#0C5DA5',
399
+ # '#845B97',
400
+ # '#58BBCC']
401
+ ```
402
+
403
+ ```python
404
+ get_color(5, cmap="jet") # ['#000080', '#000084', '#000089', '#00008d', '#000092']
405
+ get_color(5,cmap="rainbow") #['#8000ff', '#7e03ff', '#7c06ff', '#7a09ff', '#780dff']
406
+ ```
407
+
408
+ #### img appearance
409
+
410
+ #### imgsets
411
+
412
+ ```python
413
+ imgsets(
414
+ img,
415
+ sets=None,
416
+ show=True,
417
+ show_axis=False,
418
+ size=None,
419
+ dpi=100,
420
+ figsize=None,
421
+ auto=False,
422
+ filter_kws=None,
423
+ )
424
+ ```
425
+
426
+ ```python
427
+ img = imgsets(
428
+ fpath,
429
+ sets={"rota": -5, "sharp": 10},
430
+ dpi=200,
431
+ # show_axis=True,
432
+ )
433
+ figsave(dir_save, "test1_sharp.pdf")
434
+
435
+
436
+ img2 = imgsets(
437
+ fpath,
438
+ sets={"rota": -5, "crop": [100, 100, 300, 400], "sharp": 10},
439
+ dpi=200,
440
+ filter_kws={
441
+ "sharpen": 10,
442
+ },
443
+ # show_axis=True,
444
+ )
445
+ figsave(dir_save, "test2_crop.pdf")
446
+ ```
447
+
448
+ ```python
449
+ fload(dir_img)
450
+ ```
451
+
452
+ ![image-20240613233304196](./README.assets/image-20240613233304196.png)
453
+
454
+ ```python
455
+ imgsets(img, sets={"color": 1.5}, show=0)
456
+ ```
457
+
458
+ ![image-20240613233356996](./README.assets/image-20240613233356996.png)
459
+
460
+ ```python
461
+ imgsets(img, sets={"pad": (300, 300), "bgcolor": (73, 162, 127)}, show=0)
462
+ ```
463
+
464
+ ![image-20240613233423144](./README.assets/image-20240613233423144.png)
465
+
466
+ ```python
467
+ imgsets(
468
+ img,
469
+ sets={"contrast": 1.3, "color": 1.5, "pad": (300, 300)},
470
+ show=0,
471
+ filter_kws=dict(sh=1050, EDG=10, gaus=5),
472
+ )
473
+ ```
474
+
475
+ ![image-20240613233503718](./README.assets/image-20240613233503718.png)
476
+
477
+ ```python
478
+ imgsets(
479
+ img,
480
+ sets={"color": 10.5},
481
+ show=0,
482
+ filter_kws=dict(EDGE_ENHANCE=50, EDGE_NHANCEmore=50),
483
+ )
484
+ ```
485
+
486
+ ![image-20240613233525291](./README.assets/image-20240613233525291.png)
487
+
488
+ ```python
489
+ imgsets(
490
+ img,
491
+ sets=dict(contr=1.5, rm="default"),
492
+ show=0,
493
+ # filter_kws=dict(sharp=1),
494
+ )
495
+ ```
496
+
497
+ ![image-20240613233554225](./README.assets/image-20240613233554225.png)
498
+
499
+ ```python
500
+ imgsets(
501
+ img,
502
+ sets=dict(contr=0, rm="default"),
503
+ show=0,
504
+ filter_kws=dict(sharp=1),
505
+ )
506
+ ```
507
+
508
+ ![image-20240613233611627](./README.assets/image-20240613233611627.png)
509
+
510
+ #### figsets
511
+
512
+ ```python
513
+ figsets(*args)
514
+ ```
515
+
516
+ ```python
517
+ cm = 1 / 2.54
518
+ # plt.style.use("paper")
519
+ plt.figure(figsize=[8 * cm, 5 * cm])
520
+ for i in range(2, 4):
521
+ plt.plot(x, y * i, ls="-")
522
+ figsets(
523
+ plt.gca(),
524
+ {
525
+ "xlabel": f"time([{x[0]}:{x[-1]}])",
526
+ "ylabel": "Amplitude (signals)",
527
+ # "titel": "paper",
528
+ "xlim": [0, 600],
529
+ "xtick": np.arange(0, 620, 150),
530
+ "xlabel": "test xticklabel",
531
+ # "ylim": [-2.5, 2.5],
532
+ "sp": "go",
533
+ # "style": "paper",
534
+ "box": ":",
535
+ "grid": "on",
536
+ "minorticks": "on",
537
+ "ticks": {"c": "k"},
538
+ },
539
+ )
540
+ figsets('style','paper')
541
+ ```
542
+
543
+ ```python
544
+ cm = 1/2.54 # centimeters in inches
545
+ fig, ax = plt.subplots(1, 1, figsize=(7*cm, 5*cm))
546
+ x = np.linspace(0, 2 * np.pi, 50) * 100
547
+ y = np.sin(x)
548
+ c=get_color(7)
549
+
550
+ for i in range(2,7):
551
+ plt.plot(x, y*i,c=c[i])
552
+ figsets(
553
+ ax,
554
+ {
555
+ "xlim": [0, 450],
556
+ # "ylim": [-1.5, 1.5],
557
+ "xlabel": "2222",
558
+ # "style":"paper",
559
+ "yticks": np.arange(-5,5, 2),
560
+ "ylabel": "ylabelsssss",
561
+ "xtkbel": range(0, 800, 100),
562
+ # "spine": 5,
563
+ "suptitle": "supertitle",
564
+ # "minorticks": "y",
565
+ # "ticksloc":"lt",
566
+ # "ticks": {"direction": "out",'c':'b'},
567
+ "rotation":45,
568
+ # 'box':"lt",
569
+ # "labellocation":'r',
570
+ # "ax_color":'b',
571
+ # 'grid':{"which":'minor','lw':1,"ls":'-.','c':'b','al':0.3},
572
+ },
573
+ )
574
+ ```
575
+
576
+