py2ls 0.2.4.39__tar.gz → 0.2.4.41__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/PKG-INFO +1 -2
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/ips.py +268 -211
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/pyproject.toml +2 -2
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/README.md +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.DS_Store +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/.DS_Store +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/COMMIT_EDITMSG +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/FETCH_HEAD +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/HEAD +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/config +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/description +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/hooks/applypatch-msg.sample +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/hooks/commit-msg.sample +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/hooks/fsmonitor-watchman.sample +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/hooks/post-update.sample +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/hooks/pre-applypatch.sample +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/hooks/pre-commit.sample +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/hooks/pre-merge-commit.sample +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/hooks/pre-push.sample +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/hooks/pre-rebase.sample +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/hooks/pre-receive.sample +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/hooks/prepare-commit-msg.sample +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/hooks/push-to-checkout.sample +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/hooks/update.sample +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/index +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/info/exclude +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/logs/HEAD +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/logs/refs/heads/main +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/logs/refs/remotes/origin/HEAD +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/logs/refs/remotes/origin/main +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/.DS_Store +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/01/d5bd8065e6860c0bd23ff9fa57161806a099e1 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/09/08da26de58c114225ad81f484b80bf5d351b34 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/0b/409e1bc918277010f5679b402d1d1dda53e15c +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/12/c2808a1b3a4d0892a4154dfba1e2ae3770fa73 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/14/449a0e6ba4ea2f1a73acf63ef91c9c6193f9ed +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/15/a8e468aacfcb440e090020f36d0b985d45da23 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/1a/b4585881a6a42889f01aa0cfe25fd5acfaf46f +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/1c/3f92adda34344bcbbbf9d409c79855ae2aaea8 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/1c/9314c5f69b9390068a2a8616875d974849d71f +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/1d/fe9d9633b24ea560354f4f93d39c6e5f163ea0 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/20/72c28e83f4347959d29f7b3a6c1fc3e4ee6b59 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/24/6b368b986f758630c46dc02b7fa512b53422f7 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/25/b796accd261b9135fd32a2c00785f68edf6c46 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/27/aa6074f652bc6f7078f8647489d9ee8e24f0e2 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/28/c2969d785c1b892c2a96b3f00eba63a59811b3 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/2a/ae95d517d213b660bf4f65a4e0cfae7bb893eb +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/2a/fdf45791a26d42ccead35ace76a8f0b2a56561 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/30/a2f8da47ee947811dc8d993f5a06a45de374f4 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/32/fd627b62fad7cf3b2f9e34ab9777126a0987ad +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/34/9e31b6a3634cea102ce5588b98c11cc1738605 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/34/b6f3a2ee84f39bed4eee57f2c0e0afb994feb1 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/35/1a5f491ab97eee9d1ee699478d75a8bb5d3dc2 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/36/b4a1b7403abc6c360f8fe2cb656ab945254971 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/36/e56a361f526eafa59c5235a5c990bf288b5f9c +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/36/ef43e50009e59db11812c258846d9e38718173 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/39/7ead045fbbcfb17c62019eb18fe21ed05dbee5 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/39/b13be65125556784e44c7a1d9821703c7ab67e +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/3b/507acc7f23391644cc0b824b1e79fd2677a362 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/3b/bd972aa7ad680858f8dfbd0f7fcd97756f0d6f +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/3c/bbe5f4173d165127b9ad96119f1ec24c306ffc +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/3d/9d10d27724657a436c65a6254bfd213d4b3562 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/3f/d6561300938afbb3d11976cf9c8f29549280d9 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/41/dcf4b3bf0460946b2da93776cf9e836d62178f +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/43/dbd49b2ee367c5434dd545e3b5795434f2ef0b +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/45/b1b6178bacbfc997811a998b5cc60c1ea7fac8 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/47/6cbd5a7c5e35cddef2f8a38bdc4896d403b095 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/48/a88fc5806305d0bb0755ee6801161b79696972 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/4f/7afb40dff2153d857fc85748c2eecb85125042 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/50/08ddfcf53c02e82d7eee2e57c38e5672ef89f6 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/53/e0deb1cb4c2c606bced6e7f9a66b0fda60980d +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/56/e4e8b2d5545e0256090f45aa8fc42c5fe067d0 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/57/63d0c52f5c9c69e89d514a1f96034947abe21a +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/57/bd1c0199483ab316235b094543b85edec6c35e +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/58/20a729045d4dc7e37ccaf8aa8eec126850afe2 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/59/380c4c26bdcd4d9b71ae3e2e35f05b3f26c5ab +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/5a/192565abf89c9d765af846ce6d53a92b1ce7ad +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/60/f273eb1c412d916fa3f11318a7da7a9911b52a +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/61/570cec8c061abe74121f27f5face6c69b98f99 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/62/4488173ed2c8936fa5cea3cf5dd3f26a30b86e +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/62/7c81b23b4e56e87b042b650b0103653cc9e34a +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/62/d90ccf8cbefdc2e4fd475e7c6f4f76e9fdf801 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/63/100154b27846e8010e55b6bf4b3d7762c14c5f +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/64/27a4edff08f93d98f511418423f09f2ab90bcd +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/66/6227eeeba24073e63811e89f1449f3d958f183 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/66/c998778721d424bd0aae80602dabbffa93af2e +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/68/6df3072c8b025fb18106ed2df505994ad062a9 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/69/13c452ca319f7cbf6a0836dc10a5bb033c84e4 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/6a/52e747a2b349b128d1490d9e896d2323818eb7 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/6b/7fde264d93a7a0986d394c46c7650d0ce2ab92 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/6c/cebb29b7f3f5b0c889f6dadbf9ff066554587d +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/6d/c2cdf4a84e538e5d4777486aeff87e42f41799 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/6d/ee29dbdcc84edeeacede105110446f3ccac963 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/71/36b2074a2754be8b58127d82250e5b37e3c373 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/72/245a05b0966011cb381e6b32b0465000e969ab +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/72/e4179337639859678ddaecf38b16f33aaec8e1 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/78/063f4c863fc371ec0313303c0a81283b35d9b6 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/78/3d4167bc95c9d2175e0df03ef1c1c880ba75ab +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/79/7ae089b2212a937840e215276005ce76881307 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/7e/5956c806b5edc344d46dab599dec337891ba1f +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/81/8f26b7bf042269729020cf944fc362d66ba27e +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/82/70b319ce4046854fbe7dc41054b6c2d112dab2 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/84/59071b722a255b774a80b27746033f8141ab39 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/85/aee46f478e9afdb84d50a05242c53b04ed2e21 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/86/e288b46f8fe179907e4413f665aeb5053fddb1 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/87/ef1fc3f7f1ddc4d0ab9b3e65381ce9f3388621 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/8b/84f56978e1de8f2ae82abce5f8b3e182d365cd +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/8e/55a7d2b96184030211f20c9b9af201eefcac82 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/91/c69ad88fe0ba94aa7859fb5f7edac5e6f1a3f7 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/94/74152b4b463d70ae5ad07f0c658be3e296026b +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/94/f7dbe88e80c4205a901b71eb8f181974376bba +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/97/1aef09ea939f46b60b9646f8d524c78a9220f4 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/9b/ec5ee2236ee2d5532c36bfd132e23c58fdb69c +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/9d/0df52899fe95279059286d9c0ec42287edc168 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/a1/5389729850729fc7bd78a54f26fce77f30be12 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/a1/906da89d1174f74867800c74c43af36253bd5e +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/a4/63fdd23e5efd713db8a71f316f3a1c7bd60916 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/a5/ec8f74642fbba27f7ea78c53b372ae0c7dedce +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/a7/3e13eafee65c5b8d73ad2d3ea46d0eee82f0d3 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/b0/56be4be89ba6b76949dd641df45bb7036050c8 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/b0/9cd7856d58590578ee1a4f3ad45d1310a97f87 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/b2/18e6a0f0f1c4df8cdefa9852058348abc713b7 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/b3/4f7f271c6d6105e35a6556ffda71d03afe8c96 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/b3/69579064bde9de9a19d114fc33e4e48cc8c0e4 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/b5/61831c7dce8ea51e7ee6b6fa35745f14d8242d +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/b7/2c9e75ab7d0afe594664650aa8f6c772f5ac64 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/bb/81ccc0513f18fc160b54a82861e9a80d23f4f6 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/bb/934eb33bc1a8b85630bf680caffd99560c1b8f +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/bf/67907e337021ebff434e02b19b30a741c144af +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/bf/b54d65922ce1dfda1aaa014913a54e7172d0bc +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/c1/20fc812b9ad311c34a3608512d6a9d976bb48e +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/c1/397c6ed72c4e20ef6b9ab83163e9a6baba5b45 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/c4/cba65f1163661999ee4b8ed23342b63bc1300c +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/c6/7f17e5707313600efcb85e9a3fedea35dba591 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/c6/f32aced880bd165a251cb52b26b0c1107e2141 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/cc/45df1d317a2eb63ff1ff3a5f3b4a9f98fd92b5 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/cd/822b3574a88ebdd1ed82fd6983f37e626d52b4 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/cf/0c0d9c6fb09473aaeb7f7e2edbd770c3f2ef3d +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/d2/992df305f4b56a466a2f221aeb182ddd20f418 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/d6/39e8af592cd75a318d8affddd1bcc70c2095f2 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/d6/9ab1c4aadf279936dd778e8346ba60f74705b6 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/d8/4688b54c0040a30976b3a6540bc47adf7ce680 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/d9/005f2cc7fc4e65f14ed5518276007c08cf2fd0 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/d9/c2403fd166ce791b4e9d0c6792ed8342c71fcd +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/d9/dfa5aee51e92a541b707e8e7baea6f06deff98 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/db/141dbaa93594df2a8156182f361ee4db829359 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/db/3f2cd643292057936230b95cf7ec3046affe11 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/db/ffa8ea7bda721d0cee7b9e4ce5b2ef927733ff +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/dc/c2bdbafb3296e09d9ee4955cfa55d275825f94 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/dc/cdbd4266765d840be2ae35ab1752a0fa312c16 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/dd/87fb5f606fe380d81e6fe3a2c98f9f99e3e09b +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/de/214c626ac2dd2685bfaa0bc0fc20f528d014d7 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/df/e0770424b2a19faf507a501ebfc23be8f54e7b +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/e2/f2f8f4c25e62a297fc55f36acc6b01cfbab76f +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/e3/1356f90ea6dd0577b5e0b40b206319adcbf085 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/e3/5a4dafc50850cacac7bf76c56db2715cbda2c4 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/e4/6c715352db9fe3c887a635f1916df4ca1f4ff9 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/e5/0580a0bd1e1b3d29f834382b80fceb61d5cf0c +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/e9/391ffe371f1cc43b42ef09b705d9c767c2e14f +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/ea/3a18cc75e53792744ef754e05d3f4481768c13 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/ec/40fd8bf8e4c342534a9fc020289e402ba6bc9d +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/ec/d980279432b13f0374b90ca439a6329cdece0f +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/ee/cee64eacaff022dcdc509c0c2b1da492f21060 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/f1/e50757fddc28b445545dc7e2759b54cdd0f42e +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/f4/b64d3107b39e3ad6f540c6607004ea34e6c024 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/f4/ba7f815b886797b73fede071d86e0c134d2bc7 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/f5/61c3c1bf1c9ea9c9d1f556a7be2869f71f3bdf +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/f6/44a8ff56fa035105fc517cbb1ac46c3d8e349a +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/f7/c98ba5c2f903e603b1f5e63d49fbc8a43815cc +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/f9/045a08e96eb76848fc4d68e3e3e687cca39a2d +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/fa/147e6bb78a2e8db241d231295fd7f1ed061af8 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/objects/fc/292e793ecfd42240ac43be407023bd731fa9e7 +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/refs/.DS_Store +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/refs/heads/main +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/refs/remotes/origin/HEAD +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.git/refs/remotes/origin/main +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.gitattributes +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/.gitignore +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/LICENSE +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/README.md +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/__init__.py +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/batman.py +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/bio.py +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/brain_atlas.py +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/chat.py +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/corr.py +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/correlators.py +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/.DS_Store +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/RealESRGAN_x4plus.pth +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/db2ls_sql_chtsht.json +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/docs_links.json +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/email/email_html_template.html +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/hyper_param_autogluon_zeroshot2024.json +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/hyper_param_tabrepo_2024.py +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/lang_code_iso639.json +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/mygenes_fields_241022.txt +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/sns_info.json +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/.DS_Store +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/example/.DS_Store +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/example/style1.pdf +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/example/style2.pdf +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/example/style3.pdf +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/example/style4.pdf +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/example/style5.pdf +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/example/style6.pdf +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/example/style7.pdf +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/example/style8.pdf +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/example/style9.pdf +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/style1.json +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/style10.json +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/style11.json +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/style12.json +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/style2.json +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/style3.json +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/style4.json +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/style5.json +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/style6.json +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/style7.json +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/style8.json +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/style9.json +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/stylelib/.DS_Store +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/stylelib/grid.mplstyle +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/stylelib/high-contrast.mplstyle +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/stylelib/high-vis.mplstyle +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/stylelib/ieee.mplstyle +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/stylelib/light.mplstyl +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/stylelib/muted.mplstyle +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/stylelib/nature-reviews-latex.mplstyle +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/stylelib/nature-reviews.mplstyle +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/stylelib/nature.mplstyle +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/stylelib/no-latex.mplstyle +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/stylelib/notebook.mplstyle +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/stylelib/paper.mplstyle +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/stylelib/retro.mplstyle +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/stylelib/sans.mplstyle +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/stylelib/scatter.mplstyle +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/stylelib/science.mplstyle +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/stylelib/std-colors.mplstyle +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/styles/stylelib/vibrant.mplstyle +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/tiles.csv +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/usages_pd.json +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/data/usages_sns.json +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/db2ls.py +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/doc.py +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/ec2ls.py +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/export_requirements.py +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/fetch_update.py +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/freqanalysis.py +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/ich2ls.py +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/ml2ls.py +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/mol.py +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/netfinder.py +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/nl2ls.py +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/ocr.py +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/plot.py +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/setuptools-70.1.0-py3-none-any.whl +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/sleep_events_detectors.py +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/stats.py +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/translator.py +0 -0
- {py2ls-0.2.4.39 → py2ls-0.2.4.41}/py2ls/wb_detector.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: py2ls
|
3
|
-
Version: 0.2.4.
|
3
|
+
Version: 0.2.4.41
|
4
4
|
Summary: py(thon)2(too)ls
|
5
5
|
Author: Jianfeng
|
6
6
|
Author-email: Jianfeng.Liu0413@gmail.com
|
@@ -18,7 +18,6 @@ Provides-Extra: full
|
|
18
18
|
Requires-Dist: CacheControl (>=0.13.1)
|
19
19
|
Requires-Dist: Cython (>=3.0.10)
|
20
20
|
Requires-Dist: Deprecated (>=1.2.14)
|
21
|
-
Requires-Dist: GPUtil (>=1.4.0)
|
22
21
|
Requires-Dist: Jinja2 (>=3.1.4)
|
23
22
|
Requires-Dist: Markdown (>=3.6)
|
24
23
|
Requires-Dist: MarkupSafe (>=2.1.5)
|
@@ -3839,7 +3839,7 @@ def get_os(full=False, verbose=False):
|
|
3839
3839
|
import sys
|
3840
3840
|
import platform
|
3841
3841
|
import psutil
|
3842
|
-
import GPUtil
|
3842
|
+
# import GPUtil
|
3843
3843
|
import socket
|
3844
3844
|
import uuid
|
3845
3845
|
import cpuinfo
|
@@ -4246,23 +4246,23 @@ def get_os(full=False, verbose=False):
|
|
4246
4246
|
}
|
4247
4247
|
)
|
4248
4248
|
|
4249
|
-
# GPU Information
|
4250
|
-
gpus = GPUtil.getGPUs()
|
4251
|
-
for gpu in gpus:
|
4252
|
-
|
4253
|
-
|
4254
|
-
|
4255
|
-
|
4256
|
-
|
4257
|
-
|
4258
|
-
|
4259
|
-
|
4260
|
-
|
4261
|
-
|
4262
|
-
|
4263
|
-
|
4264
|
-
|
4265
|
-
|
4249
|
+
# # GPU Information
|
4250
|
+
# gpus = GPUtil.getGPUs()
|
4251
|
+
# for gpu in gpus:
|
4252
|
+
# gpu_info = {
|
4253
|
+
# "name": gpu.name,
|
4254
|
+
# "load (%)": gpu.load * 100,
|
4255
|
+
# "free memory (MB)": gpu.memoryFree,
|
4256
|
+
# "used memory (MB)": gpu.memoryUsed,
|
4257
|
+
# "total memory (MB)": gpu.memoryTotal,
|
4258
|
+
# "driver version": gpu.driver,
|
4259
|
+
# "temperature (°C)": gpu.temperature,
|
4260
|
+
# }
|
4261
|
+
# if hasattr(gpu, "powerDraw"):
|
4262
|
+
# gpu_info["Power Draw (W)"] = gpu.powerDraw
|
4263
|
+
# if hasattr(gpu, "powerLimit"):
|
4264
|
+
# gpu_info["Power Limit (W)"] = gpu.powerLimit
|
4265
|
+
# system_info["gpu"].append(gpu_info)
|
4266
4266
|
|
4267
4267
|
res = system_info if full else get_os_type()
|
4268
4268
|
if verbose:
|
@@ -6330,6 +6330,7 @@ def format_excel(
|
|
6330
6330
|
protect=None, # dict
|
6331
6331
|
number_format=None, # dict: e.g., {1:"0.00", 2:"#,##0",3:"0%",4:"$#,##0.00"}
|
6332
6332
|
data_validation=None, # dict
|
6333
|
+
apply_filter=True, # add filter
|
6333
6334
|
conditional_format=None, # dict
|
6334
6335
|
**kwargs,
|
6335
6336
|
):
|
@@ -6340,7 +6341,7 @@ def format_excel(
|
|
6340
6341
|
from openpyxl.utils import get_column_letter
|
6341
6342
|
from openpyxl.worksheet.datavalidation import DataValidation
|
6342
6343
|
from openpyxl.comments import Comment
|
6343
|
-
from openpyxl.formatting.rule import ColorScaleRule
|
6344
|
+
from openpyxl.formatting.rule import ColorScaleRule, DataBarRule, IconSetRule,IconSet
|
6344
6345
|
|
6345
6346
|
def convert_indices_to_range(row_slice, col_slice):
|
6346
6347
|
"""Convert numerical row and column slices to Excel-style range strings."""
|
@@ -6705,159 +6706,159 @@ def format_excel(
|
|
6705
6706
|
filename = str(datetime.now().strftime("%y%m%d_%H.xlsx"))
|
6706
6707
|
# !show usage:
|
6707
6708
|
func_xample = """
|
6708
|
-
# Example usage
|
6709
|
-
data = {
|
6710
|
-
|
6711
|
-
|
6712
|
-
|
6713
|
-
|
6714
|
-
|
6715
|
-
|
6716
|
-
|
6717
|
-
}
|
6718
|
-
df = pd.DataFrame(data)
|
6719
|
-
|
6720
|
-
|
6721
|
-
format_excel(
|
6722
|
-
df,
|
6723
|
-
filename="example.xlsx",
|
6724
|
-
sheet_name="Sheet1",
|
6725
|
-
cell=[
|
6726
|
-
{
|
6727
|
-
(slice(0, 1), slice(0, len(df.columns))): {
|
6728
|
-
"font": {
|
6729
|
-
"name": "Calibri", # Font name
|
6730
|
-
"size": 14, # Font size
|
6731
|
-
"bold": True, # Bold text
|
6732
|
-
"italic": False, # Italic text
|
6733
|
-
"underline": "single", # Underline (single, double)
|
6734
|
-
"color": "#FFFFFF", # Font color
|
6735
|
-
},
|
6736
|
-
"fill": {
|
6737
|
-
"start_color": "a1cd1e", # Starting color
|
6738
|
-
"end_color": "4F81BD", # Ending color (useful for gradients)
|
6739
|
-
"fill_type": "solid", # Fill type (solid, gradient, etc.)
|
6740
|
-
},
|
6741
|
-
"alignment": {
|
6742
|
-
"horizontal": "center", # Horizontal alignment (left, center, right)
|
6743
|
-
"vertical": "center", # Vertical alignment (top, center, bottom)
|
6744
|
-
"wrap_text": True, # Wrap text in the cell
|
6745
|
-
"shrink_to_fit": True, # Shrink text to fit within cell
|
6746
|
-
"text_rotation": 0, # Text rotation angle
|
6747
|
-
},
|
6748
|
-
"border": {
|
6749
|
-
"left": "thin",
|
6750
|
-
"right": "thin",
|
6751
|
-
"top": "thin",
|
6752
|
-
"bottom": "thin",
|
6753
|
-
"color": "000000", # Border color
|
6754
|
-
},
|
6709
|
+
# Example usage
|
6710
|
+
data = {
|
6711
|
+
"Header 1": [10, 2000000, 30],
|
6712
|
+
"Header 2": [
|
6713
|
+
40000,
|
6714
|
+
'"start_color": "4F81BD", "end_color","start_color": "a1cd1e","start_color": "4F81BD", "end_color","start_color": "a1cd1e"',
|
6715
|
+
60,
|
6716
|
+
],
|
6717
|
+
"Header 3": [70, 80, 90],
|
6755
6718
|
}
|
6756
|
-
|
6757
|
-
|
6758
|
-
|
6759
|
-
|
6760
|
-
|
6761
|
-
|
6762
|
-
|
6763
|
-
|
6764
|
-
|
6765
|
-
|
6719
|
+
df = pd.DataFrame(data)
|
6720
|
+
|
6721
|
+
|
6722
|
+
format_excel(
|
6723
|
+
df,
|
6724
|
+
filename="example.xlsx",
|
6725
|
+
sheet_name="Sheet1",
|
6726
|
+
cell=[
|
6727
|
+
{
|
6728
|
+
(slice(0, 1), slice(0, len(df.columns))): {
|
6729
|
+
"font": {
|
6730
|
+
"name": "Calibri", # Font name
|
6731
|
+
"size": 14, # Font size
|
6732
|
+
"bold": True, # Bold text
|
6733
|
+
"italic": False, # Italic text
|
6734
|
+
"underline": "single", # Underline (single, double)
|
6735
|
+
"color": "#FFFFFF", # Font color
|
6736
|
+
},
|
6737
|
+
"fill": {
|
6738
|
+
"start_color": "a1cd1e", # Starting color
|
6739
|
+
"end_color": "4F81BD", # Ending color (useful for gradients)
|
6740
|
+
"fill_type": "solid", # Fill type (solid, gradient, etc.)
|
6741
|
+
},
|
6742
|
+
"alignment": {
|
6743
|
+
"horizontal": "center", # Horizontal alignment (left, center, right)
|
6744
|
+
"vertical": "center", # Vertical alignment (top, center, bottom)
|
6745
|
+
"wrap_text": True, # Wrap text in the cell
|
6746
|
+
"shrink_to_fit": True, # Shrink text to fit within cell
|
6747
|
+
"text_rotation": 0, # Text rotation angle
|
6748
|
+
},
|
6749
|
+
"border": {
|
6750
|
+
"left": "thin",
|
6751
|
+
"right": "thin",
|
6752
|
+
"top": "thin",
|
6753
|
+
"bottom": "thin",
|
6754
|
+
"color": "000000", # Border color
|
6755
|
+
},
|
6756
|
+
}
|
6757
|
+
},
|
6758
|
+
{
|
6759
|
+
(slice(0, 3), slice(1, 3)): {
|
6760
|
+
"font": {
|
6761
|
+
"name": "Arial", # Font name
|
6762
|
+
"size": 12, # Font size
|
6763
|
+
"bold": False, # Bold text
|
6764
|
+
"italic": True, # Italic text
|
6765
|
+
"underline": None, # No underline
|
6766
|
+
"color": "#000000", # Font color
|
6767
|
+
},
|
6768
|
+
"fill": {
|
6769
|
+
"start_color": "#c61313", # Background color
|
6770
|
+
"end_color": "#490606", # End color
|
6771
|
+
"fill_type": "solid", # Fill type
|
6772
|
+
},
|
6773
|
+
"alignment": {
|
6774
|
+
"horizontal": "left", # Horizontal alignment
|
6775
|
+
"vertical": "top", # Vertical alignment
|
6776
|
+
"wrap_text": True, # Enable text wrapping
|
6777
|
+
"shrink_to_fit": False, # Disable shrink to fit
|
6778
|
+
"indent": 1, # Indentation level
|
6779
|
+
"text_rotation": 0, # Text rotation angle
|
6780
|
+
},
|
6781
|
+
"border": {
|
6782
|
+
"left": "thin", # Left border style
|
6783
|
+
"right": "thin", # Right border style
|
6784
|
+
"top": "thin", # Top border style
|
6785
|
+
"bottom": "thin", # Bottom border style
|
6786
|
+
"color": "000000", # Border color
|
6787
|
+
},
|
6788
|
+
}
|
6789
|
+
# * border settings
|
6790
|
+
# "thin": Thin border line
|
6791
|
+
# "medium": Medium border line
|
6792
|
+
# "thick": Thick border line
|
6793
|
+
# "dotted": Dotted border line
|
6794
|
+
# "dashed": Dashed border line
|
6795
|
+
# "hair": Hairline border (very thin)
|
6796
|
+
# "mediumDashed": Medium dashed border line
|
6797
|
+
# "dashDot": Dash-dot border line
|
6798
|
+
# "dashDotDot": Dash-dot-dot border line
|
6799
|
+
# "slantDashDot": Slant dash-dot border line
|
6800
|
+
},
|
6801
|
+
],
|
6802
|
+
width={2: 30}, # when it is None, it will automatic adjust width
|
6803
|
+
height={2: 50, 3: 25}, # keys are columns
|
6804
|
+
merge=(slice(0, 1), slice(1, 3)),
|
6805
|
+
shade={
|
6806
|
+
(slice(1, 4), slice(1, 3)): {
|
6807
|
+
"bg_color": "FFFF00", # Background color
|
6808
|
+
"pattern_type": "solid", # Fill pattern (e.g., solid, darkGrid, lightGrid)
|
6809
|
+
"fg_color": "#0000FF", # Foreground color, used in patterns
|
6810
|
+
"end_color": "0000FF", # End color, useful for gradients
|
6811
|
+
"fill_type": "solid", # Type of fill (solid, gradient, etc.)
|
6812
|
+
}
|
6766
6813
|
},
|
6767
|
-
"
|
6768
|
-
|
6769
|
-
|
6770
|
-
"
|
6814
|
+
comment={(2, 4): "This is a comment"},
|
6815
|
+
link={(2, 2): "https://example.com"},
|
6816
|
+
protect={
|
6817
|
+
"password": "123", # Password for sheet protection
|
6818
|
+
"sheet": False, # True, # Protect the sheet
|
6819
|
+
"objects": False, # True, # Protect objects
|
6820
|
+
"scenarios": False, # True, # Protect scenarios
|
6821
|
+
"formatCells": False, # Disable formatting cells
|
6822
|
+
"formatColumns": False, # Disable formatting columns
|
6823
|
+
"formatRows": False, # Disable formatting rows
|
6824
|
+
"insertColumns": False, # Disable inserting columns
|
6825
|
+
"insertRows": False, # Disable inserting rows
|
6826
|
+
"deleteColumns": False, # Disable deleting columns
|
6827
|
+
"deleteRows": False, # Disable deleting rows
|
6771
6828
|
},
|
6772
|
-
|
6773
|
-
|
6774
|
-
|
6775
|
-
"
|
6776
|
-
"
|
6777
|
-
"indent": 1, # Indentation level
|
6778
|
-
"text_rotation": 0, # Text rotation angle
|
6829
|
+
number_format={
|
6830
|
+
1: "0.00", # Two decimal places for column index 1
|
6831
|
+
2: "#,##0", # Thousands separator
|
6832
|
+
3: "0%", # Percentage format
|
6833
|
+
4: "$#,##0.00", # Currency format
|
6779
6834
|
},
|
6780
|
-
|
6781
|
-
|
6782
|
-
|
6783
|
-
|
6784
|
-
|
6785
|
-
|
6835
|
+
data_validation={
|
6836
|
+
(slice(1, 2), slice(2, 10)): {
|
6837
|
+
"type": "list",
|
6838
|
+
"formula1": '"Option1,Option2,Option3"', # List of options
|
6839
|
+
"allow_blank": True,
|
6840
|
+
"showDropDown": True,
|
6841
|
+
"showErrorMessage": True,
|
6842
|
+
"errorTitle": "Invalid input",
|
6843
|
+
"error": "Please select a valid option.",
|
6844
|
+
}
|
6786
6845
|
},
|
6787
|
-
|
6788
|
-
|
6789
|
-
|
6790
|
-
|
6791
|
-
|
6792
|
-
|
6793
|
-
|
6794
|
-
|
6795
|
-
|
6796
|
-
|
6797
|
-
|
6798
|
-
|
6799
|
-
|
6800
|
-
|
6801
|
-
|
6802
|
-
|
6803
|
-
merge=(slice(0, 1), slice(1, 3)),
|
6804
|
-
shade={
|
6805
|
-
(slice(1, 4), slice(1, 3)): {
|
6806
|
-
"bg_color": "FFFF00", # Background color
|
6807
|
-
"pattern_type": "solid", # Fill pattern (e.g., solid, darkGrid, lightGrid)
|
6808
|
-
"fg_color": "#0000FF", # Foreground color, used in patterns
|
6809
|
-
"end_color": "0000FF", # End color, useful for gradients
|
6810
|
-
"fill_type": "solid", # Type of fill (solid, gradient, etc.)
|
6811
|
-
}
|
6812
|
-
},
|
6813
|
-
comment={(2, 4): "This is a comment"},
|
6814
|
-
link={(2, 2): "https://example.com"},
|
6815
|
-
protect={
|
6816
|
-
"password": "123", # Password for sheet protection
|
6817
|
-
"sheet": False, # True, # Protect the sheet
|
6818
|
-
"objects": False, # True, # Protect objects
|
6819
|
-
"scenarios": False, # True, # Protect scenarios
|
6820
|
-
"formatCells": False, # Disable formatting cells
|
6821
|
-
"formatColumns": False, # Disable formatting columns
|
6822
|
-
"formatRows": False, # Disable formatting rows
|
6823
|
-
"insertColumns": False, # Disable inserting columns
|
6824
|
-
"insertRows": False, # Disable inserting rows
|
6825
|
-
"deleteColumns": False, # Disable deleting columns
|
6826
|
-
"deleteRows": False, # Disable deleting rows
|
6827
|
-
},
|
6828
|
-
number_format={
|
6829
|
-
1: "0.00", # Two decimal places for column index 1
|
6830
|
-
2: "#,##0", # Thousands separator
|
6831
|
-
3: "0%", # Percentage format
|
6832
|
-
4: "$#,##0.00", # Currency format
|
6833
|
-
},
|
6834
|
-
data_validation={
|
6835
|
-
(slice(1, 2), slice(2, 10)): {
|
6836
|
-
"type": "list",
|
6837
|
-
"formula1": '"Option1,Option2,Option3"', # List of options
|
6838
|
-
"allow_blank": True,
|
6839
|
-
"showDropDown": True,
|
6840
|
-
"showErrorMessage": True,
|
6841
|
-
"errorTitle": "Invalid input",
|
6842
|
-
"error": "Please select a valid option.",
|
6843
|
-
}
|
6844
|
-
},
|
6845
|
-
conditional_format={
|
6846
|
-
(slice(1, 2), slice(2, 10)): [
|
6847
|
-
{
|
6848
|
-
"color_scale": {
|
6849
|
-
"start_type": "min", # Type of start point (min, max, percent)
|
6850
|
-
"start_color": "#FF0000", # Starting color
|
6851
|
-
"end_type": "max", # End type (min, max, percent)
|
6852
|
-
"end_color": "00FF00", # Ending color
|
6853
|
-
"mid_type": "percentile", # Midpoint type (optional)
|
6854
|
-
"mid_value": 50, # Midpoint value (optional)
|
6855
|
-
"mid_color": "FFFF00", # Midpoint color (optional)
|
6856
|
-
}
|
6857
|
-
}
|
6858
|
-
]
|
6859
|
-
},
|
6860
|
-
)
|
6846
|
+
conditional_format={
|
6847
|
+
(slice(1, 2), slice(2, 10)): [
|
6848
|
+
{
|
6849
|
+
"color_scale": {
|
6850
|
+
"start_type": "min", # Type of start point (min, max, percent)
|
6851
|
+
"start_color": "#FF0000", # Starting color
|
6852
|
+
"end_type": "max", # End type (min, max, percent)
|
6853
|
+
"end_color": "00FF00", # Ending color
|
6854
|
+
"mid_type": "percentile", # Midpoint type (optional)
|
6855
|
+
"mid_value": 50, # Midpoint value (optional)
|
6856
|
+
"mid_color": "FFFF00", # Midpoint color (optional)
|
6857
|
+
}
|
6858
|
+
}
|
6859
|
+
]
|
6860
|
+
},
|
6861
|
+
)
|
6861
6862
|
"""
|
6862
6863
|
if usage:
|
6863
6864
|
print(func_xample)
|
@@ -6917,17 +6918,49 @@ format_excel(
|
|
6917
6918
|
col_letter = get_column_letter(col_idx)
|
6918
6919
|
for cell in ws[col_letter][1:]: # Skip the header
|
6919
6920
|
cell.number_format = fmt
|
6920
|
-
|
6921
|
+
|
6922
|
+
if apply_filter:
|
6923
|
+
if isinstance(apply_filter, bool):
|
6924
|
+
# Default: Apply filter to the entire first row (header)
|
6925
|
+
filter_range = f"A1:{get_column_letter(ws.max_column)}1"
|
6926
|
+
ws.auto_filter.ref = filter_range
|
6927
|
+
|
6928
|
+
elif isinstance(apply_filter, tuple):
|
6929
|
+
row_slice, col_slice = apply_filter
|
6930
|
+
|
6931
|
+
# Extract the start and end indices for rows and columns
|
6932
|
+
start_row, end_row = row_slice.start, row_slice.stop
|
6933
|
+
start_col_idx, end_col_idx = col_slice.start, col_slice.stop
|
6934
|
+
|
6935
|
+
# Ensure valid row and column indices
|
6936
|
+
if start_row < 1: start_row = 1 # Row should not be less than 1
|
6937
|
+
if end_row > ws.max_row: end_row = ws.max_row # Ensure within sheet's row limits
|
6938
|
+
if start_col_idx < 1: start_col_idx = 1 # Column should not be less than 1
|
6939
|
+
if end_col_idx > ws.max_column: end_col_idx = ws.max_column # Ensure within sheet's column limits
|
6940
|
+
|
6941
|
+
# Get column letters based on indices
|
6942
|
+
start_col = get_column_letter(start_col_idx)
|
6943
|
+
end_col = get_column_letter(end_col_idx)
|
6944
|
+
|
6945
|
+
# Define the filter range based on specific rows and columns
|
6946
|
+
filter_range = f"{start_col}{start_row}:{end_col}{end_row}"
|
6947
|
+
|
6948
|
+
# Apply the filter
|
6949
|
+
ws.auto_filter.ref = filter_range
|
6921
6950
|
# !widths
|
6922
6951
|
if width is None: # automatic adust width
|
6923
6952
|
for col in ws.columns:
|
6924
|
-
|
6925
|
-
|
6926
|
-
|
6927
|
-
|
6928
|
-
|
6929
|
-
|
6930
|
-
|
6953
|
+
max_length = 0
|
6954
|
+
column = col[0].column_letter # Get the column letter
|
6955
|
+
for cell_ in col:
|
6956
|
+
try:
|
6957
|
+
if cell_.value:
|
6958
|
+
max_length = max(max_length, len(str(cell_.value)))
|
6959
|
+
except Exception:
|
6960
|
+
pass
|
6961
|
+
adjusted_width = max_length + 2 # You can adjust the padding value as needed
|
6962
|
+
ws.column_dimensions[column].width = adjusted_width
|
6963
|
+
|
6931
6964
|
else:
|
6932
6965
|
for col_idx, width_ in width.items():
|
6933
6966
|
col_letter = get_column_letter(col_idx)
|
@@ -7017,6 +7050,7 @@ format_excel(
|
|
7017
7050
|
for indices, rules in conditional_format.items():
|
7018
7051
|
cell_range = convert_indices_to_range(*indices)
|
7019
7052
|
for rule in rules:
|
7053
|
+
# Handle color scale
|
7020
7054
|
if "color_scale" in rule:
|
7021
7055
|
color_scale = rule["color_scale"]
|
7022
7056
|
start_color = hex2argb(color_scale.get("start_color", "FFFFFF"))
|
@@ -7035,6 +7069,32 @@ format_excel(
|
|
7035
7069
|
end_color=end_color,
|
7036
7070
|
)
|
7037
7071
|
ws.conditional_formatting.add(cell_range, color_scale_rule)
|
7072
|
+
# Handle data bar
|
7073
|
+
if "data_bar" in rule:
|
7074
|
+
data_bar = rule["data_bar"]
|
7075
|
+
bar_color = hex2argb(data_bar.get("color", "638EC6"))
|
7076
|
+
|
7077
|
+
data_bar_rule = DataBarRule(
|
7078
|
+
start_type=data_bar.get("start_type", "min"),
|
7079
|
+
start_value=data_bar.get("start_value"),
|
7080
|
+
end_type=data_bar.get("end_type", "max"),
|
7081
|
+
end_value=data_bar.get("end_value"),
|
7082
|
+
color=bar_color,
|
7083
|
+
showValue=data_bar.get("show_value", True),
|
7084
|
+
)
|
7085
|
+
ws.conditional_formatting.add(cell_range, data_bar_rule)
|
7086
|
+
|
7087
|
+
# Handle icon set
|
7088
|
+
if "icon_set" in rule:
|
7089
|
+
icon_set = rule["icon_set"]
|
7090
|
+
icon_set_rule = IconSet(
|
7091
|
+
iconSet=icon_set.get("iconSet", "3TrafficLights1"), # Corrected
|
7092
|
+
showValue=icon_set.get("show_value", True), # Corrected
|
7093
|
+
reverse=icon_set.get("reverse", False) # Corrected
|
7094
|
+
)
|
7095
|
+
ws.conditional_formatting.add(cell_range, icon_set_rule)
|
7096
|
+
|
7097
|
+
|
7038
7098
|
# Save the workbook
|
7039
7099
|
wb.save(filename)
|
7040
7100
|
print(f"Formatted Excel file saved as:\n{filename}")
|
@@ -11011,6 +11071,8 @@ def mouse(
|
|
11011
11071
|
scroll_amount: int = -500,
|
11012
11072
|
fail_safe: bool = True,
|
11013
11073
|
grayscale: bool = False,
|
11074
|
+
n_try: int = 10,
|
11075
|
+
verbose: bool = True,
|
11014
11076
|
**kwargs,
|
11015
11077
|
):
|
11016
11078
|
"""
|
@@ -11037,6 +11099,9 @@ def mouse(
|
|
11037
11099
|
import pyautogui
|
11038
11100
|
import time
|
11039
11101
|
|
11102
|
+
# import logging
|
11103
|
+
# logging.basicConfig(level=logging.DEBUG, filename="debug.log")
|
11104
|
+
|
11040
11105
|
pyautogui.FAILSAFE = fail_safe # Enable/disable fail-safe
|
11041
11106
|
loc_type = "absolute" if "abs" in loc_type else "relative"
|
11042
11107
|
if len(args) == 1:
|
@@ -11045,7 +11110,6 @@ def mouse(
|
|
11045
11110
|
x_offset, y_offset = None, None
|
11046
11111
|
else:
|
11047
11112
|
x_offset, y_offset = args
|
11048
|
-
|
11049
11113
|
elif len(args) == 2:
|
11050
11114
|
x_offset, y_offset = args
|
11051
11115
|
elif len(args) == 3:
|
@@ -11079,38 +11143,35 @@ def mouse(
|
|
11079
11143
|
if region is None:
|
11080
11144
|
w, h = pyautogui.size()
|
11081
11145
|
region = (0, 0, w, h)
|
11082
|
-
|
11083
|
-
|
11084
|
-
|
11085
|
-
|
11086
|
-
|
11087
|
-
|
11088
|
-
|
11089
|
-
|
11090
|
-
|
11146
|
+
retries = 0
|
11147
|
+
while location is None and retries <= n_try:
|
11148
|
+
try:
|
11149
|
+
confidence_ = round(float(confidence - 0.05 * retries), 2)
|
11150
|
+
location = pyautogui.locateOnScreen(
|
11151
|
+
image_path,
|
11152
|
+
confidence=confidence_,
|
11153
|
+
region=region,
|
11154
|
+
grayscale=grayscale,
|
11155
|
+
)
|
11156
|
+
except Exception as e:
|
11157
|
+
if verbose:
|
11158
|
+
print(f"confidence={confidence_},{e}")
|
11159
|
+
location = None
|
11160
|
+
retries += 1
|
11091
11161
|
|
11092
11162
|
# try:
|
11093
11163
|
if location:
|
11094
11164
|
x, y = pyautogui.center(location)
|
11095
11165
|
x += x_offset if x_offset else 0
|
11096
|
-
|
11166
|
+
if x_offset is not None:
|
11167
|
+
x += x_offset
|
11168
|
+
if y_offset is not None:
|
11169
|
+
y += y_offset
|
11097
11170
|
x_offset, y_offset = x, y
|
11098
|
-
print(action)
|
11171
|
+
print(action) if verbose else None
|
11099
11172
|
if action in ["locate"]:
|
11100
11173
|
x, y = pyautogui.position()
|
11101
11174
|
elif action in ["click", "double_click", "triple_click"]:
|
11102
|
-
# if location:
|
11103
|
-
# x, y = pyautogui.center(location)
|
11104
|
-
# x += x_offset
|
11105
|
-
# y += y_offset
|
11106
|
-
# pyautogui.moveTo(x, y, duration=duration)
|
11107
|
-
# if action == "click":
|
11108
|
-
# pyautogui.click(x=x, y=y, clicks=n_click, interval=interval, button=button)
|
11109
|
-
# elif action == "double_click":
|
11110
|
-
# pyautogui.doubleClick(x=x, y=y, interval=interval, button=button)
|
11111
|
-
# elif action=='triple_click':
|
11112
|
-
# pyautogui.tripleClick(x=x,y=y,interval=interval, button=button)
|
11113
|
-
# else:
|
11114
11175
|
if action == "click":
|
11115
11176
|
pyautogui.moveTo(x_offset, y_offset, duration=duration)
|
11116
11177
|
time.sleep(wait)
|
@@ -11136,7 +11197,7 @@ def mouse(
|
|
11136
11197
|
if text is not None:
|
11137
11198
|
pyautogui.typewrite(text, interval=interval)
|
11138
11199
|
else:
|
11139
|
-
|
11200
|
+
print("Text must be provided for the 'type' action.") if verbose else None
|
11140
11201
|
|
11141
11202
|
elif action == "drag":
|
11142
11203
|
if loc_type == "absolute":
|
@@ -11168,15 +11229,7 @@ def mouse(
|
|
11168
11229
|
else:
|
11169
11230
|
raise ValueError(f"Unsupported action: {action}")
|
11170
11231
|
|
11171
|
-
# except pyautogui.ImageNotFoundException:
|
11172
|
-
# print(
|
11173
|
-
# "Image not found. Ensure the image is visible and parameters are correct."
|
11174
|
-
# )
|
11175
|
-
# except Exception as e:
|
11176
|
-
# print(f"An error occurred: {e}")
|
11177
|
-
|
11178
11232
|
|
11179
|
-
|
11180
11233
|
def py2installer(
|
11181
11234
|
script_path: str = None,
|
11182
11235
|
flatform: str = "mingw64",
|
@@ -11399,11 +11452,13 @@ def py2installer(
|
|
11399
11452
|
if any(exclude_import):
|
11400
11453
|
cmd.extend([f"--nofollow-import-to={','.join(exclude_import)}"])
|
11401
11454
|
if include_import is not None:
|
11402
|
-
if any(
|
11455
|
+
if any(
|
11456
|
+
include_import
|
11457
|
+
): # are included in the final build. Some packages may require manual inclusion.
|
11403
11458
|
cmd.extend([f"--include-package={','.join(include_import)}"])
|
11404
11459
|
if plugins:
|
11405
11460
|
for plugin in plugins:
|
11406
|
-
#Adds support for tkinter, ensuring it works correctly in the standalone build.
|
11461
|
+
# Adds support for tkinter, ensuring it works correctly in the standalone build.
|
11407
11462
|
cmd.extend([f"--enable-plugin={plugin}"])
|
11408
11463
|
|
11409
11464
|
if additional_args:
|
@@ -11422,7 +11477,9 @@ def py2installer(
|
|
11422
11477
|
# )
|
11423
11478
|
|
11424
11479
|
if clean_build:
|
11425
|
-
cmd.append(
|
11480
|
+
cmd.append(
|
11481
|
+
"--remove-output"
|
11482
|
+
) # Removes intermediate files created during the build process, keeping only the final executable.
|
11426
11483
|
# Add the script path (final positional argument)
|
11427
11484
|
cmd.append(str(script_path))
|
11428
11485
|
# Ensure Windows shell compatibility
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "py2ls"
|
3
|
-
version = "0.2.4.
|
3
|
+
version = "0.2.4.41"
|
4
4
|
description = "py(thon)2(too)ls"
|
5
5
|
authors = ["Jianfeng <Jianfeng.Liu0413@gmail.com>"]
|
6
6
|
readme = "README.md"
|
@@ -57,7 +57,7 @@ fpdf = ">=1.7.2"
|
|
57
57
|
fsspec = ">=2024.6.1"
|
58
58
|
fuzzywuzzy = ">=0.18.0"
|
59
59
|
ghp-import = ">=2.1.0"
|
60
|
-
GPUtil = ">= 1.4.0"
|
60
|
+
#GPUtil = ">= 1.4.0"
|
61
61
|
googletrans = ">=4.0.0rc1"
|
62
62
|
h11 = ">=0.9.0"
|
63
63
|
h2 = ">=3.2.0"
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|