py2ls 0.1.10.10__tar.gz → 0.1.10.12__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 (220) hide show
  1. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/PKG-INFO +1 -1
  2. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/batman.py +2 -0
  3. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/ips.py +196 -31
  4. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/pyproject.toml +1 -1
  5. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/README.md +0 -0
  6. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.DS_Store +0 -0
  7. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/COMMIT_EDITMSG +0 -0
  8. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/FETCH_HEAD +0 -0
  9. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/HEAD +0 -0
  10. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/config +0 -0
  11. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/description +0 -0
  12. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/hooks/applypatch-msg.sample +0 -0
  13. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/hooks/commit-msg.sample +0 -0
  14. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/hooks/fsmonitor-watchman.sample +0 -0
  15. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/hooks/post-update.sample +0 -0
  16. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/hooks/pre-applypatch.sample +0 -0
  17. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/hooks/pre-commit.sample +0 -0
  18. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/hooks/pre-merge-commit.sample +0 -0
  19. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/hooks/pre-push.sample +0 -0
  20. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/hooks/pre-rebase.sample +0 -0
  21. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/hooks/pre-receive.sample +0 -0
  22. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/hooks/prepare-commit-msg.sample +0 -0
  23. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/hooks/push-to-checkout.sample +0 -0
  24. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/hooks/update.sample +0 -0
  25. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/index +0 -0
  26. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/info/exclude +0 -0
  27. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/logs/HEAD +0 -0
  28. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/logs/refs/heads/main +0 -0
  29. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/logs/refs/remotes/origin/HEAD +0 -0
  30. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/logs/refs/remotes/origin/main +0 -0
  31. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/01/d5bd8065e6860c0bd23ff9fa57161806a099e1 +0 -0
  32. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/09/08da26de58c114225ad81f484b80bf5d351b34 +0 -0
  33. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/0b/409e1bc918277010f5679b402d1d1dda53e15c +0 -0
  34. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/12/c2808a1b3a4d0892a4154dfba1e2ae3770fa73 +0 -0
  35. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/14/449a0e6ba4ea2f1a73acf63ef91c9c6193f9ed +0 -0
  36. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/15/a8e468aacfcb440e090020f36d0b985d45da23 +0 -0
  37. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/1a/b4585881a6a42889f01aa0cfe25fd5acfaf46f +0 -0
  38. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/1c/3f92adda34344bcbbbf9d409c79855ae2aaea8 +0 -0
  39. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/1c/9314c5f69b9390068a2a8616875d974849d71f +0 -0
  40. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/1d/fe9d9633b24ea560354f4f93d39c6e5f163ea0 +0 -0
  41. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/20/72c28e83f4347959d29f7b3a6c1fc3e4ee6b59 +0 -0
  42. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/24/6b368b986f758630c46dc02b7fa512b53422f7 +0 -0
  43. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/25/b796accd261b9135fd32a2c00785f68edf6c46 +0 -0
  44. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/27/aa6074f652bc6f7078f8647489d9ee8e24f0e2 +0 -0
  45. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/28/c2969d785c1b892c2a96b3f00eba63a59811b3 +0 -0
  46. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/2a/ae95d517d213b660bf4f65a4e0cfae7bb893eb +0 -0
  47. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/2a/fdf45791a26d42ccead35ace76a8f0b2a56561 +0 -0
  48. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/30/a2f8da47ee947811dc8d993f5a06a45de374f4 +0 -0
  49. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/32/fd627b62fad7cf3b2f9e34ab9777126a0987ad +0 -0
  50. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/34/9e31b6a3634cea102ce5588b98c11cc1738605 +0 -0
  51. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/34/b6f3a2ee84f39bed4eee57f2c0e0afb994feb1 +0 -0
  52. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/35/1a5f491ab97eee9d1ee699478d75a8bb5d3dc2 +0 -0
  53. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/36/b4a1b7403abc6c360f8fe2cb656ab945254971 +0 -0
  54. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/36/e56a361f526eafa59c5235a5c990bf288b5f9c +0 -0
  55. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/36/ef43e50009e59db11812c258846d9e38718173 +0 -0
  56. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/39/7ead045fbbcfb17c62019eb18fe21ed05dbee5 +0 -0
  57. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/39/b13be65125556784e44c7a1d9821703c7ab67e +0 -0
  58. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/3b/507acc7f23391644cc0b824b1e79fd2677a362 +0 -0
  59. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/3b/bd972aa7ad680858f8dfbd0f7fcd97756f0d6f +0 -0
  60. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/3c/bbe5f4173d165127b9ad96119f1ec24c306ffc +0 -0
  61. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/3d/9d10d27724657a436c65a6254bfd213d4b3562 +0 -0
  62. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/3f/d6561300938afbb3d11976cf9c8f29549280d9 +0 -0
  63. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/41/dcf4b3bf0460946b2da93776cf9e836d62178f +0 -0
  64. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/43/dbd49b2ee367c5434dd545e3b5795434f2ef0b +0 -0
  65. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/45/b1b6178bacbfc997811a998b5cc60c1ea7fac8 +0 -0
  66. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/47/6cbd5a7c5e35cddef2f8a38bdc4896d403b095 +0 -0
  67. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/48/a88fc5806305d0bb0755ee6801161b79696972 +0 -0
  68. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/4f/7afb40dff2153d857fc85748c2eecb85125042 +0 -0
  69. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/50/08ddfcf53c02e82d7eee2e57c38e5672ef89f6 +0 -0
  70. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/53/e0deb1cb4c2c606bced6e7f9a66b0fda60980d +0 -0
  71. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/56/e4e8b2d5545e0256090f45aa8fc42c5fe067d0 +0 -0
  72. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/57/63d0c52f5c9c69e89d514a1f96034947abe21a +0 -0
  73. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/57/bd1c0199483ab316235b094543b85edec6c35e +0 -0
  74. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/58/20a729045d4dc7e37ccaf8aa8eec126850afe2 +0 -0
  75. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/59/380c4c26bdcd4d9b71ae3e2e35f05b3f26c5ab +0 -0
  76. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/5a/192565abf89c9d765af846ce6d53a92b1ce7ad +0 -0
  77. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/60/f273eb1c412d916fa3f11318a7da7a9911b52a +0 -0
  78. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/61/570cec8c061abe74121f27f5face6c69b98f99 +0 -0
  79. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/62/4488173ed2c8936fa5cea3cf5dd3f26a30b86e +0 -0
  80. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/62/7c81b23b4e56e87b042b650b0103653cc9e34a +0 -0
  81. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/62/d90ccf8cbefdc2e4fd475e7c6f4f76e9fdf801 +0 -0
  82. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/63/100154b27846e8010e55b6bf4b3d7762c14c5f +0 -0
  83. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/64/27a4edff08f93d98f511418423f09f2ab90bcd +0 -0
  84. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/66/6227eeeba24073e63811e89f1449f3d958f183 +0 -0
  85. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/66/c998778721d424bd0aae80602dabbffa93af2e +0 -0
  86. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/68/6df3072c8b025fb18106ed2df505994ad062a9 +0 -0
  87. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/69/13c452ca319f7cbf6a0836dc10a5bb033c84e4 +0 -0
  88. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/6a/52e747a2b349b128d1490d9e896d2323818eb7 +0 -0
  89. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/6b/7fde264d93a7a0986d394c46c7650d0ce2ab92 +0 -0
  90. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/6c/cebb29b7f3f5b0c889f6dadbf9ff066554587d +0 -0
  91. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/6d/c2cdf4a84e538e5d4777486aeff87e42f41799 +0 -0
  92. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/6d/ee29dbdcc84edeeacede105110446f3ccac963 +0 -0
  93. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/71/36b2074a2754be8b58127d82250e5b37e3c373 +0 -0
  94. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/72/245a05b0966011cb381e6b32b0465000e969ab +0 -0
  95. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/72/e4179337639859678ddaecf38b16f33aaec8e1 +0 -0
  96. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/78/063f4c863fc371ec0313303c0a81283b35d9b6 +0 -0
  97. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/78/3d4167bc95c9d2175e0df03ef1c1c880ba75ab +0 -0
  98. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/79/7ae089b2212a937840e215276005ce76881307 +0 -0
  99. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/7e/5956c806b5edc344d46dab599dec337891ba1f +0 -0
  100. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/81/8f26b7bf042269729020cf944fc362d66ba27e +0 -0
  101. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/82/70b319ce4046854fbe7dc41054b6c2d112dab2 +0 -0
  102. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/84/59071b722a255b774a80b27746033f8141ab39 +0 -0
  103. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/85/aee46f478e9afdb84d50a05242c53b04ed2e21 +0 -0
  104. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/86/e288b46f8fe179907e4413f665aeb5053fddb1 +0 -0
  105. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/87/ef1fc3f7f1ddc4d0ab9b3e65381ce9f3388621 +0 -0
  106. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/8b/84f56978e1de8f2ae82abce5f8b3e182d365cd +0 -0
  107. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/8e/55a7d2b96184030211f20c9b9af201eefcac82 +0 -0
  108. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/91/c69ad88fe0ba94aa7859fb5f7edac5e6f1a3f7 +0 -0
  109. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/94/74152b4b463d70ae5ad07f0c658be3e296026b +0 -0
  110. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/94/f7dbe88e80c4205a901b71eb8f181974376bba +0 -0
  111. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/97/1aef09ea939f46b60b9646f8d524c78a9220f4 +0 -0
  112. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/9b/ec5ee2236ee2d5532c36bfd132e23c58fdb69c +0 -0
  113. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/9d/0df52899fe95279059286d9c0ec42287edc168 +0 -0
  114. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/a1/5389729850729fc7bd78a54f26fce77f30be12 +0 -0
  115. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/a1/906da89d1174f74867800c74c43af36253bd5e +0 -0
  116. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/a4/63fdd23e5efd713db8a71f316f3a1c7bd60916 +0 -0
  117. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/a5/ec8f74642fbba27f7ea78c53b372ae0c7dedce +0 -0
  118. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/a7/3e13eafee65c5b8d73ad2d3ea46d0eee82f0d3 +0 -0
  119. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/b0/56be4be89ba6b76949dd641df45bb7036050c8 +0 -0
  120. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/b0/9cd7856d58590578ee1a4f3ad45d1310a97f87 +0 -0
  121. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/b2/18e6a0f0f1c4df8cdefa9852058348abc713b7 +0 -0
  122. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/b3/4f7f271c6d6105e35a6556ffda71d03afe8c96 +0 -0
  123. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/b3/69579064bde9de9a19d114fc33e4e48cc8c0e4 +0 -0
  124. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/b5/61831c7dce8ea51e7ee6b6fa35745f14d8242d +0 -0
  125. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/b7/2c9e75ab7d0afe594664650aa8f6c772f5ac64 +0 -0
  126. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/bb/81ccc0513f18fc160b54a82861e9a80d23f4f6 +0 -0
  127. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/bb/934eb33bc1a8b85630bf680caffd99560c1b8f +0 -0
  128. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/bf/67907e337021ebff434e02b19b30a741c144af +0 -0
  129. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/bf/b54d65922ce1dfda1aaa014913a54e7172d0bc +0 -0
  130. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/c1/20fc812b9ad311c34a3608512d6a9d976bb48e +0 -0
  131. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/c1/397c6ed72c4e20ef6b9ab83163e9a6baba5b45 +0 -0
  132. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/c4/cba65f1163661999ee4b8ed23342b63bc1300c +0 -0
  133. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/c6/7f17e5707313600efcb85e9a3fedea35dba591 +0 -0
  134. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/c6/f32aced880bd165a251cb52b26b0c1107e2141 +0 -0
  135. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/cc/45df1d317a2eb63ff1ff3a5f3b4a9f98fd92b5 +0 -0
  136. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/cd/822b3574a88ebdd1ed82fd6983f37e626d52b4 +0 -0
  137. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/cf/0c0d9c6fb09473aaeb7f7e2edbd770c3f2ef3d +0 -0
  138. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/d2/992df305f4b56a466a2f221aeb182ddd20f418 +0 -0
  139. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/d6/39e8af592cd75a318d8affddd1bcc70c2095f2 +0 -0
  140. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/d6/9ab1c4aadf279936dd778e8346ba60f74705b6 +0 -0
  141. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/d8/4688b54c0040a30976b3a6540bc47adf7ce680 +0 -0
  142. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/d9/005f2cc7fc4e65f14ed5518276007c08cf2fd0 +0 -0
  143. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/d9/c2403fd166ce791b4e9d0c6792ed8342c71fcd +0 -0
  144. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/d9/dfa5aee51e92a541b707e8e7baea6f06deff98 +0 -0
  145. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/db/141dbaa93594df2a8156182f361ee4db829359 +0 -0
  146. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/db/3f2cd643292057936230b95cf7ec3046affe11 +0 -0
  147. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/db/ffa8ea7bda721d0cee7b9e4ce5b2ef927733ff +0 -0
  148. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/dc/c2bdbafb3296e09d9ee4955cfa55d275825f94 +0 -0
  149. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/dc/cdbd4266765d840be2ae35ab1752a0fa312c16 +0 -0
  150. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/dd/87fb5f606fe380d81e6fe3a2c98f9f99e3e09b +0 -0
  151. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/de/214c626ac2dd2685bfaa0bc0fc20f528d014d7 +0 -0
  152. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/df/e0770424b2a19faf507a501ebfc23be8f54e7b +0 -0
  153. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/e2/f2f8f4c25e62a297fc55f36acc6b01cfbab76f +0 -0
  154. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/e3/1356f90ea6dd0577b5e0b40b206319adcbf085 +0 -0
  155. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/e3/5a4dafc50850cacac7bf76c56db2715cbda2c4 +0 -0
  156. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/e4/6c715352db9fe3c887a635f1916df4ca1f4ff9 +0 -0
  157. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/e5/0580a0bd1e1b3d29f834382b80fceb61d5cf0c +0 -0
  158. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/e9/391ffe371f1cc43b42ef09b705d9c767c2e14f +0 -0
  159. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/ea/3a18cc75e53792744ef754e05d3f4481768c13 +0 -0
  160. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/ec/40fd8bf8e4c342534a9fc020289e402ba6bc9d +0 -0
  161. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/ec/d980279432b13f0374b90ca439a6329cdece0f +0 -0
  162. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/ee/cee64eacaff022dcdc509c0c2b1da492f21060 +0 -0
  163. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/f1/e50757fddc28b445545dc7e2759b54cdd0f42e +0 -0
  164. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/f4/b64d3107b39e3ad6f540c6607004ea34e6c024 +0 -0
  165. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/f4/ba7f815b886797b73fede071d86e0c134d2bc7 +0 -0
  166. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/f5/61c3c1bf1c9ea9c9d1f556a7be2869f71f3bdf +0 -0
  167. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/f6/44a8ff56fa035105fc517cbb1ac46c3d8e349a +0 -0
  168. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/f7/c98ba5c2f903e603b1f5e63d49fbc8a43815cc +0 -0
  169. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/f9/045a08e96eb76848fc4d68e3e3e687cca39a2d +0 -0
  170. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/fa/147e6bb78a2e8db241d231295fd7f1ed061af8 +0 -0
  171. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/objects/fc/292e793ecfd42240ac43be407023bd731fa9e7 +0 -0
  172. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/refs/heads/main +0 -0
  173. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/refs/remotes/origin/HEAD +0 -0
  174. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.git/refs/remotes/origin/main +0 -0
  175. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.gitattributes +0 -0
  176. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/.gitignore +0 -0
  177. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/LICENSE +0 -0
  178. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/README.md +0 -0
  179. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/__init__.py +0 -0
  180. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/brain_atlas.py +0 -0
  181. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/chat.py +0 -0
  182. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/correlators.py +0 -0
  183. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/data/.DS_Store +0 -0
  184. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/data/db2ls_sql_chtsht.json +0 -0
  185. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/data/docs_links.json +0 -0
  186. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/data/lang_code_iso639.json +0 -0
  187. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/data/styles/example/style1.pdf +0 -0
  188. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/data/styles/example/style2.pdf +0 -0
  189. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/data/styles/example/style3.pdf +0 -0
  190. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/data/styles/example/style4.pdf +0 -0
  191. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/data/styles/example/style5.pdf +0 -0
  192. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/data/styles/example/style6.pdf +0 -0
  193. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/data/styles/example/style7.pdf +0 -0
  194. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/data/styles/example/style8.pdf +0 -0
  195. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/data/styles/example/style9.pdf +0 -0
  196. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/data/styles/style1.json +0 -0
  197. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/data/styles/style10.json +0 -0
  198. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/data/styles/style11.json +0 -0
  199. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/data/styles/style12.json +0 -0
  200. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/data/styles/style2.json +0 -0
  201. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/data/styles/style3.json +0 -0
  202. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/data/styles/style4.json +0 -0
  203. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/data/styles/style5.json +0 -0
  204. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/data/styles/style6.json +0 -0
  205. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/data/styles/style7.json +0 -0
  206. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/data/styles/style8.json +0 -0
  207. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/data/styles/style9.json +0 -0
  208. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/db2ls.py +0 -0
  209. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/doc.py +0 -0
  210. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/export_requirements.py +0 -0
  211. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/freqanalysis.py +0 -0
  212. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/ich2ls.py +0 -0
  213. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/netfinder.py +0 -0
  214. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/ocr.py +0 -0
  215. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/plot.py +0 -0
  216. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/setuptools-70.1.0-py3-none-any.whl +0 -0
  217. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/sleep_events_detectors.py +0 -0
  218. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/stats.py +0 -0
  219. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/translator.py +0 -0
  220. {py2ls-0.1.10.10 → py2ls-0.1.10.12}/py2ls/wb_detector.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: py2ls
3
- Version: 0.1.10.10
3
+ Version: 0.1.10.12
4
4
  Summary: py(thon)2(too)ls
5
5
  Author: Jianfeng
6
6
  Author-email: Jianfeng.Liu0413@gmail.com
@@ -69,6 +69,8 @@ def email_to(**kwargs):
69
69
  [
70
70
  "who" in k.lower(),
71
71
  "whe" in k.lower(),
72
+ "to" in k.lower(),
73
+ "@" in k.lower(),
72
74
  all(["@" in k.lower(), "." in k.lower()]),
73
75
  ]
74
76
  ): # 'who' or "where"
@@ -16,6 +16,7 @@ import importlib.util
16
16
  import time
17
17
  from dateutil import parser
18
18
  from datetime import datetime
19
+ import schedule
19
20
 
20
21
  from PIL import Image, ImageEnhance, ImageOps, ImageFilter
21
22
  from rembg import remove, new_session
@@ -57,6 +58,178 @@ except NameError:
57
58
  pass
58
59
 
59
60
 
61
+ def unique(lst, ascending=None):
62
+ """
63
+ 移除列表中的重复元素,同时可以选择按升序或降序排序。
64
+
65
+ 参数:
66
+ lst (list): 输入的列表,其中可能包含重复的元素。
67
+ ascending (bool, 可选): 如果为 True,则按升序排序;如果为 False,则按降序排序;如果为 None,则不排序,只移除重复元素。
68
+
69
+ 返回:
70
+ list: 一个列表,其中的元素是唯一的,顺序根据参数 `ascending` 进行排序。
71
+ """
72
+ if ascending is not None:
73
+ # 移除重复项
74
+ unique_items = list(set(lst))
75
+ # 统一元素类型(例如,转换为字符串)
76
+ try:
77
+ unique_items = sorted(
78
+ unique_items, key=lambda x: str(x), reverse=not ascending
79
+ )
80
+ except TypeError:
81
+ # 如果排序失败(例如,元素类型不一致),返回原始去重列表
82
+ return unique_items
83
+ return unique_items
84
+ else:
85
+ # 移除重复项同时保持原始顺序
86
+ seen = set() # 用于记录已见的元素
87
+ result = [] # 用于存储结果
88
+ for item in lst:
89
+ if item not in seen:
90
+ seen.add(item) # 记录该元素
91
+ result.append(item) # 添加到结果列表中
92
+ return result
93
+
94
+
95
+ # ************* below section: run_when *************
96
+ def run_when(when: str = "every 2 min", job=None, wait: int = 60):
97
+ if "every" in when.lower():
98
+ when = when.replace("every", "")
99
+ run_every(when=when, job=job, wait=wait)
100
+ elif any([i in when.lower() for i in ["at", "@", ":", "am", "pm"]]):
101
+ time_words = ["at", "@", ":", "am", "pm"]
102
+ # 判断'时间词'是否存在
103
+ time_words_bool = [i in when.lower() for i in time_words]
104
+ # 找到'时间词'的位置
105
+ true_indices = [index for index, value in enumerate(time_words_bool) if value]
106
+ time_word = time_words[true_indices[0]] # 找到第一个'时间词'
107
+ when = when.replace(time_word, "") # 去除 时间词
108
+ run_at(when=when, job=job, wait=wait)
109
+
110
+
111
+ def run_every(when: str = None, job=None, wait: int = 60):
112
+ """
113
+ Schedules a job to run at the given interval.
114
+
115
+ :param when: String specifying the interval, e.g. '2 minutes', '4 hours', '1 day'.
116
+ :param job: The function to be scheduled.
117
+ """
118
+ if job is None:
119
+ print("No job provided!")
120
+ return
121
+
122
+ interval, unit = (
123
+ str2num(when),
124
+ strcmp(when.replace("every", ""), ["seconds", "minutes", "hours", "days"])[0],
125
+ )
126
+ print(interval, unit)
127
+ # Mapping the scheduling based on the unit1
128
+ if unit == "seconds":
129
+ schedule.every(interval).seconds.do(job)
130
+ elif unit == "minutes":
131
+ schedule.every(interval).minutes.do(job)
132
+ elif unit == "hours":
133
+ schedule.every(interval).hours.do(job)
134
+ elif unit == "days":
135
+ schedule.every(interval).days.do(job)
136
+ else:
137
+ print(f"Invalid time unit: {unit}")
138
+ return
139
+
140
+ print(f"Scheduled job when {interval} {unit}.")
141
+
142
+ # Keep the script running to execute the schedule
143
+ while True:
144
+ schedule.run_pending()
145
+ time.sleep(wait) # in seconds
146
+ time.sleep(wait) # in seconds
147
+
148
+
149
+ # # usage:
150
+ # def job():
151
+ # print("1 sec")
152
+ # run_every(when="1 sec", job=job)
153
+
154
+
155
+ def run_at(when: str, job=None, wait: int = 60):
156
+ """
157
+ Schedules a job to run at an exact time of the day.
158
+
159
+ :param when: String specifying the time, e.g. '1:30 pm','1.30 am','14:30', '1:30 pm', '8:45 am'.
160
+ :param job: The function to be scheduled.
161
+ :param wait: The sleep interval between checks in seconds.
162
+ """
163
+ if job is None:
164
+ print("No job provided!")
165
+ return
166
+ when = when.replace("A.M.", "AM").replace("P.M.", "PM")
167
+ when = when.replace(".", ":")
168
+ when = when.strip()
169
+
170
+ try:
171
+ # Attempt to parse the time in both 24-hour and 12-hour format
172
+ if "am" in when.lower() or "pm" in when.lower():
173
+ scheduled_time = datetime.strptime(
174
+ when, "%I:%M %p"
175
+ ).time() # 12-hour format with AM/PM
176
+ else:
177
+ scheduled_time = datetime.strptime(when, "%H:%M").time() # 24-hour format
178
+ except ValueError:
179
+ print(
180
+ f"Invalid time format: {when}. Use 'HH:MM' (24-hour) or 'H:MM AM/PM' format."
181
+ )
182
+ return
183
+
184
+ print(f"Job scheduled to run at {scheduled_time}.")
185
+
186
+ # Keep checking the current time
187
+ while True:
188
+ now = datetime.now()
189
+
190
+ # Check if current time matches the scheduled time
191
+ if (
192
+ now.time().hour == scheduled_time.hour
193
+ and now.time().minute == scheduled_time.minute
194
+ ):
195
+ job() # Run the job
196
+ time.sleep(
197
+ wait
198
+ ) # Sleep for a minute to avoid running the job multiple times in the same minute
199
+
200
+ time.sleep(wait) # wait to avoid excessive CPU usage
201
+
202
+
203
+ # # Example usage:
204
+ # def my_job():
205
+ # print("Job executed at the exact time!")
206
+ # # Schedule the job at 14:30 when day
207
+ # run_at(when="1.30 pm", job=my_job)
208
+
209
+ # ************* above section: run_when *************
210
+
211
+
212
+ def get_timezone(timezone: str | list):
213
+ from pytz import all_timezones
214
+ import pytz
215
+
216
+ if isinstance(timezone, str):
217
+ timezone = [timezone]
218
+
219
+ # Extract the part after the "/" in time zones (if exists)
220
+ timezones = [ssplit(i, "/")[1] if "/" in i else i for i in all_timezones]
221
+
222
+ # Print all available time zones for debugging purposes
223
+ # print(timezones)
224
+
225
+ # Find and return matched time zones using strcmp
226
+ matched_timezones = [all_timezones[strcmp(i, timezones)[1]] for i in timezone]
227
+ if len(matched_timezones) == 1:
228
+ return pytz.timezone(matched_timezones[0])
229
+ else:
230
+ return matched_timezones
231
+
232
+
60
233
  def is_package_installed(package_name):
61
234
  """Check if a package is installed."""
62
235
  package_spec = importlib.util.find_spec(package_name)
@@ -482,28 +655,29 @@ def str2num(s, *args, **kwargs):
482
655
  except Exception as e:
483
656
  # Attempt to handle multiple number segments
484
657
  try:
485
- number_segments = ssplit(s, by="number_strings")
658
+ number_segments = re.findall(r"[-+]?\d*\.\d+|\d+", s)
486
659
  nums = []
487
660
  for segment in number_segments:
488
- try:
489
- nums.append(str2num(segment))
490
- except ValueError:
491
- continue
661
+ nums.append(str2num(segment))
492
662
  if len(nums) == 1:
493
663
  num = nums[0]
494
664
  else:
495
- raise ValueError(
496
- "Multiple number segments found, cannot determine single numeric value"
497
- )
665
+ num = nums
498
666
  except Exception as e:
499
667
  return None
500
668
 
501
669
  # Apply rounding if specified
502
670
  if round_digits is not None:
503
- num_adj = num + 0.00000000001 # Ensure precise rounding
504
- num = round(num_adj, round_digits)
671
+ if isinstance(num, list):
672
+ num = [round(i + 0.00000000001, round_digits) for i in num]
673
+ else:
674
+ num_adj = num + 0.00000000001 # Ensure precise rounding
675
+ num = round(num_adj, round_digits)
505
676
  if round_digits == 0:
506
- num = int(num)
677
+ if isinstance(num, list):
678
+ num = [int(i) for i in num]
679
+ else:
680
+ num = int(num)
507
681
  # if delimiter is not None:
508
682
  # num_str = f"{num:,}".replace(",", delimiter)
509
683
  # return num_str#s.replace(delimiter, "")
@@ -521,21 +695,10 @@ def str2num(s, *args, **kwargs):
521
695
  # print(str2num("12345.6789", " ", 2)) # Output: 12 345.68
522
696
  # print(str2num('111113.34555',3,',')) # Output: 111,113.346
523
697
  # print(str2num("123.55555 sec miniuets",3)) # Output: 1.3
524
-
525
-
526
- def text2num(text):
527
- # extract the digital nums from a text
528
- num = []
529
- for s in ssplit(text, by="digital"):
530
- try:
531
- if float(s):
532
- num.append(float(s))
533
- except:
534
- pass
535
- if len(num) == 1:
536
- return num[0]
537
- else:
538
- return num
698
+ # print(str2num("every 3,300.55 hours and 5.045555 min", sep=",", round=1))
699
+ # print(str2num("five hundred fourty one"), str2num(
700
+ # "this is 5.9435 euros for 10.04499 killograme", round=3
701
+ # )[0])
539
702
 
540
703
 
541
704
  def num2str(num, *args, **kwargs):
@@ -572,11 +735,13 @@ def num2str(num, *args, **kwargs):
572
735
 
573
736
 
574
737
  # Examples
575
- # print(num2str(123),type(num2str(123))) # Output: "123"
576
- # print(num2str(123.456, 2),type(num2str(123.456, 2))) # Output: "123.46"
577
- # print(num2str(7000.125, 2),type(num2str(7000.125, 2))) # Output: "7000.13"
578
- # print(num2str(12345.6789, ","),type(num2str(12345.6789, ","))) # Output: "12,345.6789"
579
- # print(num2str(7000.00, ","),type(num2str(7000.00, ","))) # Output: "7,000.00"
738
+ # print(num2str(123), type(num2str(123))) # Output: "123"
739
+ # print(num2str(123.456, round=2), type(num2str(123.456, 2))) # Output: "123.46"
740
+ # print(num2str(7000.125, round=1), type(num2str(7000.125, 2))) # Output: "7000.13"
741
+ # print(
742
+ # num2str(12345333.6789, sep=","), type(num2str(12345.6789, ","))
743
+ # ) # Output: "12,345.6789"
744
+ # print(num2str(7000.00, sep=","), type(num2str(7000.00, ","))) # Output: "7,000.00"
580
745
  def sreplace(*args, **kwargs):
581
746
  """
582
747
  sreplace(text, by=None, robust=True)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "py2ls"
3
- version = "0.1.10.10"
3
+ version = "0.1.10.12"
4
4
  description = "py(thon)2(too)ls"
5
5
  authors = ["Jianfeng <Jianfeng.Liu0413@gmail.com>"]
6
6
  readme = "README.md"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes