2025-09-08T22:32:28,227 Created temporary directory: /tmp/pip-build-tracker-ltc6mawu 2025-09-08T22:32:28,227 Initialized build tracking at /tmp/pip-build-tracker-ltc6mawu 2025-09-08T22:32:28,227 Created build tracker: /tmp/pip-build-tracker-ltc6mawu 2025-09-08T22:32:28,228 Entered build tracker: /tmp/pip-build-tracker-ltc6mawu 2025-09-08T22:32:28,228 Created temporary directory: /tmp/pip-wheel-gu1tf0li 2025-09-08T22:32:28,231 Created temporary directory: /tmp/pip-ephem-wheel-cache-bth1vowo 2025-09-08T22:32:28,291 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2025-09-08T22:32:28,293 2 location(s) to search for versions of ctextlib: 2025-09-08T22:32:28,293 * https://pypi.org/simple/ctextlib/ 2025-09-08T22:32:28,293 * https://www.piwheels.org/simple/ctextlib/ 2025-09-08T22:32:28,294 Fetching project page and analyzing links: https://pypi.org/simple/ctextlib/ 2025-09-08T22:32:28,294 Getting page https://pypi.org/simple/ctextlib/ 2025-09-08T22:32:28,295 Found index url https://pypi.org/simple/ 2025-09-08T22:32:28,366 Fetched page https://pypi.org/simple/ctextlib/ as application/vnd.pypi.simple.v1+json 2025-09-08T22:32:28,376 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/5b/72/3bc14fed6203e2c7481e2df5e44c9739666c67ee051923b1d38271993518/ctextlib-1.0.4-cp37-cp37m-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,377 Found link https://files.pythonhosted.org/packages/2d/c2/d17cee41503a2d93a14df9277014344245eba7f6ec568e4de454d745ba1c/ctextlib-1.0.4.tar.gz (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.6), version: 1.0.4 2025-09-08T22:32:28,377 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/dc/a4/565d2936d1481b043ed7efd8b7b4868c28bac0e7a2d16ffa8d3d033ab232/ctextlib-1.0.5-cp37-cp37m-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,377 Found link https://files.pythonhosted.org/packages/ac/b5/9abafd80be608842df9bc2b31c98e01ca6fb9e9f9e42969cc53475bac860/ctextlib-1.0.5.tar.gz (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.6), version: 1.0.5 2025-09-08T22:32:28,377 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/46/74/21a05b36d7a24702e78d474f060a6bb06467fcaa783164d1eae91635067c/ctextlib-1.0.6-cp37-cp37m-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,377 Found link https://files.pythonhosted.org/packages/c8/ae/76ae847c34761c940a9da2a5f133d38350156ea56ae9f1aa0ba8e835c862/ctextlib-1.0.6.tar.gz (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.6), version: 1.0.6 2025-09-08T22:32:28,378 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/37/3b/674c93bac64a0bd7aae16d9dca65f2ef78b2c1fb48356d8b390b1a19c5c4/ctextlib-1.0.7-cp37-cp37m-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,378 Found link https://files.pythonhosted.org/packages/47/90/4bcb779a5a59498fec01b0f3112d6c4b78ffcb71fcf532221d8425c2ce3f/ctextlib-1.0.7.tar.gz (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.6), version: 1.0.7 2025-09-08T22:32:28,378 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/e0/df/d766887af041b9275b9e7ff1d235df24d5d98dca7c58b0f418a35ddbc6dd/ctextlib-1.0.8-cp37-cp37m-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,378 Found link https://files.pythonhosted.org/packages/88/a3/4768c5c10947b5ce1200474453eaf39bb405d0353d6d7b5d97994733f98d/ctextlib-1.0.8.tar.gz (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.6), version: 1.0.8 2025-09-08T22:32:28,378 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/fc/37/ee068efcb65640fe88707b534de01486f92587ca6851fba933186fad18ec/ctextlib-1.0.9-cp37-cp37m-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,379 Found link https://files.pythonhosted.org/packages/53/9f/9b540fd6f7bb2eb4ea76ee9f2b2b1ca02bad65d70d77a5ec8453b8cf0fa2/ctextlib-1.0.9.tar.gz (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.6), version: 1.0.9 2025-09-08T22:32:28,379 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/04/2f/a24a0ba5b41b361ecad3ea6e81ce059ec158e262495306ae8e490ee2e70b/ctextlib-1.0.10-cp37-cp37m-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,379 Found link https://files.pythonhosted.org/packages/85/79/8c3f6be982c8b0f077dfc3e6fa7b517912e235f2ed3653dcbd11801c723e/ctextlib-1.0.10.tar.gz (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.6), version: 1.0.10 2025-09-08T22:32:28,379 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/9d/fe/2cab8cfbc796c013b75d36724421699e789f1cddda9bb137890eb55b72c6/ctextlib-1.0.11-cp37-cp37m-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,379 Found link https://files.pythonhosted.org/packages/bd/d3/cc7b7e84267881130c22550e0a5c215437f5dc4f8457ecd90b6880005e7f/ctextlib-1.0.11.tar.gz (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.6), version: 1.0.11 2025-09-08T22:32:28,380 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/02/f1/661c120114bf01943cfa19ddd4a74cc77bd11aa4a27b3224558dffdeb883/ctextlib-1.0.12-cp37-cp37m-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,380 Found link https://files.pythonhosted.org/packages/25/a0/787e814f6f258ec2cf5dc762dcd4ea07c92f08e159b37d9d2198ac5b40a4/ctextlib-1.0.12.tar.gz (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.6), version: 1.0.12 2025-09-08T22:32:28,380 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/be/d6/1cec4b39c85c348def751afb57b3cd656b3d5ced5db0465c538f4fcc4d01/ctextlib-1.0.13-cp37-cp37m-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,380 Found link https://files.pythonhosted.org/packages/17/b3/7128f45b1f10f1c3aae9e3a1b55e47f3c0e9837421465570038f4f5b7c33/ctextlib-1.0.13.tar.gz (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.6), version: 1.0.13 2025-09-08T22:32:28,380 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/eb/f4/59de46faca5562844b5782d03a7b788e75b8fc22064e533b6e4a62018519/ctextlib-1.0.14-cp38-cp38-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,380 Found link https://files.pythonhosted.org/packages/82/72/95785b70510387b661a42b81815703a4c0f1b24b6e4dd59e747d998b55f8/ctextlib-1.0.14.tar.gz (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.6), version: 1.0.14 2025-09-08T22:32:28,381 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/ff/00/fdc6d7651be7e19a6a3fe48b83619bba97d4abc45f05cd10a70a0e3656d2/ctextlib-1.0.15-cp38-cp38-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,381 Found link https://files.pythonhosted.org/packages/29/fb/526e002e6060467f9d0995e6e01267b70732784dd8437bb3693c483fbbf7/ctextlib-1.0.15.tar.gz (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.6), version: 1.0.15 2025-09-08T22:32:28,381 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/04/df/3ddb47768df184439bbfe50ac86bd3e84acebe8a3eaa368108f0da4f25e4/ctextlib-1.0.16-cp37-cp37m-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=2.7) 2025-09-08T22:32:28,381 Found link https://files.pythonhosted.org/packages/f4/25/2366dc925e3962f106b39ad82a41fbbfc8d42ec1dce57a22930c07efd533/ctextlib-1.0.16.tar.gz (from https://pypi.org/simple/ctextlib/) (requires-python:>=2.7), version: 1.0.16 2025-09-08T22:32:28,382 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/b4/a6/50668d8c89c42a048184a2f490c93ec4db6ded1a96437788fbf65ef05d9b/ctextlib-1.0.17-py3-none-win32.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=2.7) 2025-09-08T22:32:28,382 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/f6/07/dde028d6a89cbba61d690825e657036bd7671987544f7508aa978077e362/ctextlib-1.0.17-py3-none-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=2.7) 2025-09-08T22:32:28,382 Found link https://files.pythonhosted.org/packages/06/f2/ed60807b628449eb58d0597e8b8c2c6dc76a89921411e1d2571baf591418/ctextlib-1.0.17.tar.gz (from https://pypi.org/simple/ctextlib/) (requires-python:>=2.7), version: 1.0.17 2025-09-08T22:32:28,382 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/4b/3d/916f9ac7f5cfdb731a1b47b8f5c4ee082e6b0911de198d1b7fba24c2d331/ctextlib-1.0.18-py3-none-win32.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=2.7) 2025-09-08T22:32:28,382 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/d7/32/b2e71ad9f4f415623d6ecca531f294adf01a165dd18f89c60eeae4639ca5/ctextlib-1.0.18-py3-none-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=2.7) 2025-09-08T22:32:28,383 Found link https://files.pythonhosted.org/packages/a6/e7/0179a702b98d7588062b5d88bb133c8c40bcfad6e57072de051023a52f5c/ctextlib-1.0.18.tar.gz (from https://pypi.org/simple/ctextlib/) (requires-python:>=2.7), version: 1.0.18 2025-09-08T22:32:28,383 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/7a/5a/551b6f583703187d7261235b55b3999a4add76bd5464496b4af50fa3b874/ctextlib-1.0.19-py3-none-win32.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=2.7) 2025-09-08T22:32:28,383 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/73/79/abd2d4fc481245351704768906b4c193b40424690ca29284de4351648468/ctextlib-1.0.19-py3-none-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=2.7) 2025-09-08T22:32:28,383 Found link https://files.pythonhosted.org/packages/7d/e2/37affb4fcf4343dec4ad0da427e6f894265c5c6d8416a91a62e6053b0a12/ctextlib-1.0.19.tar.gz (from https://pypi.org/simple/ctextlib/) (requires-python:>=2.7), version: 1.0.19 2025-09-08T22:32:28,383 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/6f/f4/198c537e1c151722e19115cf5126b97a0a5dc7c2833be970c9d2d4735a95/ctextlib-1.0.20-py3-none-win32.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=2.7) 2025-09-08T22:32:28,383 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/03/00/884ab69d94968299768a48a1229642e1f30313ef56af9c2d6faffbfad928/ctextlib-1.0.20-py3-none-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=2.7) 2025-09-08T22:32:28,384 Found link https://files.pythonhosted.org/packages/86/8f/92e0fa0cbcd4b7eed308c6c2a61dd9324b408b8b28ee56af4ae2438694b9/ctextlib-1.0.20.tar.gz (from https://pypi.org/simple/ctextlib/) (requires-python:>=2.7), version: 1.0.20 2025-09-08T22:32:28,384 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/6c/3c/390a07e7ff1dec68304ec8c8ce920ac3f4ad518877e43db2cf1144835662/ctextlib-1.0.21-cp310-cp310-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=2.7) 2025-09-08T22:32:28,384 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/cd/67/42e65f7406acb14f765392c74dff2ded7a94f3955336a4dacdfbb12079d1/ctextlib-1.0.21-cp311-cp311-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=2.7) 2025-09-08T22:32:28,384 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/38/c4/f7ac151e4d3b8628bbd3a159df0e2c46044ecbe3153063b4f6958b99681b/ctextlib-1.0.21-cp312-cp312-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=2.7) 2025-09-08T22:32:28,384 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/a2/57/c92d20010c03127b2c60cb0050a629490b75687fb8acc60899131251f545/ctextlib-1.0.21-cp36-cp36m-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=2.7) 2025-09-08T22:32:28,384 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/a7/be/13f2f461ab24bbf5b9c45b5073f9f54510f65d3772520e5cbdc8a5e4b454/ctextlib-1.0.21-cp37-cp37m-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=2.7) 2025-09-08T22:32:28,384 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/9d/f0/8f89f312cbc832e4846cbf679905f230b8c625dd3365df01d0c36026bd18/ctextlib-1.0.21-cp38-cp38-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=2.7) 2025-09-08T22:32:28,385 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/30/5c/3e2254eba986616e98a43028936b176175400196f8d2646bee27eb638201/ctextlib-1.0.21-cp39-cp39-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=2.7) 2025-09-08T22:32:28,385 Found link https://files.pythonhosted.org/packages/10/21/02df03dd06fea36ab92fbe9ed8612365dbdf68bf018222079c510627ab0e/ctextlib-1.0.21.tar.gz (from https://pypi.org/simple/ctextlib/) (requires-python:>=2.7), version: 1.0.21 2025-09-08T22:32:28,385 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/7e/b3/7645895f774976f4200a48de8585aa1701ce612a26777d409a53667b9a51/ctextlib-1.0.22-cp310-cp310-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=2.7) 2025-09-08T22:32:28,385 Found link https://files.pythonhosted.org/packages/7d/24/8b75f7a83cac54c2f1bff3cd5464ea25a453eac06269663f80b870dd74f0/ctextlib-1.0.22.tar.gz (from https://pypi.org/simple/ctextlib/) (requires-python:>=2.7), version: 1.0.22 2025-09-08T22:32:28,385 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/c9/7d/c1eaa1ba8359b02281783249f38cb49d9d1baad97827d487423c8ef98fe1/ctextlib-1.0.23-cp310-cp310-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.5) 2025-09-08T22:32:28,385 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/93/6a/2f267a888f625a97864c8ef951132050949ad68176f4583f8cc06bd587d1/ctextlib-1.0.23-cp311-cp311-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.5) 2025-09-08T22:32:28,386 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/c8/ed/30d78ed82e2be806ea42cdfda6794f0505ed0540b368274c846dae6b1e22/ctextlib-1.0.23-cp312-cp312-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.5) 2025-09-08T22:32:28,386 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/90/f7/e885828cb4c614d6003309f67d55fe08610225b97ec8efd7a217f277ed31/ctextlib-1.0.23-cp313-cp313-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.5) 2025-09-08T22:32:28,386 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/60/21/3f35ebc68d9dd1e52fb02029eb351b4f780da7f88baa9b6c5b470eebd524/ctextlib-1.0.23-cp37-cp37m-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.5) 2025-09-08T22:32:28,386 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/6c/20/f544c961281db41778e4fe99fc2daf8273e5a33756d1f5af8fb683c598ed/ctextlib-1.0.23-cp38-cp38-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.5) 2025-09-08T22:32:28,386 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/f2/9b/a8711b42e1b7d20fe2053a38e903b7e142b99b5d439f67656177aa4c94db/ctextlib-1.0.23-cp39-cp39-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.5) 2025-09-08T22:32:28,387 Found link https://files.pythonhosted.org/packages/23/48/fc27260d0375e1c28178e5b128e382acdfaa4a4b490dc76bd0ac6da90da9/ctextlib-1.0.23.tar.gz (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.5), version: 1.0.23 2025-09-08T22:32:28,387 Found link https://files.pythonhosted.org/packages/db/a2/d84701d54dd993711adddcaaa82b25bf7848ec598e94d1945fa4e4a714ba/ctextlib-1.0.24.tar.gz (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.5), version: 1.0.24 2025-09-08T22:32:28,387 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/83/77/4db1655b6df374af434b289fb55bcb79b052e0de4d7f5f21ad9be2d11d28/ctextlib-1.0.25-cp310-cp310-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.5) 2025-09-08T22:32:28,387 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/d3/0a/43fb4d44ec3c69875bcc73c718c541a4b1502be84d24e48937bc0c940bdb/ctextlib-1.0.25-cp311-cp311-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.5) 2025-09-08T22:32:28,387 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/c0/46/56a3758a377a24a5490528d3dedefbb13cd7f974a38f1eb2b22139f92416/ctextlib-1.0.25-cp312-cp312-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.5) 2025-09-08T22:32:28,387 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/cd/5a/3e5acf0cff11f309823788999472b687143369dfe2d76f95e1f57f9137cb/ctextlib-1.0.25-cp37-cp37m-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.5) 2025-09-08T22:32:28,388 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/e0/1a/919c712982319851348361a2ec71ea753cf783bbf50bf77b7b179e47e834/ctextlib-1.0.25-cp38-cp38-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.5) 2025-09-08T22:32:28,388 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/c6/f0/0805093c90fd356b4f7ebe6c216e90379bca6cd2230dfb931bd6b3f7018d/ctextlib-1.0.25-cp39-cp39-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.5) 2025-09-08T22:32:28,388 Found link https://files.pythonhosted.org/packages/de/e5/dc3c884bede51176e17e2c3505b66bcc41f101674439a9c365def1cf2c4d/ctextlib-1.0.25.tar.gz (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.5), version: 1.0.25 2025-09-08T22:32:28,388 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/fb/cc/9be24a489aba19b41d70a06e8bd9a218d17c2baf8b9c34bb5e5e814654d7/ctextlib-1.0.26-cp310-cp310-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.5) 2025-09-08T22:32:28,388 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/79/55/fb17c0dcf96d9744b0af718bb273872c91905d270e18cabac96fa44d032f/ctextlib-1.0.26-cp311-cp311-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.5) 2025-09-08T22:32:28,388 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/dc/ae/40ef56385f1208a12410f52e82ac12c97c9420e891aecf381bad0aa90561/ctextlib-1.0.26-cp312-cp312-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.5) 2025-09-08T22:32:28,388 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/59/1e/0cfb7326b21ad927ee1614bae5bb8fb233bac6bbf361d724cb8ebee40bd4/ctextlib-1.0.26-cp36-cp36m-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.5) 2025-09-08T22:32:28,389 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/32/bd/363359f7d9aabab4a82aa851dc541a2d9214d1fd70d74500187808f74f97/ctextlib-1.0.26-cp37-cp37m-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.5) 2025-09-08T22:32:28,389 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/cd/c4/9086a4c7029b87208f957d2844d864bc3a865d8a6ccc43281028d1936e6c/ctextlib-1.0.26-cp38-cp38-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.5) 2025-09-08T22:32:28,389 Skipping link: No binaries permitted for ctextlib: https://files.pythonhosted.org/packages/5d/9c/ee6c264dcc73fe81bda518a4717142e911c18ef1b87157cac930574c2218/ctextlib-1.0.26-cp39-cp39-win_amd64.whl (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.5) 2025-09-08T22:32:28,389 Found link https://files.pythonhosted.org/packages/05/d6/fdc14a1ceb8e15a1bf9c277f151e3f7faf8abdafe6ed1d58f970cb65ae5b/ctextlib-1.0.26.tar.gz (from https://pypi.org/simple/ctextlib/) (requires-python:>=3.5), version: 1.0.26 2025-09-08T22:32:28,389 Fetching project page and analyzing links: https://www.piwheels.org/simple/ctextlib/ 2025-09-08T22:32:28,390 Getting page https://www.piwheels.org/simple/ctextlib/ 2025-09-08T22:32:28,390 Found index url https://www.piwheels.org/simple/ 2025-09-08T22:32:28,480 Fetched page https://www.piwheels.org/simple/ctextlib/ as text/html 2025-09-08T22:32:28,497 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.26-cp311-cp311-linux_armv6l.whl#sha256=b21d2c6d1379f5fd29510696e724ca4e2a3723eac59b44bedc284d65061792ce (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.5) 2025-09-08T22:32:28,497 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.26-cp311-cp311-linux_armv7l.whl#sha256=b21d2c6d1379f5fd29510696e724ca4e2a3723eac59b44bedc284d65061792ce (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.5) 2025-09-08T22:32:28,498 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.25-cp311-cp311-linux_armv6l.whl#sha256=31bdb341f49035d3241f6b9d5fe520c2340582043d1f0ea254afcdde552f33e3 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.5) 2025-09-08T22:32:28,498 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.25-cp311-cp311-linux_armv7l.whl#sha256=31bdb341f49035d3241f6b9d5fe520c2340582043d1f0ea254afcdde552f33e3 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.5) 2025-09-08T22:32:28,498 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.24-cp311-cp311-linux_armv6l.whl#sha256=455da14ebfba1e15690604dfdcaddf05ef2296c59fb79b63845580f2eacf632a (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.5) 2025-09-08T22:32:28,498 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.24-cp311-cp311-linux_armv7l.whl#sha256=455da14ebfba1e15690604dfdcaddf05ef2296c59fb79b63845580f2eacf632a (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.5) 2025-09-08T22:32:28,498 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.21-cp37-cp37m-linux_armv6l.whl#sha256=9ef16b6cca5db477a0dfdd5cdacf2034978b738986cd048d29b62ef296ff80e1 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=2.7) 2025-09-08T22:32:28,498 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.21-cp37-cp37m-linux_armv7l.whl#sha256=9ef16b6cca5db477a0dfdd5cdacf2034978b738986cd048d29b62ef296ff80e1 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=2.7) 2025-09-08T22:32:28,499 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.21-cp39-cp39-linux_armv6l.whl#sha256=5efd1ef10081d4178b679ca179d2526e6ea5387a97dc6396ff01d7fcfb968a6f (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=2.7) 2025-09-08T22:32:28,499 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.21-cp39-cp39-linux_armv7l.whl#sha256=5efd1ef10081d4178b679ca179d2526e6ea5387a97dc6396ff01d7fcfb968a6f (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=2.7) 2025-09-08T22:32:28,499 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.20-py3-none-linux_armv6l.whl#sha256=91d937731660e4591658a873a22b6ba7c0d27eb28103659441473ef07d2bfef2 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=2.7) 2025-09-08T22:32:28,499 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.20-py3-none-linux_armv7l.whl#sha256=91d937731660e4591658a873a22b6ba7c0d27eb28103659441473ef07d2bfef2 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=2.7) 2025-09-08T22:32:28,499 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.19-py3-none-linux_armv6l.whl#sha256=4bdbccf08b9cde07635b2370c6dee965936feb367be396dc4114746ed1659b49 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=2.7) 2025-09-08T22:32:28,499 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.19-py3-none-linux_armv7l.whl#sha256=4bdbccf08b9cde07635b2370c6dee965936feb367be396dc4114746ed1659b49 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=2.7) 2025-09-08T22:32:28,499 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.18-py3-none-linux_armv6l.whl#sha256=68656231f9fcf9a55f9d93547a1151f69a57352839ae8efb77c7b23a3f936035 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=2.7) 2025-09-08T22:32:28,500 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.18-py3-none-linux_armv7l.whl#sha256=68656231f9fcf9a55f9d93547a1151f69a57352839ae8efb77c7b23a3f936035 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=2.7) 2025-09-08T22:32:28,500 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.17-py3-none-linux_armv6l.whl#sha256=d73984e8d486e2912def68438f9a6860212cc62f07f3f9d77bc13949144e3bf1 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=2.7) 2025-09-08T22:32:28,500 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.17-py3-none-linux_armv7l.whl#sha256=d73984e8d486e2912def68438f9a6860212cc62f07f3f9d77bc13949144e3bf1 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=2.7) 2025-09-08T22:32:28,500 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.16-cp37-cp37m-linux_armv6l.whl#sha256=08bb24c133e31b1012d68f5d12c30134edef946c180bac53bb898a65254c869e (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=2.7) 2025-09-08T22:32:28,500 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.16-cp37-cp37m-linux_armv7l.whl#sha256=08bb24c133e31b1012d68f5d12c30134edef946c180bac53bb898a65254c869e (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=2.7) 2025-09-08T22:32:28,500 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.16-cp39-cp39-linux_armv6l.whl#sha256=74efd4ee4266aaf409153cd78fbc14fb5ab19a681ea3da94e9fc12e102429fb4 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=2.7) 2025-09-08T22:32:28,500 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.16-cp39-cp39-linux_armv7l.whl#sha256=74efd4ee4266aaf409153cd78fbc14fb5ab19a681ea3da94e9fc12e102429fb4 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=2.7) 2025-09-08T22:32:28,500 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.15-cp37-cp37m-linux_armv6l.whl#sha256=a41ec9bfc2461dde6fda830e711450df7a8cb5e897cb5a3f728cd6d837dc9731 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,501 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.15-cp37-cp37m-linux_armv7l.whl#sha256=a41ec9bfc2461dde6fda830e711450df7a8cb5e897cb5a3f728cd6d837dc9731 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,501 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.15-cp39-cp39-linux_armv6l.whl#sha256=7fbc35c792dfc4b66a6d8eba630653427e1eb6bc8dcc1a75fb8cea1962f05f1c (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,501 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.15-cp39-cp39-linux_armv7l.whl#sha256=7fbc35c792dfc4b66a6d8eba630653427e1eb6bc8dcc1a75fb8cea1962f05f1c (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,501 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.14-cp37-cp37m-linux_armv6l.whl#sha256=1cf5844e5574bf1d41fdd5cf774cd1104e99b98bca973d4591741df73f18dd57 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,501 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.14-cp37-cp37m-linux_armv7l.whl#sha256=1cf5844e5574bf1d41fdd5cf774cd1104e99b98bca973d4591741df73f18dd57 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,501 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.14-cp39-cp39-linux_armv6l.whl#sha256=17693709fe6b6025f50189db21964fa509fa197819dcb4966cdcf5e37eeb8857 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,501 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.14-cp39-cp39-linux_armv7l.whl#sha256=17693709fe6b6025f50189db21964fa509fa197819dcb4966cdcf5e37eeb8857 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,502 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.13-cp37-cp37m-linux_armv7l.whl#sha256=4f2017e7bf7a2ba0842b9d9e39331c4f1d6822edff8ca1604d73b42a2f679886 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,502 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.13-cp37-cp37m-linux_armv6l.whl#sha256=4f2017e7bf7a2ba0842b9d9e39331c4f1d6822edff8ca1604d73b42a2f679886 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,502 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.13-cp39-cp39-linux_armv6l.whl#sha256=bf1d1657363a5eece4b03a6f014444c5c6f1a1f6614c34beab34dd3d955b7e31 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,502 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.13-cp39-cp39-linux_armv7l.whl#sha256=bf1d1657363a5eece4b03a6f014444c5c6f1a1f6614c34beab34dd3d955b7e31 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,502 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.12-cp37-cp37m-linux_armv7l.whl#sha256=7fed7a10b12df870a9d2e2045762d98730fcf84aa4d62d765d3fc4dbe20725ba (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,502 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.12-cp37-cp37m-linux_armv6l.whl#sha256=7fed7a10b12df870a9d2e2045762d98730fcf84aa4d62d765d3fc4dbe20725ba (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,502 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.12-cp39-cp39-linux_armv6l.whl#sha256=92bfc13dc599dbdf0036107241f6712dd44c1b9ba35b5797c770cfe2316d64c8 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,503 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.12-cp39-cp39-linux_armv7l.whl#sha256=92bfc13dc599dbdf0036107241f6712dd44c1b9ba35b5797c770cfe2316d64c8 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,503 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.11-cp37-cp37m-linux_armv6l.whl#sha256=847090aeca11027344ea29c4199c7d0f931512ad881f853e171a2e2095ab9c44 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,503 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.11-cp37-cp37m-linux_armv7l.whl#sha256=847090aeca11027344ea29c4199c7d0f931512ad881f853e171a2e2095ab9c44 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,503 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.11-cp39-cp39-linux_armv6l.whl#sha256=d0af962f4f10ed14965f579a8af55a74b2a5df9295b378af7af209ce9c52c8f1 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,503 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.11-cp39-cp39-linux_armv7l.whl#sha256=d0af962f4f10ed14965f579a8af55a74b2a5df9295b378af7af209ce9c52c8f1 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,503 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.9-cp37-cp37m-linux_armv7l.whl#sha256=5165337d644f70bc93e0d65359a85b0163b14ee0b152dbff319c02b3e9daf38e (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,503 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.9-cp37-cp37m-linux_armv6l.whl#sha256=5165337d644f70bc93e0d65359a85b0163b14ee0b152dbff319c02b3e9daf38e (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,504 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.9-cp39-cp39-linux_armv6l.whl#sha256=e0e0d30ee43a0319e9f1fbce696cf3ead2059c16b401c82a489dac06fe0dcbf2 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,504 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.9-cp39-cp39-linux_armv7l.whl#sha256=e0e0d30ee43a0319e9f1fbce696cf3ead2059c16b401c82a489dac06fe0dcbf2 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,504 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.8-cp37-cp37m-linux_armv6l.whl#sha256=fe1ad5bbe5d51bdf51d2f78545b355ebeb6ade8f5e2cc57eec9ccc0f9c6ffb1e (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,504 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.8-cp37-cp37m-linux_armv7l.whl#sha256=fe1ad5bbe5d51bdf51d2f78545b355ebeb6ade8f5e2cc57eec9ccc0f9c6ffb1e (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,504 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.8-cp39-cp39-linux_armv6l.whl#sha256=0b88b2310618c5f26471eef71d405d07cbc6c8dbfca3cf1f1667dd20b73d3e07 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,504 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.8-cp39-cp39-linux_armv7l.whl#sha256=0b88b2310618c5f26471eef71d405d07cbc6c8dbfca3cf1f1667dd20b73d3e07 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,504 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.7-cp37-cp37m-linux_armv6l.whl#sha256=4ce1ca13532cb54845af550cba90ba23ca50f8c0c38ec04e9db1d16fb4a51ef2 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,504 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.7-cp37-cp37m-linux_armv7l.whl#sha256=4ce1ca13532cb54845af550cba90ba23ca50f8c0c38ec04e9db1d16fb4a51ef2 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,505 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.7-cp39-cp39-linux_armv6l.whl#sha256=c89bb4ebaeb44554480cedbf39e741b2dc5dae4163da9047e4d3808890abba52 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,505 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.7-cp39-cp39-linux_armv7l.whl#sha256=c89bb4ebaeb44554480cedbf39e741b2dc5dae4163da9047e4d3808890abba52 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,505 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.6-cp37-cp37m-linux_armv7l.whl#sha256=bb8e8bf6b2b9e2ca4b93e8eb092e601c2932e1daab61c83fa0f9122fc10fcadb (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,505 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.6-cp37-cp37m-linux_armv6l.whl#sha256=bb8e8bf6b2b9e2ca4b93e8eb092e601c2932e1daab61c83fa0f9122fc10fcadb (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,505 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.6-cp39-cp39-linux_armv6l.whl#sha256=b7a5246abbd0c8324e45d9a79c90e881ae83745480e91ffa927b050330192781 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,505 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.6-cp39-cp39-linux_armv7l.whl#sha256=b7a5246abbd0c8324e45d9a79c90e881ae83745480e91ffa927b050330192781 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,505 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.5-cp37-cp37m-linux_armv7l.whl#sha256=0792514d4f5ff393733f58d4515e8fe95e7a4e543411063ab830f3876fd2e2e1 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,506 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.5-cp37-cp37m-linux_armv6l.whl#sha256=0792514d4f5ff393733f58d4515e8fe95e7a4e543411063ab830f3876fd2e2e1 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,506 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.5-cp39-cp39-linux_armv6l.whl#sha256=8b0319652a0098b72fb1536af2f72acb457fa595723a27ad36cebcec20772c53 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,506 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.5-cp39-cp39-linux_armv7l.whl#sha256=8b0319652a0098b72fb1536af2f72acb457fa595723a27ad36cebcec20772c53 (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,506 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.4-cp37-cp37m-linux_armv6l.whl#sha256=fc883fc1c9515a6822a2a0ac43d9812c5d2beb5f9ad7db748a70e33b2ef5acbd (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,506 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.4-cp37-cp37m-linux_armv7l.whl#sha256=fc883fc1c9515a6822a2a0ac43d9812c5d2beb5f9ad7db748a70e33b2ef5acbd (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,506 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.4-cp39-cp39-linux_armv6l.whl#sha256=b85580e0e1156b99cc0d8907361269277ca5f1c980a55f2511b79dd57769940f (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,506 Skipping link: No binaries permitted for ctextlib: https://archive1.piwheels.org/simple/ctextlib/ctextlib-1.0.4-cp39-cp39-linux_armv7l.whl#sha256=b85580e0e1156b99cc0d8907361269277ca5f1c980a55f2511b79dd57769940f (from https://www.piwheels.org/simple/ctextlib/) (requires-python:>=3.6) 2025-09-08T22:32:28,507 Skipping link: not a file: https://www.piwheels.org/simple/ctextlib/ 2025-09-08T22:32:28,507 Skipping link: not a file: https://pypi.org/simple/ctextlib/ 2025-09-08T22:32:28,531 Given no hashes to check 1 links for project 'ctextlib': discarding no candidates 2025-09-08T22:32:28,532 Collecting ctextlib==1.0.10 2025-09-08T22:32:28,534 Created temporary directory: /tmp/pip-unpack-vqxxyh0f 2025-09-08T22:32:28,672 Downloading ctextlib-1.0.10.tar.gz (206 kB) 2025-09-08T22:32:28,770 Added ctextlib==1.0.10 from https://files.pythonhosted.org/packages/85/79/8c3f6be982c8b0f077dfc3e6fa7b517912e235f2ed3653dcbd11801c723e/ctextlib-1.0.10.tar.gz to build tracker '/tmp/pip-build-tracker-ltc6mawu' 2025-09-08T22:32:28,771 Running setup.py (path:/tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/setup.py) egg_info for package ctextlib 2025-09-08T22:32:28,771 Created temporary directory: /tmp/pip-pip-egg-info-15xmdx9w 2025-09-08T22:32:28,771 Preparing metadata (setup.py): started 2025-09-08T22:32:28,772 Running command python setup.py egg_info 2025-09-08T22:32:29,863 /usr/local/lib/python3.13/dist-packages/setuptools/dist.py:759: SetuptoolsDeprecationWarning: License classifiers are deprecated. 2025-09-08T22:32:29,863 !! 2025-09-08T22:32:29,863 ******************************************************************************** 2025-09-08T22:32:29,863 Please consider removing the following classifiers in favor of a SPDX license expression: 2025-09-08T22:32:29,863 License :: OSI Approved :: MIT License 2025-09-08T22:32:29,863 See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. 2025-09-08T22:32:29,863 ******************************************************************************** 2025-09-08T22:32:29,864 !! 2025-09-08T22:32:29,864 self._finalize_license_expression() 2025-09-08T22:32:29,937 running egg_info 2025-09-08T22:32:30,014 creating /tmp/pip-pip-egg-info-15xmdx9w/ctextlib.egg-info 2025-09-08T22:32:30,014 writing /tmp/pip-pip-egg-info-15xmdx9w/ctextlib.egg-info/PKG-INFO 2025-09-08T22:32:30,016 writing dependency_links to /tmp/pip-pip-egg-info-15xmdx9w/ctextlib.egg-info/dependency_links.txt 2025-09-08T22:32:30,016 writing top-level names to /tmp/pip-pip-egg-info-15xmdx9w/ctextlib.egg-info/top_level.txt 2025-09-08T22:32:30,017 writing manifest file '/tmp/pip-pip-egg-info-15xmdx9w/ctextlib.egg-info/SOURCES.txt' 2025-09-08T22:32:30,166 reading manifest file '/tmp/pip-pip-egg-info-15xmdx9w/ctextlib.egg-info/SOURCES.txt' 2025-09-08T22:32:30,167 reading manifest template 'MANIFEST.in' 2025-09-08T22:32:30,176 adding license file 'LICENSE' 2025-09-08T22:32:30,179 writing manifest file '/tmp/pip-pip-egg-info-15xmdx9w/ctextlib.egg-info/SOURCES.txt' 2025-09-08T22:32:30,291 Preparing metadata (setup.py): finished with status 'done' 2025-09-08T22:32:30,298 Source in /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de has version 1.0.10, which satisfies requirement ctextlib==1.0.10 from https://files.pythonhosted.org/packages/85/79/8c3f6be982c8b0f077dfc3e6fa7b517912e235f2ed3653dcbd11801c723e/ctextlib-1.0.10.tar.gz 2025-09-08T22:32:30,299 Removed ctextlib==1.0.10 from https://files.pythonhosted.org/packages/85/79/8c3f6be982c8b0f077dfc3e6fa7b517912e235f2ed3653dcbd11801c723e/ctextlib-1.0.10.tar.gz from build tracker '/tmp/pip-build-tracker-ltc6mawu' 2025-09-08T22:32:30,308 Created temporary directory: /tmp/pip-unpack-edefjvde 2025-09-08T22:32:30,308 Created temporary directory: /tmp/pip-unpack-vv8fsdi9 2025-09-08T22:32:30,309 Building wheels for collected packages: ctextlib 2025-09-08T22:32:30,310 Created temporary directory: /tmp/pip-wheel-luqrrt4o 2025-09-08T22:32:30,310 DEPRECATION: Building 'ctextlib' using the legacy setup.py bdist_wheel mechanism, which will be removed in a future version. pip 25.3 will enforce this behaviour change. A possible replacement is to use the standardized build interface by setting the `--use-pep517` option, (possibly combined with `--no-build-isolation`), or adding a `pyproject.toml` file to the source tree of 'ctextlib'. Discussion can be found at https://github.com/pypa/pip/issues/6334 2025-09-08T22:32:30,311 Building wheel for ctextlib (setup.py): started 2025-09-08T22:32:30,312 Destination directory: /tmp/pip-wheel-luqrrt4o 2025-09-08T22:32:30,312 Running command python setup.py bdist_wheel 2025-09-08T22:32:31,380 /usr/local/lib/python3.13/dist-packages/setuptools/dist.py:759: SetuptoolsDeprecationWarning: License classifiers are deprecated. 2025-09-08T22:32:31,380 !! 2025-09-08T22:32:31,380 ******************************************************************************** 2025-09-08T22:32:31,380 Please consider removing the following classifiers in favor of a SPDX license expression: 2025-09-08T22:32:31,380 License :: OSI Approved :: MIT License 2025-09-08T22:32:31,381 See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. 2025-09-08T22:32:31,381 ******************************************************************************** 2025-09-08T22:32:31,381 !! 2025-09-08T22:32:31,381 self._finalize_license_expression() 2025-09-08T22:32:31,381 running bdist_wheel 2025-09-08T22:32:31,678 running build 2025-09-08T22:32:31,678 running build_ext 2025-09-08T22:32:31,776 CMake Deprecation Warning at CMakeLists.txt:1 (cmake_minimum_required): 2025-09-08T22:32:31,777 Compatibility with CMake < 3.10 will be removed from a future version of 2025-09-08T22:32:31,777 CMake. 2025-09-08T22:32:31,777 Update the VERSION argument value. Or, use the ... syntax 2025-09-08T22:32:31,777 to tell CMake that the project requires at least but has been updated 2025-09-08T22:32:31,777 to work with policies introduced by or earlier. 2025-09-08T22:32:32,077 -- The C compiler identification is GNU 14.2.0 2025-09-08T22:32:32,412 -- The CXX compiler identification is GNU 14.2.0 2025-09-08T22:32:32,462 -- Detecting C compiler ABI info 2025-09-08T22:32:32,885 -- Detecting C compiler ABI info - done 2025-09-08T22:32:32,962 -- Check for working C compiler: /usr/bin/cc - skipped 2025-09-08T22:32:32,964 -- Detecting C compile features 2025-09-08T22:32:32,966 -- Detecting C compile features - done 2025-09-08T22:32:33,037 -- Detecting CXX compiler ABI info 2025-09-08T22:32:33,519 -- Detecting CXX compiler ABI info - done 2025-09-08T22:32:33,599 -- Check for working CXX compiler: /usr/bin/c++ - skipped 2025-09-08T22:32:33,601 -- Detecting CXX compile features 2025-09-08T22:32:33,605 -- Detecting CXX compile features - done 2025-09-08T22:32:33,640 CMake Deprecation Warning at pybind11/CMakeLists.txt:8 (cmake_minimum_required): 2025-09-08T22:32:33,641 Compatibility with CMake < 3.10 will be removed from a future version of 2025-09-08T22:32:33,641 CMake. 2025-09-08T22:32:33,641 Update the VERSION argument value. Or, use the ... syntax 2025-09-08T22:32:33,641 to tell CMake that the project requires at least but has been updated 2025-09-08T22:32:33,641 to work with policies introduced by or earlier. 2025-09-08T22:32:33,642 CMake Deprecation Warning at pybind11/tools/pybind11Tools.cmake:8 (cmake_minimum_required): 2025-09-08T22:32:33,642 Compatibility with CMake < 3.10 will be removed from a future version of 2025-09-08T22:32:33,642 CMake. 2025-09-08T22:32:33,643 Update the VERSION argument value. Or, use the ... syntax 2025-09-08T22:32:33,643 to tell CMake that the project requires at least but has been updated 2025-09-08T22:32:33,643 to work with policies introduced by or earlier. 2025-09-08T22:32:33,643 Call Stack (most recent call first): 2025-09-08T22:32:33,643 pybind11/CMakeLists.txt:33 (include) 2025-09-08T22:32:33,644 CMake Warning (dev) at pybind11/tools/FindPythonLibsNew.cmake:60 (find_package): 2025-09-08T22:32:33,644 Policy CMP0148 is not set: The FindPythonInterp and FindPythonLibs modules 2025-09-08T22:32:33,644 are removed. Run "cmake --help-policy CMP0148" for policy details. Use 2025-09-08T22:32:33,644 the cmake_policy command to set the policy and suppress this warning. 2025-09-08T22:32:33,645 Call Stack (most recent call first): 2025-09-08T22:32:33,645 pybind11/tools/pybind11Tools.cmake:16 (find_package) 2025-09-08T22:32:33,645 pybind11/CMakeLists.txt:33 (include) 2025-09-08T22:32:33,645 This warning is for project developers. Use -Wno-dev to suppress it. 2025-09-08T22:32:33,713 -- Found PythonInterp: /usr/bin/python3 (found version "3.13.5") 2025-09-08T22:32:34,324 -- Found PythonLibs: /usr/lib/arm-linux-gnueabihf/libpython3.13.so 2025-09-08T22:32:34,335 -- Performing Test HAS_CPP14_FLAG 2025-09-08T22:32:34,827 -- Performing Test HAS_CPP14_FLAG - Success 2025-09-08T22:32:34,847 -- pybind11 v2.4.3 2025-09-08T22:32:34,854 -- Performing Test HAS_FLTO 2025-09-08T22:32:35,513 -- Performing Test HAS_FLTO - Success 2025-09-08T22:32:35,514 -- LTO enabled 2025-09-08T22:32:35,516 -- Configuring done (3.7s) 2025-09-08T22:32:35,532 -- Generating done (0.0s) 2025-09-08T22:32:35,534 -- Build files have been written to: /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/build/temp.linux-armv7l-cpython-313 2025-09-08T22:32:35,817 [ 50%] Building CXX object CMakeFiles/ctextlib.dir/src/module.cpp.o 2025-09-08T22:32:38,220 In file included from /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/pybind11/include/pybind11/cast.h:16, 2025-09-08T22:32:38,221 from /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/pybind11/include/pybind11/attr.h:13, 2025-09-08T22:32:38,221 from /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/pybind11/include/pybind11/pybind11.h:44, 2025-09-08T22:32:38,221 from /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/module.cpp:4: 2025-09-08T22:32:38,221 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/pybind11/include/pybind11/detail/internals.h: In function ‘pybind11::detail::internals& pybind11::detail::get_internals()’: 2025-09-08T22:32:38,221 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/pybind11/include/pybind11/detail/internals.h:263:27: warning: ‘void PyEval_InitThreads()’ is deprecated [-Wdeprecated-declarations] 2025-09-08T22:32:38,221 263 | PyEval_InitThreads(); 2025-09-08T22:32:38,221 | ~~~~~~~~~~~~~~~~~~^~ 2025-09-08T22:32:38,222 In file included from /usr/include/python3.13/Python.h:124, 2025-09-08T22:32:38,222 from /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/pybind11/include/pybind11/detail/common.h:112, 2025-09-08T22:32:38,222 from /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/pybind11/include/pybind11/pytypes.h:12, 2025-09-08T22:32:38,222 from /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/pybind11/include/pybind11/cast.h:13: 2025-09-08T22:32:38,222 /usr/include/python3.13/ceval.h:114:37: note: declared here 2025-09-08T22:32:38,222 114 | Py_DEPRECATED(3.9) PyAPI_FUNC(void) PyEval_InitThreads(void); 2025-09-08T22:32:38,222 | ^~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:38,318 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/pybind11/include/pybind11/cast.h: In function ‘std::string pybind11::detail::error_string()’: 2025-09-08T22:32:38,318 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/pybind11/include/pybind11/cast.h:442:36: error: invalid use of incomplete type ‘PyFrameObject’ {aka ‘struct _frame’} 2025-09-08T22:32:38,318 442 | " " + handle(frame->f_code->co_filename).cast() + 2025-09-08T22:32:38,318 | ^~ 2025-09-08T22:32:38,319 In file included from /usr/include/python3.13/Python.h:67: 2025-09-08T22:32:38,319 /usr/include/python3.13/pytypedefs.h:22:16: note: forward declaration of ‘PyFrameObject’ {aka ‘struct _frame’} 2025-09-08T22:32:38,319 22 | typedef struct _frame PyFrameObject; 2025-09-08T22:32:38,319 | ^~~~~~ 2025-09-08T22:32:38,320 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/pybind11/include/pybind11/cast.h:442:75: error: expected primary-expression before ‘>’ token 2025-09-08T22:32:38,320 442 | " " + handle(frame->f_code->co_filename).cast() + 2025-09-08T22:32:38,320 | ^ 2025-09-08T22:32:38,320 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/pybind11/include/pybind11/cast.h:442:77: error: expected primary-expression before ‘)’ token 2025-09-08T22:32:38,320 442 | " " + handle(frame->f_code->co_filename).cast() + 2025-09-08T22:32:38,320 | ^ 2025-09-08T22:32:38,321 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/pybind11/include/pybind11/cast.h:444:29: error: invalid use of incomplete type ‘PyFrameObject’ {aka ‘struct _frame’} 2025-09-08T22:32:38,321 444 | handle(frame->f_code->co_name).cast() + "\n"; 2025-09-08T22:32:38,321 | ^~ 2025-09-08T22:32:38,321 /usr/include/python3.13/pytypedefs.h:22:16: note: forward declaration of ‘PyFrameObject’ {aka ‘struct _frame’} 2025-09-08T22:32:38,321 22 | typedef struct _frame PyFrameObject; 2025-09-08T22:32:38,321 | ^~~~~~ 2025-09-08T22:32:38,321 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/pybind11/include/pybind11/cast.h:444:64: error: expected primary-expression before ‘>’ token 2025-09-08T22:32:38,322 444 | handle(frame->f_code->co_name).cast() + "\n"; 2025-09-08T22:32:38,322 | ^ 2025-09-08T22:32:38,322 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/pybind11/include/pybind11/cast.h:444:66: error: expected primary-expression before ‘)’ token 2025-09-08T22:32:38,322 444 | handle(frame->f_code->co_name).cast() + "\n"; 2025-09-08T22:32:38,322 | ^ 2025-09-08T22:32:38,322 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/pybind11/include/pybind11/cast.h:445:26: error: invalid use of incomplete type ‘PyFrameObject’ {aka ‘struct _frame’} 2025-09-08T22:32:38,323 445 | frame = frame->f_back; 2025-09-08T22:32:38,323 | ^~ 2025-09-08T22:32:38,323 /usr/include/python3.13/pytypedefs.h:22:16: note: forward declaration of ‘PyFrameObject’ {aka ‘struct _frame’} 2025-09-08T22:32:38,323 22 | typedef struct _frame PyFrameObject; 2025-09-08T22:32:38,323 | ^~~~~~ 2025-09-08T22:32:38,467 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/pybind11/include/pybind11/attr.h: At global scope: 2025-09-08T22:32:38,467 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/pybind11/include/pybind11/attr.h:185:10: error: ‘uint16_t’ in namespace ‘std’ does not name a type; did you mean ‘wint_t’? 2025-09-08T22:32:38,467 185 | std::uint16_t nargs; 2025-09-08T22:32:38,467 | ^~~~~~~~ 2025-09-08T22:32:38,467 | wint_t 2025-09-08T22:32:38,478 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/pybind11/include/pybind11/attr.h: In constructor ‘pybind11::detail::function_call::function_call(const pybind11::detail::function_record&, pybind11::handle)’: 2025-09-08T22:32:38,478 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/pybind11/include/pybind11/attr.h:287:20: error: ‘const struct pybind11::detail::function_record’ has no member named ‘nargs’; did you mean ‘args’? 2025-09-08T22:32:38,478 287 | args.reserve(f.nargs); 2025-09-08T22:32:38,479 | ^~~~~ 2025-09-08T22:32:38,479 | args 2025-09-08T22:32:38,479 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/pybind11/include/pybind11/attr.h:288:28: error: ‘const struct pybind11::detail::function_record’ has no member named ‘nargs’; did you mean ‘args’? 2025-09-08T22:32:38,479 288 | args_convert.reserve(f.nargs); 2025-09-08T22:32:38,479 | ^~~~~ 2025-09-08T22:32:38,479 | args 2025-09-08T22:32:38,549 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/pybind11/include/pybind11/pybind11.h: In member function ‘void pybind11::cpp_function::initialize_generic(pybind11::detail::function_record*, const char*, const std::type_info* const*, pybind11::size_t)’: 2025-09-08T22:32:38,550 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/pybind11/include/pybind11/pybind11.h:288:14: error: ‘struct pybind11::detail::function_record’ has no member named ‘nargs’; did you mean ‘args’? 2025-09-08T22:32:38,550 288 | rec->nargs = (std::uint16_t) args; 2025-09-08T22:32:38,550 | ^~~~~ 2025-09-08T22:32:38,550 | args 2025-09-08T22:32:38,552 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/pybind11/include/pybind11/pybind11.h:288:28: error: ‘uint16_t’ is not a member of ‘std’; did you mean ‘wint_t’? 2025-09-08T22:32:38,552 288 | rec->nargs = (std::uint16_t) args; 2025-09-08T22:32:38,552 | ^~~~~~~~ 2025-09-08T22:32:38,552 | wint_t 2025-09-08T22:32:38,572 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/pybind11/include/pybind11/pybind11.h: In static member function ‘static PyObject* pybind11::cpp_function::dispatcher(PyObject*, PyObject*, PyObject*)’: 2025-09-08T22:32:38,572 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/pybind11/include/pybind11/pybind11.h:486:40: error: ‘const struct pybind11::detail::function_record’ has no member named ‘nargs’; did you mean ‘args’? 2025-09-08T22:32:38,572 486 | size_t pos_args = func.nargs; // Number of positional arguments that we need 2025-09-08T22:32:38,572 | ^~~~~ 2025-09-08T22:32:38,572 | args 2025-09-08T22:32:38,578 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/pybind11/include/pybind11/pybind11.h:617:53: error: ‘const struct pybind11::detail::function_record’ has no member named ‘nargs’; did you mean ‘args’? 2025-09-08T22:32:38,578 617 | second_pass_convert.resize(func.nargs, false); 2025-09-08T22:32:38,578 | ^~~~~ 2025-09-08T22:32:38,578 | args 2025-09-08T22:32:38,743 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/pybind11/include/pybind11/pybind11.h: In function ‘pybind11::function pybind11::get_type_overload(const void*, const detail::type_info*, const char*)’: 2025-09-08T22:32:38,743 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/pybind11/include/pybind11/pybind11.h:2046:49: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘frame’ 2025-09-08T22:32:38,743 2046 | PyFrameObject *frame = PyThreadState_Get()->frame; 2025-09-08T22:32:38,744 | ^~~~~ 2025-09-08T22:32:38,744 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/pybind11/include/pybind11/pybind11.h:2047:41: error: invalid use of incomplete type ‘PyFrameObject’ {aka ‘struct _frame’} 2025-09-08T22:32:38,744 2047 | if (frame && (std::string) str(frame->f_code->co_name) == name && 2025-09-08T22:32:38,744 | ^~ 2025-09-08T22:32:38,744 /usr/include/python3.13/pytypedefs.h:22:16: note: forward declaration of ‘PyFrameObject’ {aka ‘struct _frame’} 2025-09-08T22:32:38,744 22 | typedef struct _frame PyFrameObject; 2025-09-08T22:32:38,744 | ^~~~~~ 2025-09-08T22:32:38,745 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/pybind11/include/pybind11/pybind11.h:2048:14: error: invalid use of incomplete type ‘PyFrameObject’ {aka ‘struct _frame’} 2025-09-08T22:32:38,745 2048 | frame->f_code->co_argcount > 0) { 2025-09-08T22:32:38,745 | ^~ 2025-09-08T22:32:38,745 /usr/include/python3.13/pytypedefs.h:22:16: note: forward declaration of ‘PyFrameObject’ {aka ‘struct _frame’} 2025-09-08T22:32:38,745 22 | typedef struct _frame PyFrameObject; 2025-09-08T22:32:38,745 | ^~~~~~ 2025-09-08T22:32:38,746 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/pybind11/include/pybind11/pybind11.h:2051:18: error: invalid use of incomplete type ‘PyFrameObject’ {aka ‘struct _frame’} 2025-09-08T22:32:38,746 2051 | frame->f_locals, PyTuple_GET_ITEM(frame->f_code->co_varnames, 0)); 2025-09-08T22:32:38,746 | ^~ 2025-09-08T22:32:38,746 /usr/include/python3.13/pytypedefs.h:22:16: note: forward declaration of ‘PyFrameObject’ {aka ‘struct _frame’} 2025-09-08T22:32:38,746 22 | typedef struct _frame PyFrameObject; 2025-09-08T22:32:38,746 | ^~~~~~ 2025-09-08T22:32:38,747 In file included from /usr/include/python3.13/Python.h:63: 2025-09-08T22:32:38,748 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/pybind11/include/pybind11/pybind11.h:2051:52: error: invalid use of incomplete type ‘PyFrameObject’ {aka ‘struct _frame’} 2025-09-08T22:32:38,748 2051 | frame->f_locals, PyTuple_GET_ITEM(frame->f_code->co_varnames, 0)); 2025-09-08T22:32:38,748 | ^~ 2025-09-08T22:32:38,748 /usr/include/python3.13/pyport.h:19:38: note: in definition of macro ‘_Py_CAST’ 2025-09-08T22:32:38,748 19 | #define _Py_CAST(type, expr) ((type)(expr)) 2025-09-08T22:32:38,748 | ^~~~ 2025-09-08T22:32:38,748 /usr/include/python3.13/cpython/tupleobject.h:27:38: note: in expansion of macro ‘_PyTuple_CAST’ 2025-09-08T22:32:38,748 27 | #define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[(index)]) 2025-09-08T22:32:38,748 | ^~~~~~~~~~~~~ 2025-09-08T22:32:38,748 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/pybind11/include/pybind11/pybind11.h:2051:30: note: in expansion of macro ‘PyTuple_GET_ITEM’ 2025-09-08T22:32:38,748 2051 | frame->f_locals, PyTuple_GET_ITEM(frame->f_code->co_varnames, 0)); 2025-09-08T22:32:38,749 | ^~~~~~~~~~~~~~~~ 2025-09-08T22:32:38,749 /usr/include/python3.13/pytypedefs.h:22:16: note: forward declaration of ‘PyFrameObject’ {aka ‘struct _frame’} 2025-09-08T22:32:38,749 22 | typedef struct _frame PyFrameObject; 2025-09-08T22:32:38,749 | ^~~~~~ 2025-09-08T22:32:40,733 In file included from /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextA.h:9, 2025-09-08T22:32:40,733 from /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/module.cpp:12: 2025-09-08T22:32:40,734 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h: At global scope: 2025-09-08T22:32:40,734 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,734 47 | #define inline_t inline 2025-09-08T22:32:40,734 | ^~~~~~ 2025-09-08T22:32:40,734 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:549:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,734 549 | static inline_t const T CC; // control character '\' 2025-09-08T22:32:40,734 | ^~~~~~~~ 2025-09-08T22:32:40,735 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,735 47 | #define inline_t inline 2025-09-08T22:32:40,735 | ^~~~~~ 2025-09-08T22:32:40,735 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:550:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,735 550 | static inline_t const T* Slash; // folder separators (\\,/) 2025-09-08T22:32:40,735 | ^~~~~~~~ 2025-09-08T22:32:40,736 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,736 47 | #define inline_t inline 2025-09-08T22:32:40,736 | ^~~~~~ 2025-09-08T22:32:40,736 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:551:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,736 551 | static inline_t const T Literal; // symbol " 2025-09-08T22:32:40,736 | ^~~~~~~~ 2025-09-08T22:32:40,737 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,737 47 | #define inline_t inline 2025-09-08T22:32:40,737 | ^~~~~~ 2025-09-08T22:32:40,737 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:552:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,737 552 | static inline_t const T* Literals; // literals symbols ' and " 2025-09-08T22:32:40,737 | ^~~~~~~~ 2025-09-08T22:32:40,737 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,738 47 | #define inline_t inline 2025-09-08T22:32:40,738 | ^~~~~~ 2025-09-08T22:32:40,738 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:553:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,738 553 | static inline_t const T* Separators; // all standard separators ( \r\n\t ) 2025-09-08T22:32:40,738 | ^~~~~~~~ 2025-09-08T22:32:40,738 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,739 47 | #define inline_t inline 2025-09-08T22:32:40,739 | ^~~~~~ 2025-09-08T22:32:40,739 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:554:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,739 554 | static inline_t const T* SeparatorsWord; // word separators 2025-09-08T22:32:40,739 | ^~~~~~~~ 2025-09-08T22:32:40,739 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,740 47 | #define inline_t inline 2025-09-08T22:32:40,740 | ^~~~~~ 2025-09-08T22:32:40,740 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:555:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,740 555 | static inline_t const T* SeparatorsLine; // line separators (\r\n) 2025-09-08T22:32:40,740 | ^~~~~~~~ 2025-09-08T22:32:40,740 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,740 47 | #define inline_t inline 2025-09-08T22:32:40,741 | ^~~~~~ 2025-09-08T22:32:40,741 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:556:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,741 556 | static inline_t const T* SeparatorsSentence; // sentence separators (.?!) 2025-09-08T22:32:40,741 | ^~~~~~~~ 2025-09-08T22:32:40,741 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,741 47 | #define inline_t inline 2025-09-08T22:32:40,741 | ^~~~~~ 2025-09-08T22:32:40,742 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:557:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,742 557 | static inline_t const T* EOL; // single character \n 2025-09-08T22:32:40,742 | ^~~~~~~~ 2025-09-08T22:32:40,742 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,742 47 | #define inline_t inline 2025-09-08T22:32:40,742 | ^~~~~~ 2025-09-08T22:32:40,743 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:558:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,743 558 | static inline_t const T* TAB; // single character \t 2025-09-08T22:32:40,743 | ^~~~~~~~ 2025-09-08T22:32:40,743 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,743 47 | #define inline_t inline 2025-09-08T22:32:40,743 | ^~~~~~ 2025-09-08T22:32:40,743 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:559:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,744 559 | static inline_t const T* CR; // single character \r 2025-09-08T22:32:40,744 | ^~~~~~~~ 2025-09-08T22:32:40,744 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,744 47 | #define inline_t inline 2025-09-08T22:32:40,744 | ^~~~~~ 2025-09-08T22:32:40,744 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:560:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,744 560 | static inline_t const T* SeparatorsRow; // row separators ( \t) 2025-09-08T22:32:40,745 | ^~~~~~~~ 2025-09-08T22:32:40,745 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,745 47 | #define inline_t inline 2025-09-08T22:32:40,745 | ^~~~~~ 2025-09-08T22:32:40,745 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:561:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,745 561 | static inline_t const T HexDigits[16]; // the 16 hexagonal letters 2025-09-08T22:32:40,746 | ^~~~~~~~ 2025-09-08T22:32:40,746 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,746 47 | #define inline_t inline 2025-09-08T22:32:40,746 | ^~~~~~ 2025-09-08T22:32:40,746 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:562:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,746 562 | static inline_t const T* SPACE; // single character " " 2025-09-08T22:32:40,747 | ^~~~~~~~ 2025-09-08T22:32:40,906 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,907 47 | #define inline_t inline 2025-09-08T22:32:40,907 | ^~~~~~ 2025-09-08T22:32:40,907 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextA.h:11:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,907 11 | template<> inline_t const char CTextT::CC = '\\'; 2025-09-08T22:32:40,907 | ^~~~~~~~ 2025-09-08T22:32:40,907 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,907 47 | #define inline_t inline 2025-09-08T22:32:40,908 | ^~~~~~ 2025-09-08T22:32:40,908 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextA.h:12:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,908 12 | template<> inline_t const char* CTextT::Slash = "\\/"; 2025-09-08T22:32:40,908 | ^~~~~~~~ 2025-09-08T22:32:40,908 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,908 47 | #define inline_t inline 2025-09-08T22:32:40,908 | ^~~~~~ 2025-09-08T22:32:40,909 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextA.h:13:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,909 13 | template<> inline_t const char* CTextT::Separators = " \t\r\n\v\f"; 2025-09-08T22:32:40,909 | ^~~~~~~~ 2025-09-08T22:32:40,909 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,909 47 | #define inline_t inline 2025-09-08T22:32:40,909 | ^~~~~~ 2025-09-08T22:32:40,909 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextA.h:14:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,910 14 | template<> inline_t const char* CTextT::SeparatorsWord = " \t\r\n,;..-!?({[)}]\""; 2025-09-08T22:32:40,910 | ^~~~~~~~ 2025-09-08T22:32:40,910 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,910 47 | #define inline_t inline 2025-09-08T22:32:40,910 | ^~~~~~ 2025-09-08T22:32:40,910 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextA.h:15:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,910 15 | template<> inline_t const char* CTextT::SeparatorsLine = "\r\n"; 2025-09-08T22:32:40,910 | ^~~~~~~~ 2025-09-08T22:32:40,911 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,911 47 | #define inline_t inline 2025-09-08T22:32:40,911 | ^~~~~~ 2025-09-08T22:32:40,911 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextA.h:16:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,911 16 | template<> inline_t const char* CTextT::SeparatorsSentence = ".?!"; 2025-09-08T22:32:40,911 | ^~~~~~~~ 2025-09-08T22:32:40,912 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,912 47 | #define inline_t inline 2025-09-08T22:32:40,912 | ^~~~~~ 2025-09-08T22:32:40,912 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextA.h:17:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,912 17 | template<> inline_t const char* CTextT::EOL ="\n"; 2025-09-08T22:32:40,912 | ^~~~~~~~ 2025-09-08T22:32:40,913 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,913 47 | #define inline_t inline 2025-09-08T22:32:40,913 | ^~~~~~ 2025-09-08T22:32:40,913 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextA.h:18:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,913 18 | template<> inline_t const char* CTextT::TAB ="\t"; 2025-09-08T22:32:40,913 | ^~~~~~~~ 2025-09-08T22:32:40,913 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,914 47 | #define inline_t inline 2025-09-08T22:32:40,914 | ^~~~~~ 2025-09-08T22:32:40,914 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextA.h:19:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,914 19 | template<> inline_t const char* CTextT::SPACE = " "; 2025-09-08T22:32:40,914 | ^~~~~~~~ 2025-09-08T22:32:40,914 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,914 47 | #define inline_t inline 2025-09-08T22:32:40,914 | ^~~~~~ 2025-09-08T22:32:40,915 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextA.h:20:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,915 20 | template<> inline_t const char* CTextT::CR = "\r"; 2025-09-08T22:32:40,915 | ^~~~~~~~ 2025-09-08T22:32:40,915 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,915 47 | #define inline_t inline 2025-09-08T22:32:40,915 | ^~~~~~ 2025-09-08T22:32:40,915 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextA.h:21:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,915 21 | template<> inline_t const char* CTextT::SeparatorsRow = " \t"; 2025-09-08T22:32:40,916 | ^~~~~~~~ 2025-09-08T22:32:40,916 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,916 47 | #define inline_t inline 2025-09-08T22:32:40,916 | ^~~~~~ 2025-09-08T22:32:40,916 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextA.h:22:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,916 22 | template<> inline_t const char CTextT::HexDigits[16] ={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; 2025-09-08T22:32:40,916 | ^~~~~~~~ 2025-09-08T22:32:40,917 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,917 47 | #define inline_t inline 2025-09-08T22:32:40,917 | ^~~~~~ 2025-09-08T22:32:40,917 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextA.h:23:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,917 23 | template<> inline_t const char CTextT::Literal = '\"'; 2025-09-08T22:32:40,917 | ^~~~~~~~ 2025-09-08T22:32:40,918 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,918 47 | #define inline_t inline 2025-09-08T22:32:40,918 | ^~~~~~ 2025-09-08T22:32:40,918 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextA.h:24:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,918 24 | template<> inline_t const char* CTextT::Literals = "\"\'"; 2025-09-08T22:32:40,918 | ^~~~~~~~ 2025-09-08T22:32:40,936 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,936 47 | #define inline_t inline 2025-09-08T22:32:40,936 | ^~~~~~ 2025-09-08T22:32:40,936 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextU.h:12:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,936 12 | template<> inline_t const wchar_t CTextT::CC = L'\\'; 2025-09-08T22:32:40,936 | ^~~~~~~~ 2025-09-08T22:32:40,937 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,937 47 | #define inline_t inline 2025-09-08T22:32:40,937 | ^~~~~~ 2025-09-08T22:32:40,937 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextU.h:13:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,937 13 | template<> inline_t const wchar_t* CTextT::Slash = L"\\/"; 2025-09-08T22:32:40,937 | ^~~~~~~~ 2025-09-08T22:32:40,938 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,938 47 | #define inline_t inline 2025-09-08T22:32:40,938 | ^~~~~~ 2025-09-08T22:32:40,938 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextU.h:14:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,938 14 | template<> inline_t const wchar_t* CTextT::Separators = L" \t\r\n"; 2025-09-08T22:32:40,938 | ^~~~~~~~ 2025-09-08T22:32:40,938 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,939 47 | #define inline_t inline 2025-09-08T22:32:40,939 | ^~~~~~ 2025-09-08T22:32:40,939 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextU.h:15:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,939 15 | template<> inline_t const wchar_t* CTextT::SeparatorsWord = L" \t\r\n,;..!-?\"({[)}]"; 2025-09-08T22:32:40,939 | ^~~~~~~~ 2025-09-08T22:32:40,939 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,939 47 | #define inline_t inline 2025-09-08T22:32:40,940 | ^~~~~~ 2025-09-08T22:32:40,940 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextU.h:16:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,940 16 | template<> inline_t const wchar_t* CTextT::SeparatorsLine = L"\r\n"; 2025-09-08T22:32:40,940 | ^~~~~~~~ 2025-09-08T22:32:40,940 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,940 47 | #define inline_t inline 2025-09-08T22:32:40,940 | ^~~~~~ 2025-09-08T22:32:40,940 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextU.h:17:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,941 17 | template<> inline_t const wchar_t* CTextT::SeparatorsSentence = L".?!"; 2025-09-08T22:32:40,941 | ^~~~~~~~ 2025-09-08T22:32:40,941 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,941 47 | #define inline_t inline 2025-09-08T22:32:40,941 | ^~~~~~ 2025-09-08T22:32:40,941 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextU.h:18:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,941 18 | template<> inline_t const wchar_t* CTextT::EOL =L"\n"; 2025-09-08T22:32:40,942 | ^~~~~~~~ 2025-09-08T22:32:40,942 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,942 47 | #define inline_t inline 2025-09-08T22:32:40,942 | ^~~~~~ 2025-09-08T22:32:40,942 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextU.h:19:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,942 19 | template<> inline_t const wchar_t* CTextT::TAB =L"\t"; 2025-09-08T22:32:40,943 | ^~~~~~~~ 2025-09-08T22:32:40,943 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,943 47 | #define inline_t inline 2025-09-08T22:32:40,943 | ^~~~~~ 2025-09-08T22:32:40,943 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextU.h:20:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,943 20 | template<> inline_t const wchar_t* CTextT::SPACE = L" "; 2025-09-08T22:32:40,943 | ^~~~~~~~ 2025-09-08T22:32:40,943 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,943 47 | #define inline_t inline 2025-09-08T22:32:40,944 | ^~~~~~ 2025-09-08T22:32:40,944 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextU.h:21:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,944 21 | template<> inline_t const wchar_t* CTextT::CR = L"\r"; 2025-09-08T22:32:40,944 | ^~~~~~~~ 2025-09-08T22:32:40,944 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,944 47 | #define inline_t inline 2025-09-08T22:32:40,944 | ^~~~~~ 2025-09-08T22:32:40,944 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextU.h:22:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,944 22 | template<> inline_t const wchar_t* CTextT::SeparatorsRow = L" \t"; 2025-09-08T22:32:40,944 | ^~~~~~~~ 2025-09-08T22:32:40,945 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,945 47 | #define inline_t inline 2025-09-08T22:32:40,945 | ^~~~~~ 2025-09-08T22:32:40,945 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextU.h:23:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,945 23 | template<> inline_t const wchar_t CTextT::HexDigits[16] ={L'0',L'1',L'2',L'3',L'4',L'5',L'6',L'7',L'8',L'9',L'A',L'B',L'C',L'D',L'E',L'F'}; 2025-09-08T22:32:40,945 | ^~~~~~~~ 2025-09-08T22:32:40,945 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,945 47 | #define inline_t inline 2025-09-08T22:32:40,945 | ^~~~~~ 2025-09-08T22:32:40,945 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextU.h:24:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,946 24 | template<> inline_t const wchar_t CTextT::Literal = L'\"'; 2025-09-08T22:32:40,946 | ^~~~~~~~ 2025-09-08T22:32:40,946 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:47:18: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’ [-Wc++17-extensions] 2025-09-08T22:32:40,946 47 | #define inline_t inline 2025-09-08T22:32:40,946 | ^~~~~~ 2025-09-08T22:32:40,946 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextU.h:25:12: note: in expansion of macro ‘inline_t’ 2025-09-08T22:32:40,946 25 | template<> inline_t const wchar_t* CTextT::Literals = L"\"\'"; 2025-09-08T22:32:40,946 | ^~~~~~~~ 2025-09-08T22:32:43,470 In file included from /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:565: 2025-09-08T22:32:43,470 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.inl: In instantiation of ‘static bool CTextT::ReadFileAsHex(const CharT*, CTextT&) [with CharT = wchar_t; X = void; T = wchar_t]’: 2025-09-08T22:32:43,470 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.inl:5419:44: required from ‘bool CTextT::readFile(const CharT*, bool) [with CharT = wchar_t; X = void; T = wchar_t]’ 2025-09-08T22:32:43,471 5419 | return asHex ? ReadFileAsHex (path, *this) : ReadFile(path, *this); 2025-09-08T22:32:43,471 | ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~ 2025-09-08T22:32:43,471 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/module.cpp:346:13: required from here 2025-09-08T22:32:43,471 202 | py::class_ (m, "CTextU") 2025-09-08T22:32:43,471 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,471 203 | // constructors 2025-09-08T22:32:43,471 | ~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,471 204 | .def(py::init<>()) 2025-09-08T22:32:43,471 | ~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,471 205 | .def(py::init()) 2025-09-08T22:32:43,472 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,472 206 | .def(py::init()) 2025-09-08T22:32:43,472 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,472 207 | // operators 2025-09-08T22:32:43,472 | ~~~~~~~~~~~~ 2025-09-08T22:32:43,472 208 | .def(py::self + py::self) 2025-09-08T22:32:43,472 | ~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,472 209 | .def(py::self == py::self) 2025-09-08T22:32:43,472 | ~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,472 210 | .def(py::self != py::self) 2025-09-08T22:32:43,473 | ~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,473 211 | .def(py::self < py::self) 2025-09-08T22:32:43,473 | ~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,473 212 | .def(py::self > py::self) 2025-09-08T22:32:43,473 | ~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,473 213 | .def(py::self + std::wstring()) 2025-09-08T22:32:43,473 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,473 214 | .def(std::wstring() + py::self) 2025-09-08T22:32:43,473 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,473 215 | .def(py::self += py::self) 2025-09-08T22:32:43,473 | ~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,473 216 | .def(py::self += std::wstring()) 2025-09-08T22:32:43,474 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,474 217 | .def("__add__", [](const CTextU& c2, const CTextU& c1) { return c2 + c1; }) 2025-09-08T22:32:43,474 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,474 218 | .def("__add__", [](const CTextU& c1, const wchar_t* c2) { return c2 + c1; }) 2025-09-08T22:32:43,474 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,474 219 | .def("__repr__", [](const CTextU &a) { return a.str() == nullptr? L"": a.str(); }) 2025-09-08T22:32:43,474 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,474 220 | // functions 2025-09-08T22:32:43,474 | ~~~~~~~~~~~~ 2025-09-08T22:32:43,474 221 | .def("addToFileName", &CTextU::addToFileName, "modifies a filename, adds the provided string to file name but keeps extension and path") 2025-09-08T22:32:43,474 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,474 222 | .def("append", [](CTextU& s, const wchar_t* str)->CTextU& { return s.append(str); }, "append string", py::arg("str")) 2025-09-08T22:32:43,475 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,475 223 | .def("append", [](CTextU& s, const wchar_t* str, size_t len)->CTextU& { return s.append(*str, len); }, "append characters", py::arg("c"), py::arg("len") = 1) 2025-09-08T22:32:43,475 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,475 224 | .def("append", [](CTextU& s, const vector& list)->CTextU& { return s.append(list); }, "append single character or string list", py::arg("list")) 2025-09-08T22:32:43,475 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,475 225 | .def("appendRange", [](CTextU& s, const wchar_t* begin, const wchar_t* end)->CTextU& { return s.appendRange(*begin, *end); }, "append all characters in the range ", py::arg("begin"), py::arg("end")) 2025-09-08T22:32:43,475 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,475 226 | .def("between", [](CTextU& s, const wchar_t* left, const wchar_t* right, bool include)->bool { return s.between(left, right, include); }, "keeps the part of the string between the first and last sub-strings sLeft and sRight (by default separattors are not included", py::arg("left"), py::arg("right"), py::arg("include") = false) 2025-09-08T22:32:43,475 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,475 227 | .def("capacity", &CTextU::capacity) 2025-09-08T22:32:43,475 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,476 228 | .def("clear", &CTextU::clear, py::arg("bRelease") = false) 2025-09-08T22:32:43,476 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,476 229 | .def("collectBlocks", [](CTextU& s, const wchar_t* sepBegin, const wchar_t* sepEnd, bool all)->vector { vector res; s.collectBlocks(res, sepBegin, sepEnd, all); return res; }, "collect blocks", py::arg("sepBegin"), py::arg("sepEnd"), py::arg("all") = true) 2025-09-08T22:32:43,476 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,476 230 | .def("collectLines", [](CTextU& s, const wchar_t* sep)->vector { vector res; s.collectLines(res, false, sep); return res; }, "fills a list with the collected lines", py::arg("sep") = CTextU::SeparatorsLine) 2025-09-08T22:32:43,476 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,476 231 | .def("checkBalance", &CTextU::checkBalance, "checks if the blocks defined with the given separators are balanced") 2025-09-08T22:32:43,476 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,476 232 | .def("convertToHex", &CTextU::convertToHex, "convert string to hex values", py::arg("sep") = CTextU::SPACE) 2025-09-08T22:32:43,476 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,476 233 | .def("contain", (bool (CTextU::*)(const wchar_t* s, bool bCase) const) &CTextU::contain, "returns true if our string contains another string ", py::arg("str"), py::arg("case") = true) 2025-09-08T22:32:43,476 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,477 234 | .def("contain", [](CTextU& s, const vector& list, bool bCase)->bool { return s.containAny(list, bCase, true); }, "returns true if contains any of the provided strings", py::arg("list"), py::arg("case") = true) 2025-09-08T22:32:43,477 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,477 235 | .def("containAny", (bool (CTextU::*)(const wchar_t* s, bool bCase) const) &CTextU::containAny, "returns true if our string contains any of the characters in the list", py::arg("str"), py::arg("case") = true) 2025-09-08T22:32:43,477 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,477 236 | .def("containOnly", (bool (CTextU::*)(const wchar_t* s, bool bCase) const) &CTextU::containOnly, "returns true if our string contains only characters in the list", py::arg("str"), py::arg("case") = true) 2025-09-08T22:32:43,477 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,477 237 | .def("count", [](CTextU& s, const wchar_t* str, bool bCase)->size_t { return s.count(str, bCase); }, "returns the count of occurences of the given substring", py::arg("str"), py::arg("case") = true) 2025-09-08T22:32:43,477 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,477 238 | .def("countWordFrequencies", [](CTextU& s, bool bCase, const wchar_t* sep)->std::vector< std::pair > { std::vector< std::pair > res; s.countWordFrequencies(res, bCase, sep); return res; }, "fill the container with the words frequency counts", py::arg("case") = true, py::arg("sep") = CTextU::SeparatorsWord) 2025-09-08T22:32:43,477 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,477 239 | .def("cutAfterFirst", [](CTextU& s, const wchar_t* str, bool include, bool bCase)->CTextU& { return s.cutAfterFirst(*str, include, bCase); }, "leaves everyting left from c, c is not included, everything after is removed", py::arg("str"), py::arg("include") = false, py::arg("case") = true) 2025-09-08T22:32:43,478 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,478 240 | .def("cutAfterLast", [](CTextU& s, const wchar_t* str, bool include, bool bCase)->CTextU& { return s.cutAfterLast(*str, include, bCase); }, "leaves everyting left from the last character, c is not included", py::arg("str"), py::arg("include") = false, py::arg("case") = true) 2025-09-08T22:32:43,478 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,478 241 | .def("cutBeforeFirst", [](CTextU& s, const wchar_t* str, bool include, bool bCase)->CTextU& { return s.cutBeforeFirst(*str, include, bCase); }, "cut everything before the first occurence of string str", py::arg("str"), py::arg("include") = false, py::arg("case") = true) 2025-09-08T22:32:43,478 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,478 242 | .def("cutAfterFirstOfAny", [](CTextU& s, const wchar_t* str, bool include, bool bCase)->CTextU& { return s.cutAfterFirstOfAny(str, include, bCase); }, "cut after the first occurence of any character from the list", py::arg("str"), py::arg("include") = false, py::arg("case") = true) 2025-09-08T22:32:43,478 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,478 243 | .def("cutBeforeFirstOfAny", [](CTextU& s, const wchar_t* str, bool include, bool bCase)->CTextU& { return s.cutBeforeFirstOfAny(str, include, bCase); }, "cut everything before the first occurence of any of the characters from the list or leave intact, include if set, character is included", py::arg("str"), py::arg("include") = false, py::arg("case") = true) 2025-09-08T22:32:43,478 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,478 244 | .def("cutEnds", (CTextU& (CTextU::*)(size_t)) &CTextU::cutEnds, "remove count of characters from left and right", py::arg("count")) 2025-09-08T22:32:43,478 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,479 245 | .def("cutLeft", &CTextU::cutLeft, "removes count characters from left", py::arg("count")) 2025-09-08T22:32:43,479 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,479 246 | .def("cutRight", &CTextU::cutRight, "removes count characters from left", py::arg("count")) 2025-09-08T22:32:43,479 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,479 247 | .def("enclose", (CTextU& (CTextU::*)(const wchar_t* begin, const wchar_t* end, bool checkEnds)) &CTextU::enclose, "enclose with the provided text separators (if not already ends and begins with them)", py::arg("begin"), py::arg("end"), py::arg("checkEnds") = true) 2025-09-08T22:32:43,479 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,479 248 | .def("endsWith", [](CTextU& s, const wchar_t* str, bool bCase)->bool { return s.endsWith(str, 0, bCase); }, "return true if ends with the provided string", py::arg("str"), py::arg("case") = true) 2025-09-08T22:32:43,479 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,479 249 | .def("endsWithAny", [](CTextU& s, const vector& list, bool bCase)->bool { return s.endsWithAny(list, 0, bCase, true); }, "returns true if ends with any of the strings from the list", py::arg("list"), py::arg("case") = true) 2025-09-08T22:32:43,479 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,479 250 | .def("equal", [](CTextU& s, const wchar_t* str, size_t len)->CTextU& { return s.equal(*str, len); }, "init witb len number of characters", py::arg("c"), py::arg("len")) 2025-09-08T22:32:43,479 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,480 251 | .def("erase", &CTextU::erase, "delete count characters starting at zero-based index", py::arg("from"), py::arg("count") = 1) 2025-09-08T22:32:43,480 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,480 252 | .def("find", (const wchar_t* (CTextU::*)(const wchar_t* s, bool bCase) const) &CTextU::find, "return a pointer to the first occurence of the string, or 0 pointer if not found", py::arg("str"), py::arg("case") = true) 2025-09-08T22:32:43,480 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,480 253 | .def("first", &CTextU::first) 2025-09-08T22:32:43,480 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,480 254 | .def("fromArray", [](CTextU& s, const vector& list, const wchar_t* sep)->void { s.fromArray(list, false, 2, sep); }, "compose a string from array using the given separator", py::arg("list"), py::arg("sep") = CTextU::SPACE) 2025-09-08T22:32:43,480 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,480 255 | .def("fromArray", [](CTextU& s, const vector& list, const wchar_t* sep)->void { s.fromArray(list, false, 2, sep); }, "compose a string from array using the given separator", py::arg("list"), py::arg("sep") = CTextU::SPACE) 2025-09-08T22:32:43,480 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,480 256 | .def("fromArray", [](CTextU& s, const vector& list, const wchar_t* sep)->void { s.fromArray(list, sep); }, "compose a string from array using the given separator", py::arg("list"), py::arg("sep") = CTextU::SPACE) 2025-09-08T22:32:43,480 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,481 257 | .def("fromArrayAsHex", [](CTextU& s, const vector& list, int wHex, const wchar_t* sep)->void { s.fromArray(list, true, wHex, sep); }, "compose a string from integerrs array in hex format using the given separator", py::arg("list"), py::arg("wHex") = 2, py::arg("sep") = CTextU::SPACE) 2025-09-08T22:32:43,481 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,481 258 | .def("fromBinary", &CTextU::fromBinary, "create a binary string from the number") 2025-09-08T22:32:43,481 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,481 259 | .def("fromBinary", &CTextU::fromBinary, "create a binary string from the number") 2025-09-08T22:32:43,481 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,481 260 | .def("fromBinary", &CTextU::fromBinary, "create a binary string from the number") 2025-09-08T22:32:43,481 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,481 261 | .def("fromHex", &CTextU::fromHex, "create a hexadecimal string from the number", py::arg("i"), py::arg("hasBase") = false, py::arg("upper") = false, py::arg("append") = false) 2025-09-08T22:32:43,481 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,481 262 | .def("fromHex", &CTextU::fromHex, "create a hexadecimal string from the number", py::arg("i"), py::arg("hasBase") = false, py::arg("upper") = false, py::arg("append") = false) 2025-09-08T22:32:43,481 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,482 263 | .def("fromHex", &CTextU::fromHex, "create a hexadecimal string from the number", py::arg("i"), py::arg("hasBase") = false, py::arg("upper") = false, py::arg("append") = false) 2025-09-08T22:32:43,482 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,482 264 | .def("fromInteger", &CTextU::fromInteger, "convert the decimal nteger to string", py::arg("i"), py::arg("append") = false, py::arg("padd") = 0, py::arg("paddValue") = '0') 2025-09-08T22:32:43,482 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,482 265 | .def("fromInteger", &CTextU::fromInteger, "convert the decimal nteger to string", py::arg("i"), py::arg("append") = false, py::arg("padd") = 0, py::arg("paddValue") = '0') 2025-09-08T22:32:43,482 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,482 266 | .def("fromInteger", &CTextU::fromInteger, "convert the decimal integer to string", py::arg("i"), py::arg("append") = false, py::arg("padd") = 0, py::arg("paddValue") = '0') 2025-09-08T22:32:43,482 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,482 267 | .def("fromDouble", &CTextU::fromDouble, "convert double to string", py::arg("d"), py::arg("precision") = 6, py::arg("fixed") = true, py::arg("nozeros") = false, py::arg("append") = false) 2025-09-08T22:32:43,482 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,482 268 | .def("fromMatrix", [](CTextU& s, py::array_t m, const wchar_t* sep, const wchar_t* sepLine)->void { py::buffer_info buf = m.request(); size_t h = buf.shape[0]; size_t w = buf.shape[1]; int* ptr = (int*)buf.ptr; s.fromMatrix(ptr, w, h, false, 2, sep, sepLine); }, "//compose string from a 2D numerical matrix", py::arg("list"), py::arg("sep") = CTextU::SPACE, py::arg("sepLine") = CTextU::EOL) 2025-09-08T22:32:43,483 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,483 269 | .def("fromMatrix", [](CTextU& s, py::array_t m, const wchar_t* sep, const wchar_t* sepLine)->void { py::buffer_info buf = m.request(); size_t h = buf.shape[0]; size_t w = buf.shape[1]; double* ptr = (double*)buf.ptr; s.fromMatrix(ptr, w, h, false, 2, sep, sepLine); }, "//compose string from a 2D numerical matrix", py::arg("list"), py::arg("sep") = CTextU::SPACE, py::arg("sepLine") = CTextU::EOL) 2025-09-08T22:32:43,483 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,483 270 | .def("fromMatrixAsHex", [](CTextU& s, py::array_t m, int wHex, const wchar_t* sep, const wchar_t* sepLine)->void { py::buffer_info buf = m.request(); size_t h = buf.shape[0]; size_t w = buf.shape[1]; int* ptr = (int*)buf.ptr; s.fromMatrix(ptr, w, h, true, wHex, sep, sepLine); }, "//compose string from a 2D numerical matrix", py::arg("list"), py::arg("wHex") = 2, py::arg("sep") = CTextU::SPACE, py::arg("sepLine") = CTextU::EOL) 2025-09-08T22:32:43,483 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,483 271 | .def("getDir", &CTextU::getDir, "get a folder from a full module path") 2025-09-08T22:32:43,483 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,483 272 | .def("getExtension", &CTextU::getExtension, "if our string contains file path, return pointer to the extension") 2025-09-08T22:32:43,483 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,483 273 | .def("getFileName", &CTextU::getFileName, "if our string contains file path, return pointer to the file name") 2025-09-08T22:32:43,483 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,484 274 | .def("hash", &CTextU::hash) 2025-09-08T22:32:43,484 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,484 275 | .def("indexOf", [](CTextU& s, const wchar_t* str, size_t from, bool bCase)->size_t { return s.lastIndexOf(str, from, bCase); }, "find the offset of first instance of the string in the list, return index or -1 if not found", py::arg("str"), py::arg("from") = 0, py::arg("case") = true) 2025-09-08T22:32:43,484 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,484 276 | .def("indexOfAny", [](CTextU& s, const wchar_t* cList, bool bCase)->size_t { return s.indexOfAny(cList, 0, bCase); }, "find the offset of the first instance of the characters in the list", py::arg("cList"), py::arg("case") = true) 2025-09-08T22:32:43,484 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,484 277 | .def("indexOfAny", [](CTextU& s, const vector& list, bool bCase)->size_t { return s.indexOfAny(list, 0, bCase, true); }, "find the offset of the first instance of the strings in the list", py::arg("list"), py::arg("case") = true) 2025-09-08T22:32:43,484 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,484 278 | .def("insert", [](CTextU& s, size_t from, const wchar_t* c, size_t count)->CTextU& { return s.insert(from, *c, count); }, "insert character at zero-based index, if index is past end of string", py::arg("from"), py::arg("c"), py::arg("count")) 2025-09-08T22:32:43,484 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,484 279 | .def("insert", [](CTextU& s, size_t from, const wchar_t* str)->CTextU& { return s.insert(from, str); }, "insert substring at zero-based index; concatenates, if index is past end of string", py::arg("from"), py::arg("str")) 2025-09-08T22:32:43,485 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,485 280 | .def("insertAtBegin", &CTextU::insertAtBegin, py::arg("str"), py::arg("skip") = 1, py::arg("sep") = CTextU::Separators) 2025-09-08T22:32:43,485 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,485 281 | .def("insertAtEnd", &CTextU::insertAtEnd, py::arg("str"), py::arg("skip") = 1, py::arg("sep") = CTextU::Separators) 2025-09-08T22:32:43,485 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,485 282 | .def("isAlpha", &CTextU::isAlpha, "return true if contains only alphabeta characters") 2025-09-08T22:32:43,485 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,485 283 | .def("isBinary", &CTextU::isBinary, "return true if contains only 0s and 1s") 2025-09-08T22:32:43,485 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,485 284 | .def("isEmpty", &CTextU::isEmpty, "return true if empty") 2025-09-08T22:32:43,486 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,486 285 | .def("isHexNumber", &CTextU::isHexNumber, "return true if contains only hexadecimal digits") 2025-09-08T22:32:43,486 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,486 286 | .def("isLower", &CTextU::isLower, py::arg("strict") = false) 2025-09-08T22:32:43,486 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,486 287 | .def("isNumber", &CTextU::isNumber, "return true if contains only decimal digits", py::arg("allowSign") = true) 2025-09-08T22:32:43,486 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,486 288 | .def("isPalindrome", &CTextU::isPalindrome) 2025-09-08T22:32:43,486 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,486 289 | .def("isUpper", &CTextU::isUpper, py::arg("strict") = false) 2025-09-08T22:32:43,487 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,487 290 | .def("keep", &CTextU::keep, "keeps count characters starting from given position") 2025-09-08T22:32:43,487 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,487 291 | .def("keepEnds", &CTextU::keepEnds, "keeps the characters from both ends, returns number of deleted characters") 2025-09-08T22:32:43,487 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,487 292 | .def("keepLeft", &CTextU::keepLeft, "keeps count characters from left and removes the rest, returns number of deleted characters") 2025-09-08T22:32:43,487 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,487 293 | .def("keepRight", &CTextU::keepRight, "keeps count characters from right and removes the rest, returns number of deleted characters") 2025-09-08T22:32:43,487 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,487 294 | .def("left", &CTextU::left, "return new string containing first count characters") 2025-09-08T22:32:43,488 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,488 295 | .def("length", &CTextU::length, "returns the number of characters in the string") 2025-09-08T22:32:43,488 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,488 296 | .def("last", &CTextU::last) 2025-09-08T22:32:43,488 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,488 297 | .def("lastIndexOf", [](CTextU& s, const wchar_t* str, size_t from, bool bCase)->size_t { return s.lastIndexOf(str, from, bCase); }, "find the first character position starting at right, where from is the offset from the end and the returned idx is from the beggining", py::arg("str"), py::arg("from") = 0, py::arg("case") = true) 2025-09-08T22:32:43,488 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,488 298 | .def("lastIndexOfAny", [](CTextU& s, const wchar_t* cList, bool bCase)->size_t { return s.lastIndexOfAny(cList, 0, bCase); }, "find the offset of the first instance of the characters in the list starting from right", py::arg("cList"), py::arg("case") = true) 2025-09-08T22:32:43,488 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,489 299 | .def("lines", [](CTextU& s, const wchar_t* sep)->vector { vector res; s.collectLines(res, false, sep); return res; }, "return list with all found lines", py::arg("sep") = CTextU::SeparatorsLine) 2025-09-08T22:32:43,489 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,489 300 | .def("linesCount", &CTextU::linesCount, "returns the number of the lines in the string", py::arg("sep") = CTextU::EOL) 2025-09-08T22:32:43,489 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,489 301 | .def("linesAppend", [](CTextU& s, const wchar_t* str, const wchar_t* sep)->size_t { return s.linesInsertAtEnd(str, 1, sep); }, "append text to each line", py::arg("str"), py::arg("sep") = CTextU::SeparatorsLine) 2025-09-08T22:32:43,489 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,489 302 | .def("linesInsertAtBegin", [](CTextU& s, const wchar_t* str, const wchar_t* sep)->size_t { return s.linesInsertAtBegin(str, 1, sep); }, "insert text at each line begin", py::arg("str"), py::arg("sep") = CTextU::SeparatorsLine) 2025-09-08T22:32:43,489 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,489 303 | .def("linesPaddRight", [](CTextU& s, const wchar_t* str, size_t len, const wchar_t* sep, const wchar_t* sepNew)->size_t { return s.linesPaddRight(*str, len, sep, sepNew); }, "append text to each line", py::arg("str"), py::arg("len"), py::arg("sep") = CTextU::SeparatorsLine, py::arg("sepNew") = CTextU::EOL) 2025-09-08T22:32:43,490 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,490 304 | .def("linesSort", &CTextU::linesSort, py::arg("sep") = CTextU::SeparatorsLine, py::arg("sepNew") = CTextU::EOL) 2025-09-08T22:32:43,490 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,490 305 | .def("linesRemoveEmpty", &CTextU::linesRemoveEmpty, py::arg("minLen") = 0, py::arg("sep") = CTextU::SeparatorsLine) 2025-09-08T22:32:43,490 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,490 306 | .def("linesTrim", &CTextU::linesTrim, py::arg("cList"), py::arg("sep") = CTextU::SeparatorsLine, py::arg("sepNew") = CTextU::EOL) 2025-09-08T22:32:43,490 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,490 307 | .def("limit", &CTextU::limit, "limit the the length, if our text length is smaller nothing is done") 2025-09-08T22:32:43,491 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,491 308 | .def("lower", &CTextU::toLower, "conversion to lowercase (in place)") 2025-09-08T22:32:43,491 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,491 309 | .def("makeUnique", (size_t(CTextU::*)()) &CTextU::makeUnique, "make sure that all characters occurs only once") 2025-09-08T22:32:43,491 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,491 310 | .def("mid", &CTextU::mid, "leaves the middle characters, count characters are cut from both ends, returns new string") 2025-09-08T22:32:43,491 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,491 311 | .def("nextLine", [](CTextU& s, int pos, CTextU& line, bool appendSeparators, const wchar_t* sep)->int { size_t _pos = pos; bool res = s.nextLine(_pos, line, appendSeparators, sep); return res ? (int)_pos : -1; }, py::arg("pos"), py::arg("line"), py::arg("appendSeparators") = false, py::arg("sep") = CTextU::SeparatorsLine) 2025-09-08T22:32:43,491 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,492 312 | .def("nextWord", [](CTextU& s, int pos, CTextU& line, const wchar_t* sep)->int { size_t _pos = pos; bool res = s.nextWord(_pos, line, sep); return res ? (int)_pos : -1; }, py::arg("pos"), py::arg("line"), py::arg("sep") = CTextU::SeparatorsWord) 2025-09-08T22:32:43,492 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,492 313 | .def("paddLeft", &CTextU::paddLeft, "fills from start with the given characters until given lenght") 2025-09-08T22:32:43,492 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,492 314 | .def("paddRight", &CTextU::paddRight, "fills from end with the given characters until given lenght") 2025-09-08T22:32:43,492 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,492 315 | .def("pathCombine", &CTextU::pathCombine, "combine paths, C:\\Temp\" + \"..\\Folder\\\" = \"C:\\Folder") 2025-09-08T22:32:43,492 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,493 316 | .def("push_back", (CTextU& (CTextU::*)(const wchar_t*)) &CTextU::push_back, "append string") 2025-09-08T22:32:43,493 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,493 317 | .def("push_front", (CTextU& (CTextU::*)(const wchar_t*)) &CTextU::push_front, "insert string at start") 2025-09-08T22:32:43,493 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,493 318 | .def("quote", &CTextU::quote) 2025-09-08T22:32:43,493 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,493 319 | .def("randomAlpha", &CTextU::randomAlpha, "generate text containing random alpha upper and lower characters ", py::arg("len") = 16) 2025-09-08T22:32:43,493 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,494 320 | .def("random", &CTextU::randomAlphaNumeric, "generate text containing random alphanumeric upper and lower characters ", py::arg("len") = 16) 2025-09-08T22:32:43,494 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,494 321 | .def("randomNumber", &CTextU::randomNumber, "generate text containing a random integer with the given length", py::arg("len") = 10) 2025-09-08T22:32:43,494 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,494 322 | .def("reduceChain", [](CTextU& s, const wchar_t* cList, const wchar_t* cNew)->CTextU { return s.reduceChain(cList, *cNew); }, "reduce blocks of the separators from the list to a single character", py::arg("cList") = CTextU::SeparatorsWord, py::arg("cNew") = CTextU::SPACE) 2025-09-08T22:32:43,494 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,494 323 | .def("regexLines", [](CTextU& s, const wchar_t* regex, const wchar_t* sep)->vector { vector res; s.regexCollectLines(res, regex, sep); return res; }, "collect all lines matching the given regex condition", py::arg("regex"), py::arg("sep") = CTextU::SeparatorsLine) 2025-09-08T22:32:43,495 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,495 324 | .def("regexWords", [](CTextU& s, const wchar_t* regex, const wchar_t* sep)->vector { vector res; s.regexCollectWords(res, regex, sep); return res; }, "collect all words matching the given regex condition", py::arg("regex"), py::arg("sep") = CTextU::SeparatorsWord) 2025-09-08T22:32:43,495 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,495 325 | .def("regexSearch", [](CTextU& s, const wchar_t* regex)->vector { vector res; s.regexSearch(res, regex); return res; }, "collect substrings using the provided Regex expression and regex_iterator", py::arg("regex")) 2025-09-08T22:32:43,495 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,495 326 | .def("regexReplace", (CTextU& (CTextU::*)(const wchar_t* regexp, const wchar_t* fmt)) &CTextU::regexReplace, "replace strings using the provided Regex expression") 2025-09-08T22:32:43,495 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,495 327 | .def("regexMatch", (bool (CTextU::*)(const wchar_t*) const) &CTextU::regexMatch) 2025-09-08T22:32:43,496 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,496 328 | .def("remove", (size_t(CTextU::*)(const wchar_t*, bool)) &CTextU::remove, "delete all occurences of the string s", py::arg("str"), py::arg("case") = true) 2025-09-08T22:32:43,496 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,496 329 | .def("removeAny", (size_t(CTextU::*)(const wchar_t*, bool)) &CTextU::removeAny, "delete all of provided in the list characters", py::arg("str"), py::arg("case") = true) 2025-09-08T22:32:43,496 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,496 330 | .def("removeAny", &CTextU::removeAny>, "remove any from the provided in the list strings", py::arg("list"), py::arg("case") = true, py::arg("longList") = true) 2025-09-08T22:32:43,496 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,496 331 | .def("removeExtension", &CTextU::removeExtension, "remove the extension from a file path") 2025-09-08T22:32:43,496 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,497 332 | .def("removeFileName", &CTextU::removeFileName, "if string contain file path, remove the file name", py::arg("keepSlash") = true) 2025-09-08T22:32:43,497 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,497 333 | .def("removeLast", &CTextU::removeLast, "removes the last character, return true if not empty and sucessful") 2025-09-08T22:32:43,497 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,497 334 | .def("removeWhileBegins", &CTextU::removeWhileBegins, "remove the characters from str while begins to the characters from our string", py::arg("str")) 2025-09-08T22:32:43,497 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,497 335 | .def("removeWhileEnds", &CTextU::removeWhileEnds, "remove the characters from str while ends to the characters from our string", py::arg("str")) 2025-09-08T22:32:43,497 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,498 336 | .def("replace", (size_t(CTextU::*)(const wchar_t* what, const wchar_t* with, bool bCase)) &CTextU::replace, "replace all occurrences of substring \"what\" with substring \"with\"", py::arg("what"), py::arg("with"), py::arg("case") = true) 2025-09-08T22:32:43,498 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,498 337 | .def("replace", [](CTextU& s, const wchar_t* str, size_t len, const wchar_t* c)->CTextU& { return s.replace(*str, len, *c); }, "replace range with single character", py::arg("str"), py::arg("len"), py::arg("c")) 2025-09-08T22:32:43,498 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,498 338 | .def("replace", [](CTextU& s, const vector& what, const wchar_t* c, bool bCase)->CTextU& { return s.replaceAny(what, *c, bCase, true); }, "replace all found strings in list 'what' with a single character ", py::arg("what"), py::arg("with"), py::arg("case") = true) 2025-09-08T22:32:43,498 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,498 339 | .def("replaceAny", [](CTextU& s, const vector& what, const vector& with, bool bCase)->CTextU& { return s.replaceAny(what, with, bCase, true); }, "replace found strings in list 'what' with corresponding strings from list 'with' ", py::arg("what"), py::arg("with"), py::arg("case") = true) 2025-09-08T22:32:43,498 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,498 340 | .def("replaceAny", [](CTextU& s, const vector& what, const wchar_t* with, bool bCase)->CTextU& { return s.replaceAny(what, with, bCase, true); }, "replace found strings in list 'what' with the string 'with' ", py::arg("what"), py::arg("with"), py::arg("case") = true) 2025-09-08T22:32:43,499 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,499 341 | .def("replaceExtension", &CTextU::replaceExtension, "change the file path extension") 2025-09-08T22:32:43,499 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,499 342 | .def("replaceFileName", &CTextU::replaceFileName, "change the file name") 2025-09-08T22:32:43,499 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,499 343 | .def("replaceLastFolder", &CTextU::replaceLastFolder, "replace last folder name") 2025-09-08T22:32:43,499 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,499 344 | .def("replaceFirst", &CTextU::replaceFirst, "replace first character") 2025-09-08T22:32:43,500 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,500 345 | .def("replaceLast", &CTextU::replaceFirst, "replace last character") 2025-09-08T22:32:43,500 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,500 346 | .def("readFile", &CTextU::readFile, "read a whole text file into our string", py::arg("path"), py::arg("asHex") = false) 2025-09-08T22:32:43,500 | ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,500 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.inl:5980:19: error: no matching function for call to ‘std::basic_ifstream::basic_ifstream(const wchar_t*&, const std::ios_base::openmode&)’ 2025-09-08T22:32:43,500 5980 | std::ifstream ifs(filePath, std::ios::binary); 2025-09-08T22:32:43,501 | ^~~ 2025-09-08T22:32:43,501 In file included from /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.h:24: 2025-09-08T22:32:43,501 /usr/include/c++/14/fstream:627:7: note: candidate: ‘std::basic_ifstream<_CharT, _Traits>::basic_ifstream(std::basic_ifstream<_CharT, _Traits>&&) [with _CharT = char; _Traits = std::char_traits]’ 2025-09-08T22:32:43,501 627 | basic_ifstream(basic_ifstream&& __rhs) 2025-09-08T22:32:43,501 | ^~~~~~~~~~~~~~ 2025-09-08T22:32:43,501 /usr/include/c++/14/fstream:627:7: note: candidate expects 1 argument, 2 provided 2025-09-08T22:32:43,501 /usr/include/c++/14/fstream:602:7: note: candidate: ‘std::basic_ifstream<_CharT, _Traits>::basic_ifstream(const std::string&, std::ios_base::openmode) [with _CharT = char; _Traits = std::char_traits; std::string = std::__cxx11::basic_string; std::ios_base::openmode = std::ios_base::openmode]’ 2025-09-08T22:32:43,501 602 | basic_ifstream(const std::string& __s, 2025-09-08T22:32:43,502 | ^~~~~~~~~~~~~~ 2025-09-08T22:32:43,502 /usr/include/c++/14/fstream:602:41: note: no known conversion for argument 1 from ‘const wchar_t*’ to ‘const std::string&’ {aka ‘const std::__cxx11::basic_string&’} 2025-09-08T22:32:43,502 602 | basic_ifstream(const std::string& __s, 2025-09-08T22:32:43,502 | ~~~~~~~~~~~~~~~~~~~^~~ 2025-09-08T22:32:43,502 /usr/include/c++/14/fstream:569:7: note: candidate: ‘std::basic_ifstream<_CharT, _Traits>::basic_ifstream(const char*, std::ios_base::openmode) [with _CharT = char; _Traits = std::char_traits; std::ios_base::openmode = std::ios_base::openmode]’ 2025-09-08T22:32:43,502 569 | basic_ifstream(const char* __s, ios_base::openmode __mode = ios_base::in) 2025-09-08T22:32:43,502 | ^~~~~~~~~~~~~~ 2025-09-08T22:32:43,502 /usr/include/c++/14/fstream:569:34: note: no known conversion for argument 1 from ‘const wchar_t*’ to ‘const char*’ 2025-09-08T22:32:43,503 569 | basic_ifstream(const char* __s, ios_base::openmode __mode = ios_base::in) 2025-09-08T22:32:43,503 | ~~~~~~~~~~~~^~~ 2025-09-08T22:32:43,503 /usr/include/c++/14/fstream:558:7: note: candidate: ‘std::basic_ifstream<_CharT, _Traits>::basic_ifstream() [with _CharT = char; _Traits = std::char_traits]’ 2025-09-08T22:32:43,503 558 | basic_ifstream() : __istream_type(), _M_filebuf() 2025-09-08T22:32:43,503 | ^~~~~~~~~~~~~~ 2025-09-08T22:32:43,503 /usr/include/c++/14/fstream:558:7: note: candidate expects 0 arguments, 2 provided 2025-09-08T22:32:43,503 In file included from /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/module.cpp:13: 2025-09-08T22:32:43,503 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextU.h: In instantiation of ‘static bool CTextT::ReadFile(const CharT*, CTextT&) [with CharT = wchar_t; X = void; T = wchar_t]’: 2025-09-08T22:32:43,504 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.inl:5419:78: required from ‘bool CTextT::readFile(const CharT*, bool) [with CharT = wchar_t; X = void; T = wchar_t]’ 2025-09-08T22:32:43,504 5419 | return asHex ? ReadFileAsHex (path, *this) : ReadFile(path, *this); 2025-09-08T22:32:43,504 | ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~ 2025-09-08T22:32:43,504 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/module.cpp:346:13: required from here 2025-09-08T22:32:43,504 202 | py::class_ (m, "CTextU") 2025-09-08T22:32:43,504 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,504 203 | // constructors 2025-09-08T22:32:43,504 | ~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,504 204 | .def(py::init<>()) 2025-09-08T22:32:43,505 | ~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,505 205 | .def(py::init()) 2025-09-08T22:32:43,505 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,505 206 | .def(py::init()) 2025-09-08T22:32:43,505 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,505 207 | // operators 2025-09-08T22:32:43,505 | ~~~~~~~~~~~~ 2025-09-08T22:32:43,505 208 | .def(py::self + py::self) 2025-09-08T22:32:43,506 | ~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,506 209 | .def(py::self == py::self) 2025-09-08T22:32:43,506 | ~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,506 210 | .def(py::self != py::self) 2025-09-08T22:32:43,506 | ~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,506 211 | .def(py::self < py::self) 2025-09-08T22:32:43,506 | ~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,506 212 | .def(py::self > py::self) 2025-09-08T22:32:43,506 | ~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,507 213 | .def(py::self + std::wstring()) 2025-09-08T22:32:43,507 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,507 214 | .def(std::wstring() + py::self) 2025-09-08T22:32:43,507 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,507 215 | .def(py::self += py::self) 2025-09-08T22:32:43,507 | ~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,507 216 | .def(py::self += std::wstring()) 2025-09-08T22:32:43,507 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,508 217 | .def("__add__", [](const CTextU& c2, const CTextU& c1) { return c2 + c1; }) 2025-09-08T22:32:43,508 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,508 218 | .def("__add__", [](const CTextU& c1, const wchar_t* c2) { return c2 + c1; }) 2025-09-08T22:32:43,508 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,508 219 | .def("__repr__", [](const CTextU &a) { return a.str() == nullptr? L"": a.str(); }) 2025-09-08T22:32:43,508 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,508 220 | // functions 2025-09-08T22:32:43,508 | ~~~~~~~~~~~~ 2025-09-08T22:32:43,508 221 | .def("addToFileName", &CTextU::addToFileName, "modifies a filename, adds the provided string to file name but keeps extension and path") 2025-09-08T22:32:43,509 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,509 222 | .def("append", [](CTextU& s, const wchar_t* str)->CTextU& { return s.append(str); }, "append string", py::arg("str")) 2025-09-08T22:32:43,509 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,509 223 | .def("append", [](CTextU& s, const wchar_t* str, size_t len)->CTextU& { return s.append(*str, len); }, "append characters", py::arg("c"), py::arg("len") = 1) 2025-09-08T22:32:43,509 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,509 224 | .def("append", [](CTextU& s, const vector& list)->CTextU& { return s.append(list); }, "append single character or string list", py::arg("list")) 2025-09-08T22:32:43,509 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,509 225 | .def("appendRange", [](CTextU& s, const wchar_t* begin, const wchar_t* end)->CTextU& { return s.appendRange(*begin, *end); }, "append all characters in the range ", py::arg("begin"), py::arg("end")) 2025-09-08T22:32:43,509 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,510 226 | .def("between", [](CTextU& s, const wchar_t* left, const wchar_t* right, bool include)->bool { return s.between(left, right, include); }, "keeps the part of the string between the first and last sub-strings sLeft and sRight (by default separattors are not included", py::arg("left"), py::arg("right"), py::arg("include") = false) 2025-09-08T22:32:43,510 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,510 227 | .def("capacity", &CTextU::capacity) 2025-09-08T22:32:43,510 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,510 228 | .def("clear", &CTextU::clear, py::arg("bRelease") = false) 2025-09-08T22:32:43,510 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,510 229 | .def("collectBlocks", [](CTextU& s, const wchar_t* sepBegin, const wchar_t* sepEnd, bool all)->vector { vector res; s.collectBlocks(res, sepBegin, sepEnd, all); return res; }, "collect blocks", py::arg("sepBegin"), py::arg("sepEnd"), py::arg("all") = true) 2025-09-08T22:32:43,511 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,511 230 | .def("collectLines", [](CTextU& s, const wchar_t* sep)->vector { vector res; s.collectLines(res, false, sep); return res; }, "fills a list with the collected lines", py::arg("sep") = CTextU::SeparatorsLine) 2025-09-08T22:32:43,511 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,511 231 | .def("checkBalance", &CTextU::checkBalance, "checks if the blocks defined with the given separators are balanced") 2025-09-08T22:32:43,511 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,511 232 | .def("convertToHex", &CTextU::convertToHex, "convert string to hex values", py::arg("sep") = CTextU::SPACE) 2025-09-08T22:32:43,511 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,511 233 | .def("contain", (bool (CTextU::*)(const wchar_t* s, bool bCase) const) &CTextU::contain, "returns true if our string contains another string ", py::arg("str"), py::arg("case") = true) 2025-09-08T22:32:43,512 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,512 234 | .def("contain", [](CTextU& s, const vector& list, bool bCase)->bool { return s.containAny(list, bCase, true); }, "returns true if contains any of the provided strings", py::arg("list"), py::arg("case") = true) 2025-09-08T22:32:43,512 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,512 235 | .def("containAny", (bool (CTextU::*)(const wchar_t* s, bool bCase) const) &CTextU::containAny, "returns true if our string contains any of the characters in the list", py::arg("str"), py::arg("case") = true) 2025-09-08T22:32:43,512 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,512 236 | .def("containOnly", (bool (CTextU::*)(const wchar_t* s, bool bCase) const) &CTextU::containOnly, "returns true if our string contains only characters in the list", py::arg("str"), py::arg("case") = true) 2025-09-08T22:32:43,513 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,513 237 | .def("count", [](CTextU& s, const wchar_t* str, bool bCase)->size_t { return s.count(str, bCase); }, "returns the count of occurences of the given substring", py::arg("str"), py::arg("case") = true) 2025-09-08T22:32:43,513 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,513 238 | .def("countWordFrequencies", [](CTextU& s, bool bCase, const wchar_t* sep)->std::vector< std::pair > { std::vector< std::pair > res; s.countWordFrequencies(res, bCase, sep); return res; }, "fill the container with the words frequency counts", py::arg("case") = true, py::arg("sep") = CTextU::SeparatorsWord) 2025-09-08T22:32:43,513 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,513 239 | .def("cutAfterFirst", [](CTextU& s, const wchar_t* str, bool include, bool bCase)->CTextU& { return s.cutAfterFirst(*str, include, bCase); }, "leaves everyting left from c, c is not included, everything after is removed", py::arg("str"), py::arg("include") = false, py::arg("case") = true) 2025-09-08T22:32:43,513 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,513 240 | .def("cutAfterLast", [](CTextU& s, const wchar_t* str, bool include, bool bCase)->CTextU& { return s.cutAfterLast(*str, include, bCase); }, "leaves everyting left from the last character, c is not included", py::arg("str"), py::arg("include") = false, py::arg("case") = true) 2025-09-08T22:32:43,514 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,514 241 | .def("cutBeforeFirst", [](CTextU& s, const wchar_t* str, bool include, bool bCase)->CTextU& { return s.cutBeforeFirst(*str, include, bCase); }, "cut everything before the first occurence of string str", py::arg("str"), py::arg("include") = false, py::arg("case") = true) 2025-09-08T22:32:43,514 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,514 242 | .def("cutAfterFirstOfAny", [](CTextU& s, const wchar_t* str, bool include, bool bCase)->CTextU& { return s.cutAfterFirstOfAny(str, include, bCase); }, "cut after the first occurence of any character from the list", py::arg("str"), py::arg("include") = false, py::arg("case") = true) 2025-09-08T22:32:43,514 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,514 243 | .def("cutBeforeFirstOfAny", [](CTextU& s, const wchar_t* str, bool include, bool bCase)->CTextU& { return s.cutBeforeFirstOfAny(str, include, bCase); }, "cut everything before the first occurence of any of the characters from the list or leave intact, include if set, character is included", py::arg("str"), py::arg("include") = false, py::arg("case") = true) 2025-09-08T22:32:43,514 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,514 244 | .def("cutEnds", (CTextU& (CTextU::*)(size_t)) &CTextU::cutEnds, "remove count of characters from left and right", py::arg("count")) 2025-09-08T22:32:43,514 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,515 245 | .def("cutLeft", &CTextU::cutLeft, "removes count characters from left", py::arg("count")) 2025-09-08T22:32:43,515 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,515 246 | .def("cutRight", &CTextU::cutRight, "removes count characters from left", py::arg("count")) 2025-09-08T22:32:43,515 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,515 247 | .def("enclose", (CTextU& (CTextU::*)(const wchar_t* begin, const wchar_t* end, bool checkEnds)) &CTextU::enclose, "enclose with the provided text separators (if not already ends and begins with them)", py::arg("begin"), py::arg("end"), py::arg("checkEnds") = true) 2025-09-08T22:32:43,515 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,515 248 | .def("endsWith", [](CTextU& s, const wchar_t* str, bool bCase)->bool { return s.endsWith(str, 0, bCase); }, "return true if ends with the provided string", py::arg("str"), py::arg("case") = true) 2025-09-08T22:32:43,515 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,515 249 | .def("endsWithAny", [](CTextU& s, const vector& list, bool bCase)->bool { return s.endsWithAny(list, 0, bCase, true); }, "returns true if ends with any of the strings from the list", py::arg("list"), py::arg("case") = true) 2025-09-08T22:32:43,515 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,516 250 | .def("equal", [](CTextU& s, const wchar_t* str, size_t len)->CTextU& { return s.equal(*str, len); }, "init witb len number of characters", py::arg("c"), py::arg("len")) 2025-09-08T22:32:43,516 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,516 251 | .def("erase", &CTextU::erase, "delete count characters starting at zero-based index", py::arg("from"), py::arg("count") = 1) 2025-09-08T22:32:43,516 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,516 252 | .def("find", (const wchar_t* (CTextU::*)(const wchar_t* s, bool bCase) const) &CTextU::find, "return a pointer to the first occurence of the string, or 0 pointer if not found", py::arg("str"), py::arg("case") = true) 2025-09-08T22:32:43,516 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,516 253 | .def("first", &CTextU::first) 2025-09-08T22:32:43,516 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,516 254 | .def("fromArray", [](CTextU& s, const vector& list, const wchar_t* sep)->void { s.fromArray(list, false, 2, sep); }, "compose a string from array using the given separator", py::arg("list"), py::arg("sep") = CTextU::SPACE) 2025-09-08T22:32:43,516 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,516 255 | .def("fromArray", [](CTextU& s, const vector& list, const wchar_t* sep)->void { s.fromArray(list, false, 2, sep); }, "compose a string from array using the given separator", py::arg("list"), py::arg("sep") = CTextU::SPACE) 2025-09-08T22:32:43,517 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,517 256 | .def("fromArray", [](CTextU& s, const vector& list, const wchar_t* sep)->void { s.fromArray(list, sep); }, "compose a string from array using the given separator", py::arg("list"), py::arg("sep") = CTextU::SPACE) 2025-09-08T22:32:43,517 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,517 257 | .def("fromArrayAsHex", [](CTextU& s, const vector& list, int wHex, const wchar_t* sep)->void { s.fromArray(list, true, wHex, sep); }, "compose a string from integerrs array in hex format using the given separator", py::arg("list"), py::arg("wHex") = 2, py::arg("sep") = CTextU::SPACE) 2025-09-08T22:32:43,517 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,517 258 | .def("fromBinary", &CTextU::fromBinary, "create a binary string from the number") 2025-09-08T22:32:43,517 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,517 259 | .def("fromBinary", &CTextU::fromBinary, "create a binary string from the number") 2025-09-08T22:32:43,517 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,517 260 | .def("fromBinary", &CTextU::fromBinary, "create a binary string from the number") 2025-09-08T22:32:43,517 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,518 261 | .def("fromHex", &CTextU::fromHex, "create a hexadecimal string from the number", py::arg("i"), py::arg("hasBase") = false, py::arg("upper") = false, py::arg("append") = false) 2025-09-08T22:32:43,518 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,518 262 | .def("fromHex", &CTextU::fromHex, "create a hexadecimal string from the number", py::arg("i"), py::arg("hasBase") = false, py::arg("upper") = false, py::arg("append") = false) 2025-09-08T22:32:43,518 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,518 263 | .def("fromHex", &CTextU::fromHex, "create a hexadecimal string from the number", py::arg("i"), py::arg("hasBase") = false, py::arg("upper") = false, py::arg("append") = false) 2025-09-08T22:32:43,518 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,518 264 | .def("fromInteger", &CTextU::fromInteger, "convert the decimal nteger to string", py::arg("i"), py::arg("append") = false, py::arg("padd") = 0, py::arg("paddValue") = '0') 2025-09-08T22:32:43,518 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,518 265 | .def("fromInteger", &CTextU::fromInteger, "convert the decimal nteger to string", py::arg("i"), py::arg("append") = false, py::arg("padd") = 0, py::arg("paddValue") = '0') 2025-09-08T22:32:43,518 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,519 266 | .def("fromInteger", &CTextU::fromInteger, "convert the decimal integer to string", py::arg("i"), py::arg("append") = false, py::arg("padd") = 0, py::arg("paddValue") = '0') 2025-09-08T22:32:43,519 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,519 267 | .def("fromDouble", &CTextU::fromDouble, "convert double to string", py::arg("d"), py::arg("precision") = 6, py::arg("fixed") = true, py::arg("nozeros") = false, py::arg("append") = false) 2025-09-08T22:32:43,519 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,519 268 | .def("fromMatrix", [](CTextU& s, py::array_t m, const wchar_t* sep, const wchar_t* sepLine)->void { py::buffer_info buf = m.request(); size_t h = buf.shape[0]; size_t w = buf.shape[1]; int* ptr = (int*)buf.ptr; s.fromMatrix(ptr, w, h, false, 2, sep, sepLine); }, "//compose string from a 2D numerical matrix", py::arg("list"), py::arg("sep") = CTextU::SPACE, py::arg("sepLine") = CTextU::EOL) 2025-09-08T22:32:43,519 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,519 269 | .def("fromMatrix", [](CTextU& s, py::array_t m, const wchar_t* sep, const wchar_t* sepLine)->void { py::buffer_info buf = m.request(); size_t h = buf.shape[0]; size_t w = buf.shape[1]; double* ptr = (double*)buf.ptr; s.fromMatrix(ptr, w, h, false, 2, sep, sepLine); }, "//compose string from a 2D numerical matrix", py::arg("list"), py::arg("sep") = CTextU::SPACE, py::arg("sepLine") = CTextU::EOL) 2025-09-08T22:32:43,519 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,519 270 | .def("fromMatrixAsHex", [](CTextU& s, py::array_t m, int wHex, const wchar_t* sep, const wchar_t* sepLine)->void { py::buffer_info buf = m.request(); size_t h = buf.shape[0]; size_t w = buf.shape[1]; int* ptr = (int*)buf.ptr; s.fromMatrix(ptr, w, h, true, wHex, sep, sepLine); }, "//compose string from a 2D numerical matrix", py::arg("list"), py::arg("wHex") = 2, py::arg("sep") = CTextU::SPACE, py::arg("sepLine") = CTextU::EOL) 2025-09-08T22:32:43,520 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,520 271 | .def("getDir", &CTextU::getDir, "get a folder from a full module path") 2025-09-08T22:32:43,520 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,520 272 | .def("getExtension", &CTextU::getExtension, "if our string contains file path, return pointer to the extension") 2025-09-08T22:32:43,520 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,520 273 | .def("getFileName", &CTextU::getFileName, "if our string contains file path, return pointer to the file name") 2025-09-08T22:32:43,520 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,520 274 | .def("hash", &CTextU::hash) 2025-09-08T22:32:43,520 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,520 275 | .def("indexOf", [](CTextU& s, const wchar_t* str, size_t from, bool bCase)->size_t { return s.lastIndexOf(str, from, bCase); }, "find the offset of first instance of the string in the list, return index or -1 if not found", py::arg("str"), py::arg("from") = 0, py::arg("case") = true) 2025-09-08T22:32:43,520 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,521 276 | .def("indexOfAny", [](CTextU& s, const wchar_t* cList, bool bCase)->size_t { return s.indexOfAny(cList, 0, bCase); }, "find the offset of the first instance of the characters in the list", py::arg("cList"), py::arg("case") = true) 2025-09-08T22:32:43,521 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,521 277 | .def("indexOfAny", [](CTextU& s, const vector& list, bool bCase)->size_t { return s.indexOfAny(list, 0, bCase, true); }, "find the offset of the first instance of the strings in the list", py::arg("list"), py::arg("case") = true) 2025-09-08T22:32:43,521 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,521 278 | .def("insert", [](CTextU& s, size_t from, const wchar_t* c, size_t count)->CTextU& { return s.insert(from, *c, count); }, "insert character at zero-based index, if index is past end of string", py::arg("from"), py::arg("c"), py::arg("count")) 2025-09-08T22:32:43,521 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,521 279 | .def("insert", [](CTextU& s, size_t from, const wchar_t* str)->CTextU& { return s.insert(from, str); }, "insert substring at zero-based index; concatenates, if index is past end of string", py::arg("from"), py::arg("str")) 2025-09-08T22:32:43,521 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,521 280 | .def("insertAtBegin", &CTextU::insertAtBegin, py::arg("str"), py::arg("skip") = 1, py::arg("sep") = CTextU::Separators) 2025-09-08T22:32:43,521 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,522 281 | .def("insertAtEnd", &CTextU::insertAtEnd, py::arg("str"), py::arg("skip") = 1, py::arg("sep") = CTextU::Separators) 2025-09-08T22:32:43,522 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,522 282 | .def("isAlpha", &CTextU::isAlpha, "return true if contains only alphabeta characters") 2025-09-08T22:32:43,522 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,522 283 | .def("isBinary", &CTextU::isBinary, "return true if contains only 0s and 1s") 2025-09-08T22:32:43,522 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,522 284 | .def("isEmpty", &CTextU::isEmpty, "return true if empty") 2025-09-08T22:32:43,522 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,522 285 | .def("isHexNumber", &CTextU::isHexNumber, "return true if contains only hexadecimal digits") 2025-09-08T22:32:43,522 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,522 286 | .def("isLower", &CTextU::isLower, py::arg("strict") = false) 2025-09-08T22:32:43,523 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,523 287 | .def("isNumber", &CTextU::isNumber, "return true if contains only decimal digits", py::arg("allowSign") = true) 2025-09-08T22:32:43,523 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,523 288 | .def("isPalindrome", &CTextU::isPalindrome) 2025-09-08T22:32:43,523 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,523 289 | .def("isUpper", &CTextU::isUpper, py::arg("strict") = false) 2025-09-08T22:32:43,523 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,523 290 | .def("keep", &CTextU::keep, "keeps count characters starting from given position") 2025-09-08T22:32:43,523 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,524 291 | .def("keepEnds", &CTextU::keepEnds, "keeps the characters from both ends, returns number of deleted characters") 2025-09-08T22:32:43,524 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,524 292 | .def("keepLeft", &CTextU::keepLeft, "keeps count characters from left and removes the rest, returns number of deleted characters") 2025-09-08T22:32:43,524 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,524 293 | .def("keepRight", &CTextU::keepRight, "keeps count characters from right and removes the rest, returns number of deleted characters") 2025-09-08T22:32:43,524 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,524 294 | .def("left", &CTextU::left, "return new string containing first count characters") 2025-09-08T22:32:43,524 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,524 295 | .def("length", &CTextU::length, "returns the number of characters in the string") 2025-09-08T22:32:43,524 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,524 296 | .def("last", &CTextU::last) 2025-09-08T22:32:43,525 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,525 297 | .def("lastIndexOf", [](CTextU& s, const wchar_t* str, size_t from, bool bCase)->size_t { return s.lastIndexOf(str, from, bCase); }, "find the first character position starting at right, where from is the offset from the end and the returned idx is from the beggining", py::arg("str"), py::arg("from") = 0, py::arg("case") = true) 2025-09-08T22:32:43,525 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,525 298 | .def("lastIndexOfAny", [](CTextU& s, const wchar_t* cList, bool bCase)->size_t { return s.lastIndexOfAny(cList, 0, bCase); }, "find the offset of the first instance of the characters in the list starting from right", py::arg("cList"), py::arg("case") = true) 2025-09-08T22:32:43,525 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,525 299 | .def("lines", [](CTextU& s, const wchar_t* sep)->vector { vector res; s.collectLines(res, false, sep); return res; }, "return list with all found lines", py::arg("sep") = CTextU::SeparatorsLine) 2025-09-08T22:32:43,525 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,525 300 | .def("linesCount", &CTextU::linesCount, "returns the number of the lines in the string", py::arg("sep") = CTextU::EOL) 2025-09-08T22:32:43,525 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,526 301 | .def("linesAppend", [](CTextU& s, const wchar_t* str, const wchar_t* sep)->size_t { return s.linesInsertAtEnd(str, 1, sep); }, "append text to each line", py::arg("str"), py::arg("sep") = CTextU::SeparatorsLine) 2025-09-08T22:32:43,526 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,526 302 | .def("linesInsertAtBegin", [](CTextU& s, const wchar_t* str, const wchar_t* sep)->size_t { return s.linesInsertAtBegin(str, 1, sep); }, "insert text at each line begin", py::arg("str"), py::arg("sep") = CTextU::SeparatorsLine) 2025-09-08T22:32:43,526 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,526 303 | .def("linesPaddRight", [](CTextU& s, const wchar_t* str, size_t len, const wchar_t* sep, const wchar_t* sepNew)->size_t { return s.linesPaddRight(*str, len, sep, sepNew); }, "append text to each line", py::arg("str"), py::arg("len"), py::arg("sep") = CTextU::SeparatorsLine, py::arg("sepNew") = CTextU::EOL) 2025-09-08T22:32:43,526 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,526 304 | .def("linesSort", &CTextU::linesSort, py::arg("sep") = CTextU::SeparatorsLine, py::arg("sepNew") = CTextU::EOL) 2025-09-08T22:32:43,526 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,526 305 | .def("linesRemoveEmpty", &CTextU::linesRemoveEmpty, py::arg("minLen") = 0, py::arg("sep") = CTextU::SeparatorsLine) 2025-09-08T22:32:43,526 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,526 306 | .def("linesTrim", &CTextU::linesTrim, py::arg("cList"), py::arg("sep") = CTextU::SeparatorsLine, py::arg("sepNew") = CTextU::EOL) 2025-09-08T22:32:43,527 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,527 307 | .def("limit", &CTextU::limit, "limit the the length, if our text length is smaller nothing is done") 2025-09-08T22:32:43,527 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,527 308 | .def("lower", &CTextU::toLower, "conversion to lowercase (in place)") 2025-09-08T22:32:43,527 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,527 309 | .def("makeUnique", (size_t(CTextU::*)()) &CTextU::makeUnique, "make sure that all characters occurs only once") 2025-09-08T22:32:43,527 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,527 310 | .def("mid", &CTextU::mid, "leaves the middle characters, count characters are cut from both ends, returns new string") 2025-09-08T22:32:43,527 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,527 311 | .def("nextLine", [](CTextU& s, int pos, CTextU& line, bool appendSeparators, const wchar_t* sep)->int { size_t _pos = pos; bool res = s.nextLine(_pos, line, appendSeparators, sep); return res ? (int)_pos : -1; }, py::arg("pos"), py::arg("line"), py::arg("appendSeparators") = false, py::arg("sep") = CTextU::SeparatorsLine) 2025-09-08T22:32:43,528 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,528 312 | .def("nextWord", [](CTextU& s, int pos, CTextU& line, const wchar_t* sep)->int { size_t _pos = pos; bool res = s.nextWord(_pos, line, sep); return res ? (int)_pos : -1; }, py::arg("pos"), py::arg("line"), py::arg("sep") = CTextU::SeparatorsWord) 2025-09-08T22:32:43,528 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,528 313 | .def("paddLeft", &CTextU::paddLeft, "fills from start with the given characters until given lenght") 2025-09-08T22:32:43,528 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,528 314 | .def("paddRight", &CTextU::paddRight, "fills from end with the given characters until given lenght") 2025-09-08T22:32:43,528 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,528 315 | .def("pathCombine", &CTextU::pathCombine, "combine paths, C:\\Temp\" + \"..\\Folder\\\" = \"C:\\Folder") 2025-09-08T22:32:43,528 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,529 316 | .def("push_back", (CTextU& (CTextU::*)(const wchar_t*)) &CTextU::push_back, "append string") 2025-09-08T22:32:43,529 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,529 317 | .def("push_front", (CTextU& (CTextU::*)(const wchar_t*)) &CTextU::push_front, "insert string at start") 2025-09-08T22:32:43,529 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,529 318 | .def("quote", &CTextU::quote) 2025-09-08T22:32:43,529 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,529 319 | .def("randomAlpha", &CTextU::randomAlpha, "generate text containing random alpha upper and lower characters ", py::arg("len") = 16) 2025-09-08T22:32:43,529 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,529 320 | .def("random", &CTextU::randomAlphaNumeric, "generate text containing random alphanumeric upper and lower characters ", py::arg("len") = 16) 2025-09-08T22:32:43,529 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,529 321 | .def("randomNumber", &CTextU::randomNumber, "generate text containing a random integer with the given length", py::arg("len") = 10) 2025-09-08T22:32:43,530 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,530 322 | .def("reduceChain", [](CTextU& s, const wchar_t* cList, const wchar_t* cNew)->CTextU { return s.reduceChain(cList, *cNew); }, "reduce blocks of the separators from the list to a single character", py::arg("cList") = CTextU::SeparatorsWord, py::arg("cNew") = CTextU::SPACE) 2025-09-08T22:32:43,530 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,530 323 | .def("regexLines", [](CTextU& s, const wchar_t* regex, const wchar_t* sep)->vector { vector res; s.regexCollectLines(res, regex, sep); return res; }, "collect all lines matching the given regex condition", py::arg("regex"), py::arg("sep") = CTextU::SeparatorsLine) 2025-09-08T22:32:43,530 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,530 324 | .def("regexWords", [](CTextU& s, const wchar_t* regex, const wchar_t* sep)->vector { vector res; s.regexCollectWords(res, regex, sep); return res; }, "collect all words matching the given regex condition", py::arg("regex"), py::arg("sep") = CTextU::SeparatorsWord) 2025-09-08T22:32:43,530 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,530 325 | .def("regexSearch", [](CTextU& s, const wchar_t* regex)->vector { vector res; s.regexSearch(res, regex); return res; }, "collect substrings using the provided Regex expression and regex_iterator", py::arg("regex")) 2025-09-08T22:32:43,530 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,530 326 | .def("regexReplace", (CTextU& (CTextU::*)(const wchar_t* regexp, const wchar_t* fmt)) &CTextU::regexReplace, "replace strings using the provided Regex expression") 2025-09-08T22:32:43,531 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,531 327 | .def("regexMatch", (bool (CTextU::*)(const wchar_t*) const) &CTextU::regexMatch) 2025-09-08T22:32:43,531 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,531 328 | .def("remove", (size_t(CTextU::*)(const wchar_t*, bool)) &CTextU::remove, "delete all occurences of the string s", py::arg("str"), py::arg("case") = true) 2025-09-08T22:32:43,531 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,531 329 | .def("removeAny", (size_t(CTextU::*)(const wchar_t*, bool)) &CTextU::removeAny, "delete all of provided in the list characters", py::arg("str"), py::arg("case") = true) 2025-09-08T22:32:43,531 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,531 330 | .def("removeAny", &CTextU::removeAny>, "remove any from the provided in the list strings", py::arg("list"), py::arg("case") = true, py::arg("longList") = true) 2025-09-08T22:32:43,531 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,531 331 | .def("removeExtension", &CTextU::removeExtension, "remove the extension from a file path") 2025-09-08T22:32:43,532 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,532 332 | .def("removeFileName", &CTextU::removeFileName, "if string contain file path, remove the file name", py::arg("keepSlash") = true) 2025-09-08T22:32:43,532 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,532 333 | .def("removeLast", &CTextU::removeLast, "removes the last character, return true if not empty and sucessful") 2025-09-08T22:32:43,532 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,532 334 | .def("removeWhileBegins", &CTextU::removeWhileBegins, "remove the characters from str while begins to the characters from our string", py::arg("str")) 2025-09-08T22:32:43,532 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,532 335 | .def("removeWhileEnds", &CTextU::removeWhileEnds, "remove the characters from str while ends to the characters from our string", py::arg("str")) 2025-09-08T22:32:43,532 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,532 336 | .def("replace", (size_t(CTextU::*)(const wchar_t* what, const wchar_t* with, bool bCase)) &CTextU::replace, "replace all occurrences of substring \"what\" with substring \"with\"", py::arg("what"), py::arg("with"), py::arg("case") = true) 2025-09-08T22:32:43,533 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,533 337 | .def("replace", [](CTextU& s, const wchar_t* str, size_t len, const wchar_t* c)->CTextU& { return s.replace(*str, len, *c); }, "replace range with single character", py::arg("str"), py::arg("len"), py::arg("c")) 2025-09-08T22:32:43,533 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,533 338 | .def("replace", [](CTextU& s, const vector& what, const wchar_t* c, bool bCase)->CTextU& { return s.replaceAny(what, *c, bCase, true); }, "replace all found strings in list 'what' with a single character ", py::arg("what"), py::arg("with"), py::arg("case") = true) 2025-09-08T22:32:43,533 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,533 339 | .def("replaceAny", [](CTextU& s, const vector& what, const vector& with, bool bCase)->CTextU& { return s.replaceAny(what, with, bCase, true); }, "replace found strings in list 'what' with corresponding strings from list 'with' ", py::arg("what"), py::arg("with"), py::arg("case") = true) 2025-09-08T22:32:43,533 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,533 340 | .def("replaceAny", [](CTextU& s, const vector& what, const wchar_t* with, bool bCase)->CTextU& { return s.replaceAny(what, with, bCase, true); }, "replace found strings in list 'what' with the string 'with' ", py::arg("what"), py::arg("with"), py::arg("case") = true) 2025-09-08T22:32:43,534 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,534 341 | .def("replaceExtension", &CTextU::replaceExtension, "change the file path extension") 2025-09-08T22:32:43,534 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,534 342 | .def("replaceFileName", &CTextU::replaceFileName, "change the file name") 2025-09-08T22:32:43,534 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,534 343 | .def("replaceLastFolder", &CTextU::replaceLastFolder, "replace last folder name") 2025-09-08T22:32:43,534 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,534 344 | .def("replaceFirst", &CTextU::replaceFirst, "replace first character") 2025-09-08T22:32:43,534 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,534 345 | .def("replaceLast", &CTextU::replaceFirst, "replace last character") 2025-09-08T22:32:43,534 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,535 346 | .def("readFile", &CTextU::readFile, "read a whole text file into our string", py::arg("path"), py::arg("asHex") = false) 2025-09-08T22:32:43,535 | ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,535 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextU.h:89:19: error: no matching function for call to ‘std::basic_ifstream::basic_ifstream(const wchar_t*&, const std::ios_base::openmode&)’ 2025-09-08T22:32:43,535 89 | std::ifstream ifs(filePath, std::ios::binary); 2025-09-08T22:32:43,535 | ^~~ 2025-09-08T22:32:43,535 /usr/include/c++/14/fstream:627:7: note: candidate: ‘std::basic_ifstream<_CharT, _Traits>::basic_ifstream(std::basic_ifstream<_CharT, _Traits>&&) [with _CharT = char; _Traits = std::char_traits]’ 2025-09-08T22:32:43,535 627 | basic_ifstream(basic_ifstream&& __rhs) 2025-09-08T22:32:43,535 | ^~~~~~~~~~~~~~ 2025-09-08T22:32:43,535 /usr/include/c++/14/fstream:627:7: note: candidate expects 1 argument, 2 provided 2025-09-08T22:32:43,536 /usr/include/c++/14/fstream:602:7: note: candidate: ‘std::basic_ifstream<_CharT, _Traits>::basic_ifstream(const std::string&, std::ios_base::openmode) [with _CharT = char; _Traits = std::char_traits; std::string = std::__cxx11::basic_string; std::ios_base::openmode = std::ios_base::openmode]’ 2025-09-08T22:32:43,536 602 | basic_ifstream(const std::string& __s, 2025-09-08T22:32:43,536 | ^~~~~~~~~~~~~~ 2025-09-08T22:32:43,536 /usr/include/c++/14/fstream:602:41: note: no known conversion for argument 1 from ‘const wchar_t*’ to ‘const std::string&’ {aka ‘const std::__cxx11::basic_string&’} 2025-09-08T22:32:43,536 602 | basic_ifstream(const std::string& __s, 2025-09-08T22:32:43,536 | ~~~~~~~~~~~~~~~~~~~^~~ 2025-09-08T22:32:43,536 /usr/include/c++/14/fstream:569:7: note: candidate: ‘std::basic_ifstream<_CharT, _Traits>::basic_ifstream(const char*, std::ios_base::openmode) [with _CharT = char; _Traits = std::char_traits; std::ios_base::openmode = std::ios_base::openmode]’ 2025-09-08T22:32:43,536 569 | basic_ifstream(const char* __s, ios_base::openmode __mode = ios_base::in) 2025-09-08T22:32:43,536 | ^~~~~~~~~~~~~~ 2025-09-08T22:32:43,536 /usr/include/c++/14/fstream:569:34: note: no known conversion for argument 1 from ‘const wchar_t*’ to ‘const char*’ 2025-09-08T22:32:43,537 569 | basic_ifstream(const char* __s, ios_base::openmode __mode = ios_base::in) 2025-09-08T22:32:43,537 | ~~~~~~~~~~~~^~~ 2025-09-08T22:32:43,537 /usr/include/c++/14/fstream:558:7: note: candidate: ‘std::basic_ifstream<_CharT, _Traits>::basic_ifstream() [with _CharT = char; _Traits = std::char_traits]’ 2025-09-08T22:32:43,537 558 | basic_ifstream() : __istream_type(), _M_filebuf() 2025-09-08T22:32:43,537 | ^~~~~~~~~~~~~~ 2025-09-08T22:32:43,537 /usr/include/c++/14/fstream:558:7: note: candidate expects 0 arguments, 2 provided 2025-09-08T22:32:43,545 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.inl: In instantiation of ‘static bool CTextT::WriteFileAsHex(const CharT*, CTextT&) [with CharT = wchar_t; X = void; T = wchar_t]’: 2025-09-08T22:32:43,545 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.inl:5411:34: required from ‘bool CTextT::writeFile(const CharT*, int, bool) [with CharT = wchar_t; X = void; T = wchar_t]’ 2025-09-08T22:32:43,545 5411 | return asHex ? WriteFileAsHex(filePath, *this) : WriteFile (filePath, *this, (EncodingType)encoding); 2025-09-08T22:32:43,545 | ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,545 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/module.cpp:375:13: required from here 2025-09-08T22:32:43,545 202 | py::class_ (m, "CTextU") 2025-09-08T22:32:43,546 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,546 203 | // constructors 2025-09-08T22:32:43,546 | ~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,546 204 | .def(py::init<>()) 2025-09-08T22:32:43,546 | ~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,546 205 | .def(py::init()) 2025-09-08T22:32:43,546 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,546 206 | .def(py::init()) 2025-09-08T22:32:43,546 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,546 207 | // operators 2025-09-08T22:32:43,546 | ~~~~~~~~~~~~ 2025-09-08T22:32:43,547 208 | .def(py::self + py::self) 2025-09-08T22:32:43,547 | ~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,547 209 | .def(py::self == py::self) 2025-09-08T22:32:43,547 | ~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,547 210 | .def(py::self != py::self) 2025-09-08T22:32:43,547 | ~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,547 211 | .def(py::self < py::self) 2025-09-08T22:32:43,547 | ~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,547 212 | .def(py::self > py::self) 2025-09-08T22:32:43,547 | ~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,547 213 | .def(py::self + std::wstring()) 2025-09-08T22:32:43,547 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,548 214 | .def(std::wstring() + py::self) 2025-09-08T22:32:43,548 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,548 215 | .def(py::self += py::self) 2025-09-08T22:32:43,548 | ~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,548 216 | .def(py::self += std::wstring()) 2025-09-08T22:32:43,548 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,548 217 | .def("__add__", [](const CTextU& c2, const CTextU& c1) { return c2 + c1; }) 2025-09-08T22:32:43,548 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,548 218 | .def("__add__", [](const CTextU& c1, const wchar_t* c2) { return c2 + c1; }) 2025-09-08T22:32:43,548 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,548 219 | .def("__repr__", [](const CTextU &a) { return a.str() == nullptr? L"": a.str(); }) 2025-09-08T22:32:43,548 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,549 220 | // functions 2025-09-08T22:32:43,549 | ~~~~~~~~~~~~ 2025-09-08T22:32:43,549 221 | .def("addToFileName", &CTextU::addToFileName, "modifies a filename, adds the provided string to file name but keeps extension and path") 2025-09-08T22:32:43,549 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,549 222 | .def("append", [](CTextU& s, const wchar_t* str)->CTextU& { return s.append(str); }, "append string", py::arg("str")) 2025-09-08T22:32:43,549 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,549 223 | .def("append", [](CTextU& s, const wchar_t* str, size_t len)->CTextU& { return s.append(*str, len); }, "append characters", py::arg("c"), py::arg("len") = 1) 2025-09-08T22:32:43,549 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,549 224 | .def("append", [](CTextU& s, const vector& list)->CTextU& { return s.append(list); }, "append single character or string list", py::arg("list")) 2025-09-08T22:32:43,549 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,549 225 | .def("appendRange", [](CTextU& s, const wchar_t* begin, const wchar_t* end)->CTextU& { return s.appendRange(*begin, *end); }, "append all characters in the range ", py::arg("begin"), py::arg("end")) 2025-09-08T22:32:43,549 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,550 226 | .def("between", [](CTextU& s, const wchar_t* left, const wchar_t* right, bool include)->bool { return s.between(left, right, include); }, "keeps the part of the string between the first and last sub-strings sLeft and sRight (by default separattors are not included", py::arg("left"), py::arg("right"), py::arg("include") = false) 2025-09-08T22:32:43,550 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,550 227 | .def("capacity", &CTextU::capacity) 2025-09-08T22:32:43,550 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,550 228 | .def("clear", &CTextU::clear, py::arg("bRelease") = false) 2025-09-08T22:32:43,550 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,550 229 | .def("collectBlocks", [](CTextU& s, const wchar_t* sepBegin, const wchar_t* sepEnd, bool all)->vector { vector res; s.collectBlocks(res, sepBegin, sepEnd, all); return res; }, "collect blocks", py::arg("sepBegin"), py::arg("sepEnd"), py::arg("all") = true) 2025-09-08T22:32:43,550 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,550 230 | .def("collectLines", [](CTextU& s, const wchar_t* sep)->vector { vector res; s.collectLines(res, false, sep); return res; }, "fills a list with the collected lines", py::arg("sep") = CTextU::SeparatorsLine) 2025-09-08T22:32:43,550 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,550 231 | .def("checkBalance", &CTextU::checkBalance, "checks if the blocks defined with the given separators are balanced") 2025-09-08T22:32:43,550 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,551 232 | .def("convertToHex", &CTextU::convertToHex, "convert string to hex values", py::arg("sep") = CTextU::SPACE) 2025-09-08T22:32:43,551 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,551 233 | .def("contain", (bool (CTextU::*)(const wchar_t* s, bool bCase) const) &CTextU::contain, "returns true if our string contains another string ", py::arg("str"), py::arg("case") = true) 2025-09-08T22:32:43,551 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,551 234 | .def("contain", [](CTextU& s, const vector& list, bool bCase)->bool { return s.containAny(list, bCase, true); }, "returns true if contains any of the provided strings", py::arg("list"), py::arg("case") = true) 2025-09-08T22:32:43,551 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,551 235 | .def("containAny", (bool (CTextU::*)(const wchar_t* s, bool bCase) const) &CTextU::containAny, "returns true if our string contains any of the characters in the list", py::arg("str"), py::arg("case") = true) 2025-09-08T22:32:43,551 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,551 236 | .def("containOnly", (bool (CTextU::*)(const wchar_t* s, bool bCase) const) &CTextU::containOnly, "returns true if our string contains only characters in the list", py::arg("str"), py::arg("case") = true) 2025-09-08T22:32:43,551 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,551 237 | .def("count", [](CTextU& s, const wchar_t* str, bool bCase)->size_t { return s.count(str, bCase); }, "returns the count of occurences of the given substring", py::arg("str"), py::arg("case") = true) 2025-09-08T22:32:43,552 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,552 238 | .def("countWordFrequencies", [](CTextU& s, bool bCase, const wchar_t* sep)->std::vector< std::pair > { std::vector< std::pair > res; s.countWordFrequencies(res, bCase, sep); return res; }, "fill the container with the words frequency counts", py::arg("case") = true, py::arg("sep") = CTextU::SeparatorsWord) 2025-09-08T22:32:43,552 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,552 239 | .def("cutAfterFirst", [](CTextU& s, const wchar_t* str, bool include, bool bCase)->CTextU& { return s.cutAfterFirst(*str, include, bCase); }, "leaves everyting left from c, c is not included, everything after is removed", py::arg("str"), py::arg("include") = false, py::arg("case") = true) 2025-09-08T22:32:43,552 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,552 240 | .def("cutAfterLast", [](CTextU& s, const wchar_t* str, bool include, bool bCase)->CTextU& { return s.cutAfterLast(*str, include, bCase); }, "leaves everyting left from the last character, c is not included", py::arg("str"), py::arg("include") = false, py::arg("case") = true) 2025-09-08T22:32:43,552 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,552 241 | .def("cutBeforeFirst", [](CTextU& s, const wchar_t* str, bool include, bool bCase)->CTextU& { return s.cutBeforeFirst(*str, include, bCase); }, "cut everything before the first occurence of string str", py::arg("str"), py::arg("include") = false, py::arg("case") = true) 2025-09-08T22:32:43,552 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,552 242 | .def("cutAfterFirstOfAny", [](CTextU& s, const wchar_t* str, bool include, bool bCase)->CTextU& { return s.cutAfterFirstOfAny(str, include, bCase); }, "cut after the first occurence of any character from the list", py::arg("str"), py::arg("include") = false, py::arg("case") = true) 2025-09-08T22:32:43,553 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,553 243 | .def("cutBeforeFirstOfAny", [](CTextU& s, const wchar_t* str, bool include, bool bCase)->CTextU& { return s.cutBeforeFirstOfAny(str, include, bCase); }, "cut everything before the first occurence of any of the characters from the list or leave intact, include if set, character is included", py::arg("str"), py::arg("include") = false, py::arg("case") = true) 2025-09-08T22:32:43,553 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,553 244 | .def("cutEnds", (CTextU& (CTextU::*)(size_t)) &CTextU::cutEnds, "remove count of characters from left and right", py::arg("count")) 2025-09-08T22:32:43,553 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,553 245 | .def("cutLeft", &CTextU::cutLeft, "removes count characters from left", py::arg("count")) 2025-09-08T22:32:43,553 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,553 246 | .def("cutRight", &CTextU::cutRight, "removes count characters from left", py::arg("count")) 2025-09-08T22:32:43,553 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,553 247 | .def("enclose", (CTextU& (CTextU::*)(const wchar_t* begin, const wchar_t* end, bool checkEnds)) &CTextU::enclose, "enclose with the provided text separators (if not already ends and begins with them)", py::arg("begin"), py::arg("end"), py::arg("checkEnds") = true) 2025-09-08T22:32:43,553 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,554 248 | .def("endsWith", [](CTextU& s, const wchar_t* str, bool bCase)->bool { return s.endsWith(str, 0, bCase); }, "return true if ends with the provided string", py::arg("str"), py::arg("case") = true) 2025-09-08T22:32:43,554 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,554 249 | .def("endsWithAny", [](CTextU& s, const vector& list, bool bCase)->bool { return s.endsWithAny(list, 0, bCase, true); }, "returns true if ends with any of the strings from the list", py::arg("list"), py::arg("case") = true) 2025-09-08T22:32:43,554 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,554 250 | .def("equal", [](CTextU& s, const wchar_t* str, size_t len)->CTextU& { return s.equal(*str, len); }, "init witb len number of characters", py::arg("c"), py::arg("len")) 2025-09-08T22:32:43,554 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,554 251 | .def("erase", &CTextU::erase, "delete count characters starting at zero-based index", py::arg("from"), py::arg("count") = 1) 2025-09-08T22:32:43,554 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,554 252 | .def("find", (const wchar_t* (CTextU::*)(const wchar_t* s, bool bCase) const) &CTextU::find, "return a pointer to the first occurence of the string, or 0 pointer if not found", py::arg("str"), py::arg("case") = true) 2025-09-08T22:32:43,554 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,554 253 | .def("first", &CTextU::first) 2025-09-08T22:32:43,555 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,555 254 | .def("fromArray", [](CTextU& s, const vector& list, const wchar_t* sep)->void { s.fromArray(list, false, 2, sep); }, "compose a string from array using the given separator", py::arg("list"), py::arg("sep") = CTextU::SPACE) 2025-09-08T22:32:43,555 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,555 255 | .def("fromArray", [](CTextU& s, const vector& list, const wchar_t* sep)->void { s.fromArray(list, false, 2, sep); }, "compose a string from array using the given separator", py::arg("list"), py::arg("sep") = CTextU::SPACE) 2025-09-08T22:32:43,555 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,555 256 | .def("fromArray", [](CTextU& s, const vector& list, const wchar_t* sep)->void { s.fromArray(list, sep); }, "compose a string from array using the given separator", py::arg("list"), py::arg("sep") = CTextU::SPACE) 2025-09-08T22:32:43,555 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,555 257 | .def("fromArrayAsHex", [](CTextU& s, const vector& list, int wHex, const wchar_t* sep)->void { s.fromArray(list, true, wHex, sep); }, "compose a string from integerrs array in hex format using the given separator", py::arg("list"), py::arg("wHex") = 2, py::arg("sep") = CTextU::SPACE) 2025-09-08T22:32:43,555 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,555 258 | .def("fromBinary", &CTextU::fromBinary, "create a binary string from the number") 2025-09-08T22:32:43,556 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,556 259 | .def("fromBinary", &CTextU::fromBinary, "create a binary string from the number") 2025-09-08T22:32:43,556 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,556 260 | .def("fromBinary", &CTextU::fromBinary, "create a binary string from the number") 2025-09-08T22:32:43,556 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,556 261 | .def("fromHex", &CTextU::fromHex, "create a hexadecimal string from the number", py::arg("i"), py::arg("hasBase") = false, py::arg("upper") = false, py::arg("append") = false) 2025-09-08T22:32:43,556 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,556 262 | .def("fromHex", &CTextU::fromHex, "create a hexadecimal string from the number", py::arg("i"), py::arg("hasBase") = false, py::arg("upper") = false, py::arg("append") = false) 2025-09-08T22:32:43,556 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,556 263 | .def("fromHex", &CTextU::fromHex, "create a hexadecimal string from the number", py::arg("i"), py::arg("hasBase") = false, py::arg("upper") = false, py::arg("append") = false) 2025-09-08T22:32:43,556 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,556 264 | .def("fromInteger", &CTextU::fromInteger, "convert the decimal nteger to string", py::arg("i"), py::arg("append") = false, py::arg("padd") = 0, py::arg("paddValue") = '0') 2025-09-08T22:32:43,557 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,557 265 | .def("fromInteger", &CTextU::fromInteger, "convert the decimal nteger to string", py::arg("i"), py::arg("append") = false, py::arg("padd") = 0, py::arg("paddValue") = '0') 2025-09-08T22:32:43,557 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,557 266 | .def("fromInteger", &CTextU::fromInteger, "convert the decimal integer to string", py::arg("i"), py::arg("append") = false, py::arg("padd") = 0, py::arg("paddValue") = '0') 2025-09-08T22:32:43,557 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,557 267 | .def("fromDouble", &CTextU::fromDouble, "convert double to string", py::arg("d"), py::arg("precision") = 6, py::arg("fixed") = true, py::arg("nozeros") = false, py::arg("append") = false) 2025-09-08T22:32:43,557 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,557 268 | .def("fromMatrix", [](CTextU& s, py::array_t m, const wchar_t* sep, const wchar_t* sepLine)->void { py::buffer_info buf = m.request(); size_t h = buf.shape[0]; size_t w = buf.shape[1]; int* ptr = (int*)buf.ptr; s.fromMatrix(ptr, w, h, false, 2, sep, sepLine); }, "//compose string from a 2D numerical matrix", py::arg("list"), py::arg("sep") = CTextU::SPACE, py::arg("sepLine") = CTextU::EOL) 2025-09-08T22:32:43,557 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,557 269 | .def("fromMatrix", [](CTextU& s, py::array_t m, const wchar_t* sep, const wchar_t* sepLine)->void { py::buffer_info buf = m.request(); size_t h = buf.shape[0]; size_t w = buf.shape[1]; double* ptr = (double*)buf.ptr; s.fromMatrix(ptr, w, h, false, 2, sep, sepLine); }, "//compose string from a 2D numerical matrix", py::arg("list"), py::arg("sep") = CTextU::SPACE, py::arg("sepLine") = CTextU::EOL) 2025-09-08T22:32:43,557 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,558 270 | .def("fromMatrixAsHex", [](CTextU& s, py::array_t m, int wHex, const wchar_t* sep, const wchar_t* sepLine)->void { py::buffer_info buf = m.request(); size_t h = buf.shape[0]; size_t w = buf.shape[1]; int* ptr = (int*)buf.ptr; s.fromMatrix(ptr, w, h, true, wHex, sep, sepLine); }, "//compose string from a 2D numerical matrix", py::arg("list"), py::arg("wHex") = 2, py::arg("sep") = CTextU::SPACE, py::arg("sepLine") = CTextU::EOL) 2025-09-08T22:32:43,558 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,558 271 | .def("getDir", &CTextU::getDir, "get a folder from a full module path") 2025-09-08T22:32:43,558 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,558 272 | .def("getExtension", &CTextU::getExtension, "if our string contains file path, return pointer to the extension") 2025-09-08T22:32:43,558 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,558 273 | .def("getFileName", &CTextU::getFileName, "if our string contains file path, return pointer to the file name") 2025-09-08T22:32:43,558 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,558 274 | .def("hash", &CTextU::hash) 2025-09-08T22:32:43,558 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,559 275 | .def("indexOf", [](CTextU& s, const wchar_t* str, size_t from, bool bCase)->size_t { return s.lastIndexOf(str, from, bCase); }, "find the offset of first instance of the string in the list, return index or -1 if not found", py::arg("str"), py::arg("from") = 0, py::arg("case") = true) 2025-09-08T22:32:43,559 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,559 276 | .def("indexOfAny", [](CTextU& s, const wchar_t* cList, bool bCase)->size_t { return s.indexOfAny(cList, 0, bCase); }, "find the offset of the first instance of the characters in the list", py::arg("cList"), py::arg("case") = true) 2025-09-08T22:32:43,559 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,559 277 | .def("indexOfAny", [](CTextU& s, const vector& list, bool bCase)->size_t { return s.indexOfAny(list, 0, bCase, true); }, "find the offset of the first instance of the strings in the list", py::arg("list"), py::arg("case") = true) 2025-09-08T22:32:43,559 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,559 278 | .def("insert", [](CTextU& s, size_t from, const wchar_t* c, size_t count)->CTextU& { return s.insert(from, *c, count); }, "insert character at zero-based index, if index is past end of string", py::arg("from"), py::arg("c"), py::arg("count")) 2025-09-08T22:32:43,559 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,559 279 | .def("insert", [](CTextU& s, size_t from, const wchar_t* str)->CTextU& { return s.insert(from, str); }, "insert substring at zero-based index; concatenates, if index is past end of string", py::arg("from"), py::arg("str")) 2025-09-08T22:32:43,559 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,559 280 | .def("insertAtBegin", &CTextU::insertAtBegin, py::arg("str"), py::arg("skip") = 1, py::arg("sep") = CTextU::Separators) 2025-09-08T22:32:43,559 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,560 281 | .def("insertAtEnd", &CTextU::insertAtEnd, py::arg("str"), py::arg("skip") = 1, py::arg("sep") = CTextU::Separators) 2025-09-08T22:32:43,560 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,560 282 | .def("isAlpha", &CTextU::isAlpha, "return true if contains only alphabeta characters") 2025-09-08T22:32:43,560 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,560 283 | .def("isBinary", &CTextU::isBinary, "return true if contains only 0s and 1s") 2025-09-08T22:32:43,560 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,560 284 | .def("isEmpty", &CTextU::isEmpty, "return true if empty") 2025-09-08T22:32:43,560 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,560 285 | .def("isHexNumber", &CTextU::isHexNumber, "return true if contains only hexadecimal digits") 2025-09-08T22:32:43,560 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,560 286 | .def("isLower", &CTextU::isLower, py::arg("strict") = false) 2025-09-08T22:32:43,561 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,561 287 | .def("isNumber", &CTextU::isNumber, "return true if contains only decimal digits", py::arg("allowSign") = true) 2025-09-08T22:32:43,561 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,561 288 | .def("isPalindrome", &CTextU::isPalindrome) 2025-09-08T22:32:43,561 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,561 289 | .def("isUpper", &CTextU::isUpper, py::arg("strict") = false) 2025-09-08T22:32:43,561 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,561 290 | .def("keep", &CTextU::keep, "keeps count characters starting from given position") 2025-09-08T22:32:43,561 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,561 291 | .def("keepEnds", &CTextU::keepEnds, "keeps the characters from both ends, returns number of deleted characters") 2025-09-08T22:32:43,561 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,561 292 | .def("keepLeft", &CTextU::keepLeft, "keeps count characters from left and removes the rest, returns number of deleted characters") 2025-09-08T22:32:43,562 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,562 293 | .def("keepRight", &CTextU::keepRight, "keeps count characters from right and removes the rest, returns number of deleted characters") 2025-09-08T22:32:43,562 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,562 294 | .def("left", &CTextU::left, "return new string containing first count characters") 2025-09-08T22:32:43,562 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,562 295 | .def("length", &CTextU::length, "returns the number of characters in the string") 2025-09-08T22:32:43,562 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,562 296 | .def("last", &CTextU::last) 2025-09-08T22:32:43,562 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,562 297 | .def("lastIndexOf", [](CTextU& s, const wchar_t* str, size_t from, bool bCase)->size_t { return s.lastIndexOf(str, from, bCase); }, "find the first character position starting at right, where from is the offset from the end and the returned idx is from the beggining", py::arg("str"), py::arg("from") = 0, py::arg("case") = true) 2025-09-08T22:32:43,562 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,563 298 | .def("lastIndexOfAny", [](CTextU& s, const wchar_t* cList, bool bCase)->size_t { return s.lastIndexOfAny(cList, 0, bCase); }, "find the offset of the first instance of the characters in the list starting from right", py::arg("cList"), py::arg("case") = true) 2025-09-08T22:32:43,563 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,563 299 | .def("lines", [](CTextU& s, const wchar_t* sep)->vector { vector res; s.collectLines(res, false, sep); return res; }, "return list with all found lines", py::arg("sep") = CTextU::SeparatorsLine) 2025-09-08T22:32:43,563 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,563 300 | .def("linesCount", &CTextU::linesCount, "returns the number of the lines in the string", py::arg("sep") = CTextU::EOL) 2025-09-08T22:32:43,563 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,563 301 | .def("linesAppend", [](CTextU& s, const wchar_t* str, const wchar_t* sep)->size_t { return s.linesInsertAtEnd(str, 1, sep); }, "append text to each line", py::arg("str"), py::arg("sep") = CTextU::SeparatorsLine) 2025-09-08T22:32:43,563 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,563 302 | .def("linesInsertAtBegin", [](CTextU& s, const wchar_t* str, const wchar_t* sep)->size_t { return s.linesInsertAtBegin(str, 1, sep); }, "insert text at each line begin", py::arg("str"), py::arg("sep") = CTextU::SeparatorsLine) 2025-09-08T22:32:43,563 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,564 303 | .def("linesPaddRight", [](CTextU& s, const wchar_t* str, size_t len, const wchar_t* sep, const wchar_t* sepNew)->size_t { return s.linesPaddRight(*str, len, sep, sepNew); }, "append text to each line", py::arg("str"), py::arg("len"), py::arg("sep") = CTextU::SeparatorsLine, py::arg("sepNew") = CTextU::EOL) 2025-09-08T22:32:43,564 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,564 304 | .def("linesSort", &CTextU::linesSort, py::arg("sep") = CTextU::SeparatorsLine, py::arg("sepNew") = CTextU::EOL) 2025-09-08T22:32:43,564 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,564 305 | .def("linesRemoveEmpty", &CTextU::linesRemoveEmpty, py::arg("minLen") = 0, py::arg("sep") = CTextU::SeparatorsLine) 2025-09-08T22:32:43,564 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,564 306 | .def("linesTrim", &CTextU::linesTrim, py::arg("cList"), py::arg("sep") = CTextU::SeparatorsLine, py::arg("sepNew") = CTextU::EOL) 2025-09-08T22:32:43,564 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,564 307 | .def("limit", &CTextU::limit, "limit the the length, if our text length is smaller nothing is done") 2025-09-08T22:32:43,564 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,564 308 | .def("lower", &CTextU::toLower, "conversion to lowercase (in place)") 2025-09-08T22:32:43,565 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,565 309 | .def("makeUnique", (size_t(CTextU::*)()) &CTextU::makeUnique, "make sure that all characters occurs only once") 2025-09-08T22:32:43,565 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,565 310 | .def("mid", &CTextU::mid, "leaves the middle characters, count characters are cut from both ends, returns new string") 2025-09-08T22:32:43,565 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,565 311 | .def("nextLine", [](CTextU& s, int pos, CTextU& line, bool appendSeparators, const wchar_t* sep)->int { size_t _pos = pos; bool res = s.nextLine(_pos, line, appendSeparators, sep); return res ? (int)_pos : -1; }, py::arg("pos"), py::arg("line"), py::arg("appendSeparators") = false, py::arg("sep") = CTextU::SeparatorsLine) 2025-09-08T22:32:43,565 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,565 312 | .def("nextWord", [](CTextU& s, int pos, CTextU& line, const wchar_t* sep)->int { size_t _pos = pos; bool res = s.nextWord(_pos, line, sep); return res ? (int)_pos : -1; }, py::arg("pos"), py::arg("line"), py::arg("sep") = CTextU::SeparatorsWord) 2025-09-08T22:32:43,565 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,565 313 | .def("paddLeft", &CTextU::paddLeft, "fills from start with the given characters until given lenght") 2025-09-08T22:32:43,565 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,565 314 | .def("paddRight", &CTextU::paddRight, "fills from end with the given characters until given lenght") 2025-09-08T22:32:43,566 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,566 315 | .def("pathCombine", &CTextU::pathCombine, "combine paths, C:\\Temp\" + \"..\\Folder\\\" = \"C:\\Folder") 2025-09-08T22:32:43,566 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,566 316 | .def("push_back", (CTextU& (CTextU::*)(const wchar_t*)) &CTextU::push_back, "append string") 2025-09-08T22:32:43,566 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,566 317 | .def("push_front", (CTextU& (CTextU::*)(const wchar_t*)) &CTextU::push_front, "insert string at start") 2025-09-08T22:32:43,566 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,566 318 | .def("quote", &CTextU::quote) 2025-09-08T22:32:43,566 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,566 319 | .def("randomAlpha", &CTextU::randomAlpha, "generate text containing random alpha upper and lower characters ", py::arg("len") = 16) 2025-09-08T22:32:43,566 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,567 320 | .def("random", &CTextU::randomAlphaNumeric, "generate text containing random alphanumeric upper and lower characters ", py::arg("len") = 16) 2025-09-08T22:32:43,567 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,567 321 | .def("randomNumber", &CTextU::randomNumber, "generate text containing a random integer with the given length", py::arg("len") = 10) 2025-09-08T22:32:43,567 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,567 322 | .def("reduceChain", [](CTextU& s, const wchar_t* cList, const wchar_t* cNew)->CTextU { return s.reduceChain(cList, *cNew); }, "reduce blocks of the separators from the list to a single character", py::arg("cList") = CTextU::SeparatorsWord, py::arg("cNew") = CTextU::SPACE) 2025-09-08T22:32:43,567 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,567 323 | .def("regexLines", [](CTextU& s, const wchar_t* regex, const wchar_t* sep)->vector { vector res; s.regexCollectLines(res, regex, sep); return res; }, "collect all lines matching the given regex condition", py::arg("regex"), py::arg("sep") = CTextU::SeparatorsLine) 2025-09-08T22:32:43,567 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,567 324 | .def("regexWords", [](CTextU& s, const wchar_t* regex, const wchar_t* sep)->vector { vector res; s.regexCollectWords(res, regex, sep); return res; }, "collect all words matching the given regex condition", py::arg("regex"), py::arg("sep") = CTextU::SeparatorsWord) 2025-09-08T22:32:43,567 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,567 325 | .def("regexSearch", [](CTextU& s, const wchar_t* regex)->vector { vector res; s.regexSearch(res, regex); return res; }, "collect substrings using the provided Regex expression and regex_iterator", py::arg("regex")) 2025-09-08T22:32:43,568 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,568 326 | .def("regexReplace", (CTextU& (CTextU::*)(const wchar_t* regexp, const wchar_t* fmt)) &CTextU::regexReplace, "replace strings using the provided Regex expression") 2025-09-08T22:32:43,568 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,568 327 | .def("regexMatch", (bool (CTextU::*)(const wchar_t*) const) &CTextU::regexMatch) 2025-09-08T22:32:43,568 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,568 328 | .def("remove", (size_t(CTextU::*)(const wchar_t*, bool)) &CTextU::remove, "delete all occurences of the string s", py::arg("str"), py::arg("case") = true) 2025-09-08T22:32:43,568 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,568 329 | .def("removeAny", (size_t(CTextU::*)(const wchar_t*, bool)) &CTextU::removeAny, "delete all of provided in the list characters", py::arg("str"), py::arg("case") = true) 2025-09-08T22:32:43,568 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,568 330 | .def("removeAny", &CTextU::removeAny>, "remove any from the provided in the list strings", py::arg("list"), py::arg("case") = true, py::arg("longList") = true) 2025-09-08T22:32:43,568 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,569 331 | .def("removeExtension", &CTextU::removeExtension, "remove the extension from a file path") 2025-09-08T22:32:43,569 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,569 332 | .def("removeFileName", &CTextU::removeFileName, "if string contain file path, remove the file name", py::arg("keepSlash") = true) 2025-09-08T22:32:43,569 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,569 333 | .def("removeLast", &CTextU::removeLast, "removes the last character, return true if not empty and sucessful") 2025-09-08T22:32:43,569 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,569 334 | .def("removeWhileBegins", &CTextU::removeWhileBegins, "remove the characters from str while begins to the characters from our string", py::arg("str")) 2025-09-08T22:32:43,569 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,569 335 | .def("removeWhileEnds", &CTextU::removeWhileEnds, "remove the characters from str while ends to the characters from our string", py::arg("str")) 2025-09-08T22:32:43,569 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,569 336 | .def("replace", (size_t(CTextU::*)(const wchar_t* what, const wchar_t* with, bool bCase)) &CTextU::replace, "replace all occurrences of substring \"what\" with substring \"with\"", py::arg("what"), py::arg("with"), py::arg("case") = true) 2025-09-08T22:32:43,570 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,570 337 | .def("replace", [](CTextU& s, const wchar_t* str, size_t len, const wchar_t* c)->CTextU& { return s.replace(*str, len, *c); }, "replace range with single character", py::arg("str"), py::arg("len"), py::arg("c")) 2025-09-08T22:32:43,570 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,570 338 | .def("replace", [](CTextU& s, const vector& what, const wchar_t* c, bool bCase)->CTextU& { return s.replaceAny(what, *c, bCase, true); }, "replace all found strings in list 'what' with a single character ", py::arg("what"), py::arg("with"), py::arg("case") = true) 2025-09-08T22:32:43,570 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,570 339 | .def("replaceAny", [](CTextU& s, const vector& what, const vector& with, bool bCase)->CTextU& { return s.replaceAny(what, with, bCase, true); }, "replace found strings in list 'what' with corresponding strings from list 'with' ", py::arg("what"), py::arg("with"), py::arg("case") = true) 2025-09-08T22:32:43,570 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,570 340 | .def("replaceAny", [](CTextU& s, const vector& what, const wchar_t* with, bool bCase)->CTextU& { return s.replaceAny(what, with, bCase, true); }, "replace found strings in list 'what' with the string 'with' ", py::arg("what"), py::arg("with"), py::arg("case") = true) 2025-09-08T22:32:43,570 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,570 341 | .def("replaceExtension", &CTextU::replaceExtension, "change the file path extension") 2025-09-08T22:32:43,570 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,570 342 | .def("replaceFileName", &CTextU::replaceFileName, "change the file name") 2025-09-08T22:32:43,571 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,571 343 | .def("replaceLastFolder", &CTextU::replaceLastFolder, "replace last folder name") 2025-09-08T22:32:43,571 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,571 344 | .def("replaceFirst", &CTextU::replaceFirst, "replace first character") 2025-09-08T22:32:43,571 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,571 345 | .def("replaceLast", &CTextU::replaceFirst, "replace last character") 2025-09-08T22:32:43,571 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,571 346 | .def("readFile", &CTextU::readFile, "read a whole text file into our string", py::arg("path"), py::arg("asHex") = false) 2025-09-08T22:32:43,571 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,571 347 | .def("reverse", &CTextU::reverse) 2025-09-08T22:32:43,572 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,572 348 | .def("reverseFind", &CTextU::reverseFind, py::arg("s"), py::arg("case") = true) 2025-09-08T22:32:43,572 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,572 349 | .def("right", &CTextU::right, "return new string with count characters from the end of our string") 2025-09-08T22:32:43,572 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,572 350 | .def("rotateLeft", &CTextU::rotateLeft, "rotate tne string to the left") 2025-09-08T22:32:43,572 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,572 351 | .def("rotateRight", &CTextU::rotateRight, "rotate tne string to the right") 2025-09-08T22:32:43,572 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,572 352 | .def("sentences", [](CTextU& s, const wchar_t* sep, const wchar_t* sepWords)->vector { vector res; s.collectSentences(res, sep); return res; }, "return list with all found words", py::arg("sep") = CTextU::SeparatorsWord, py::arg("sepWords") = CTextU::SeparatorsWord) 2025-09-08T22:32:43,573 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,573 353 | .def("shuffle", &CTextU::shuffle) 2025-09-08T22:32:43,573 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,573 354 | .def("sort", &CTextU::sort) 2025-09-08T22:32:43,573 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,573 355 | .def("split", [](CTextU& s, const wchar_t* sep = CTextU::Separators)->vector { vector res; s.split(res, false, sep); return res; }, "fills the STL container with the collected substrings", py::arg("sep") = CTextU::Separators) 2025-09-08T22:32:43,573 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,573 356 | .def("str", (const wchar_t* (CTextU::*)(size_t pos) const) &CTextU::str, "return text buffer", py::arg("pos") = 0) 2025-09-08T22:32:43,573 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,573 357 | .def("toBinaryNumber", &CTextU::toBinaryNumber, "if the string contains a binary number, convert it ") 2025-09-08T22:32:43,574 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,574 358 | .def("toHexNumber", &CTextU::toHexNumber, "if the string contains a hex number, convert it , 1E --> 30") 2025-09-08T22:32:43,574 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,574 359 | .def("toDouble", &CTextU::toDouble) 2025-09-08T22:32:43,574 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,574 360 | .def("toInteger", &CTextU::toInteger) 2025-09-08T22:32:43,574 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,574 361 | .def("trim", &CTextU::trim, "trim string from both sides", py::arg("cList") = CTextU::Separators) 2025-09-08T22:32:43,574 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,574 362 | .def("trim", &CTextU::trim, "trim string from both sides", py::arg("cList") = CTextU::Separators) 2025-09-08T22:32:43,575 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,575 363 | .def("trimLeft", (CTextU& (CTextU::*)(const wchar_t*)) &CTextU::trimLeft, "trim string from left", py::arg("cList") = CTextU::Separators) 2025-09-08T22:32:43,575 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,575 364 | .def("trimRight", (CTextU& (CTextU::*)(const wchar_t*)) &CTextU::trimRight, "trim string from right", py::arg("cList") = CTextU::Separators) 2025-09-08T22:32:43,575 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,575 365 | .def("upper", &CTextU::toUpper, "conversion to uppercase (in place)") 2025-09-08T22:32:43,575 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,575 366 | .def("words", [](CTextU& s, const wchar_t* sep)->vector { vector res; s.collectWords(res, sep); return res; }, "return list with all found words", py::arg("sep") = CTextU::SeparatorsWord) 2025-09-08T22:32:43,575 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,575 367 | .def("wordsCapitalize", &CTextU::wordsCapitalize, "make all words in a text start with upper character", py::arg("sep") = CTextU::SeparatorsWord) 2025-09-08T22:32:43,576 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,576 368 | .def("wordsCount", &CTextU::wordsCount, "return number of the found words divided by seps", py::arg("sep") = CTextU::SeparatorsWord) 2025-09-08T22:32:43,576 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,576 369 | .def("wordsEnclose", (CTextU& (CTextU::*)(const wchar_t* sBegin, const wchar_t* sEnd, const wchar_t* sep)) &CTextU::wordsEnclose, "enclose all words", py::arg("sBegin"), py::arg("sEnd"), py::arg("sep") = CTextU::SeparatorsWord) 2025-09-08T22:32:43,576 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,576 370 | .def("wordsSort", &CTextU::wordsSort, "sort the text words in ascending order", py::arg("sep") = CTextU::SeparatorsWord, py::arg("sepNew") = CTextU::SPACE) 2025-09-08T22:32:43,576 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,576 371 | .def("wordsReplace", [](CTextU& s, const vector& what, const wchar_t* with, bool bCase, const wchar_t* sep)->CTextU& { return s.wordsReplace(what, with, bCase, sep); }, "replace found strings from the list with the string 'with' ", py::arg("what"), py::arg("with"), py::arg("case") = true, py::arg("sep") = CTextU::SeparatorsWord) 2025-09-08T22:32:43,576 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,576 372 | .def("wordsReplace", [](CTextU& s, const vector& what, const vector& with, bool bCase, const wchar_t* sep)->CTextU& { return s.wordsReplace(what, with, bCase, sep); }, "replace found strings from the list with the strings from another list ", py::arg("what"), py::arg("with"), py::arg("case") = true, py::arg("sep") = CTextU::SeparatorsWord) 2025-09-08T22:32:43,577 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,577 373 | .def("wordsReplaceWithChar", [](CTextU& s, const vector& what, const wchar_t* c, bool bCase, const wchar_t* sep)->CTextU& { return s.wordsReplaceWithChar(what, *c, bCase, sep); }, "replace all found words from the list with a single character ", py::arg("what"), py::arg("with"), py::arg("case") = true, py::arg("sep") = CTextU::SeparatorsWord) 2025-09-08T22:32:43,577 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,577 374 | .def("wordsReverse", &CTextU::wordsReverse, "reverse words inplace", py::arg("sep") = CTextU::SeparatorsWord) 2025-09-08T22:32:43,577 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,577 375 | .def("writeFile", &CTextU::writeFile, "write string to a text file with the given encoding", py::arg("path"), py::arg("encoding") = 1, py::arg("asHex") = false) 2025-09-08T22:32:43,577 | ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,577 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.inl:6011:19: error: no matching function for call to ‘std::basic_ofstream::basic_ofstream(const wchar_t*&, const std::ios_base::openmode&)’ 2025-09-08T22:32:43,578 6011 | std::ofstream ofs(filePath, std::ios::binary); 2025-09-08T22:32:43,578 | ^~~ 2025-09-08T22:32:43,578 /usr/include/c++/14/fstream:899:7: note: candidate: ‘std::basic_ofstream<_CharT, _Traits>::basic_ofstream(std::basic_ofstream<_CharT, _Traits>&&) [with _CharT = char; _Traits = std::char_traits]’ 2025-09-08T22:32:43,578 899 | basic_ofstream(basic_ofstream&& __rhs) 2025-09-08T22:32:43,578 | ^~~~~~~~~~~~~~ 2025-09-08T22:32:43,578 /usr/include/c++/14/fstream:899:7: note: candidate expects 1 argument, 2 provided 2025-09-08T22:32:43,578 /usr/include/c++/14/fstream:874:7: note: candidate: ‘std::basic_ofstream<_CharT, _Traits>::basic_ofstream(const std::string&, std::ios_base::openmode) [with _CharT = char; _Traits = std::char_traits; std::string = std::__cxx11::basic_string; std::ios_base::openmode = std::ios_base::openmode]’ 2025-09-08T22:32:43,578 874 | basic_ofstream(const std::string& __s, 2025-09-08T22:32:43,578 | ^~~~~~~~~~~~~~ 2025-09-08T22:32:43,579 /usr/include/c++/14/fstream:874:41: note: no known conversion for argument 1 from ‘const wchar_t*’ to ‘const std::string&’ {aka ‘const std::__cxx11::basic_string&’} 2025-09-08T22:32:43,579 874 | basic_ofstream(const std::string& __s, 2025-09-08T22:32:43,579 | ~~~~~~~~~~~~~~~~~~~^~~ 2025-09-08T22:32:43,579 /usr/include/c++/14/fstream:839:7: note: candidate: ‘std::basic_ofstream<_CharT, _Traits>::basic_ofstream(const char*, std::ios_base::openmode) [with _CharT = char; _Traits = std::char_traits; std::ios_base::openmode = std::ios_base::openmode]’ 2025-09-08T22:32:43,579 839 | basic_ofstream(const char* __s, 2025-09-08T22:32:43,579 | ^~~~~~~~~~~~~~ 2025-09-08T22:32:43,579 /usr/include/c++/14/fstream:839:34: note: no known conversion for argument 1 from ‘const wchar_t*’ to ‘const char*’ 2025-09-08T22:32:43,579 839 | basic_ofstream(const char* __s, 2025-09-08T22:32:43,579 | ~~~~~~~~~~~~^~~ 2025-09-08T22:32:43,580 /usr/include/c++/14/fstream:828:7: note: candidate: ‘std::basic_ofstream<_CharT, _Traits>::basic_ofstream() [with _CharT = char; _Traits = std::char_traits]’ 2025-09-08T22:32:43,580 828 | basic_ofstream(): __ostream_type(), _M_filebuf() 2025-09-08T22:32:43,580 | ^~~~~~~~~~~~~~ 2025-09-08T22:32:43,580 /usr/include/c++/14/fstream:828:7: note: candidate expects 0 arguments, 2 provided 2025-09-08T22:32:43,580 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextU.h: In instantiation of ‘static bool CTextT::WriteFile(const CharT*, CTextT&, EncodingType) [with CharT = wchar_t; X = void; T = wchar_t]’: 2025-09-08T22:32:43,580 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextT.inl:5411:75: required from ‘bool CTextT::writeFile(const CharT*, int, bool) [with CharT = wchar_t; X = void; T = wchar_t]’ 2025-09-08T22:32:43,580 5411 | return asHex ? WriteFileAsHex(filePath, *this) : WriteFile (filePath, *this, (EncodingType)encoding); 2025-09-08T22:32:43,580 | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,580 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/module.cpp:375:13: required from here 2025-09-08T22:32:43,580 202 | py::class_ (m, "CTextU") 2025-09-08T22:32:43,581 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,581 203 | // constructors 2025-09-08T22:32:43,581 | ~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,581 204 | .def(py::init<>()) 2025-09-08T22:32:43,581 | ~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,581 205 | .def(py::init()) 2025-09-08T22:32:43,581 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,581 206 | .def(py::init()) 2025-09-08T22:32:43,581 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,581 207 | // operators 2025-09-08T22:32:43,582 | ~~~~~~~~~~~~ 2025-09-08T22:32:43,582 208 | .def(py::self + py::self) 2025-09-08T22:32:43,582 | ~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,582 209 | .def(py::self == py::self) 2025-09-08T22:32:43,582 | ~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,582 210 | .def(py::self != py::self) 2025-09-08T22:32:43,582 | ~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,582 211 | .def(py::self < py::self) 2025-09-08T22:32:43,583 | ~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,583 212 | .def(py::self > py::self) 2025-09-08T22:32:43,583 | ~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,583 213 | .def(py::self + std::wstring()) 2025-09-08T22:32:43,583 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,583 214 | .def(std::wstring() + py::self) 2025-09-08T22:32:43,583 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,583 215 | .def(py::self += py::self) 2025-09-08T22:32:43,583 | ~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,584 216 | .def(py::self += std::wstring()) 2025-09-08T22:32:43,584 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,584 217 | .def("__add__", [](const CTextU& c2, const CTextU& c1) { return c2 + c1; }) 2025-09-08T22:32:43,584 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,584 218 | .def("__add__", [](const CTextU& c1, const wchar_t* c2) { return c2 + c1; }) 2025-09-08T22:32:43,584 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,584 219 | .def("__repr__", [](const CTextU &a) { return a.str() == nullptr? L"": a.str(); }) 2025-09-08T22:32:43,584 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,584 220 | // functions 2025-09-08T22:32:43,584 | ~~~~~~~~~~~~ 2025-09-08T22:32:43,585 221 | .def("addToFileName", &CTextU::addToFileName, "modifies a filename, adds the provided string to file name but keeps extension and path") 2025-09-08T22:32:43,585 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,585 222 | .def("append", [](CTextU& s, const wchar_t* str)->CTextU& { return s.append(str); }, "append string", py::arg("str")) 2025-09-08T22:32:43,585 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,585 223 | .def("append", [](CTextU& s, const wchar_t* str, size_t len)->CTextU& { return s.append(*str, len); }, "append characters", py::arg("c"), py::arg("len") = 1) 2025-09-08T22:32:43,585 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,585 224 | .def("append", [](CTextU& s, const vector& list)->CTextU& { return s.append(list); }, "append single character or string list", py::arg("list")) 2025-09-08T22:32:43,585 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,585 225 | .def("appendRange", [](CTextU& s, const wchar_t* begin, const wchar_t* end)->CTextU& { return s.appendRange(*begin, *end); }, "append all characters in the range ", py::arg("begin"), py::arg("end")) 2025-09-08T22:32:43,585 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,585 226 | .def("between", [](CTextU& s, const wchar_t* left, const wchar_t* right, bool include)->bool { return s.between(left, right, include); }, "keeps the part of the string between the first and last sub-strings sLeft and sRight (by default separattors are not included", py::arg("left"), py::arg("right"), py::arg("include") = false) 2025-09-08T22:32:43,586 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,586 227 | .def("capacity", &CTextU::capacity) 2025-09-08T22:32:43,586 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,586 228 | .def("clear", &CTextU::clear, py::arg("bRelease") = false) 2025-09-08T22:32:43,586 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,586 229 | .def("collectBlocks", [](CTextU& s, const wchar_t* sepBegin, const wchar_t* sepEnd, bool all)->vector { vector res; s.collectBlocks(res, sepBegin, sepEnd, all); return res; }, "collect blocks", py::arg("sepBegin"), py::arg("sepEnd"), py::arg("all") = true) 2025-09-08T22:32:43,586 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,586 230 | .def("collectLines", [](CTextU& s, const wchar_t* sep)->vector { vector res; s.collectLines(res, false, sep); return res; }, "fills a list with the collected lines", py::arg("sep") = CTextU::SeparatorsLine) 2025-09-08T22:32:43,586 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,587 231 | .def("checkBalance", &CTextU::checkBalance, "checks if the blocks defined with the given separators are balanced") 2025-09-08T22:32:43,587 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,587 232 | .def("convertToHex", &CTextU::convertToHex, "convert string to hex values", py::arg("sep") = CTextU::SPACE) 2025-09-08T22:32:43,587 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,587 233 | .def("contain", (bool (CTextU::*)(const wchar_t* s, bool bCase) const) &CTextU::contain, "returns true if our string contains another string ", py::arg("str"), py::arg("case") = true) 2025-09-08T22:32:43,587 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,587 234 | .def("contain", [](CTextU& s, const vector& list, bool bCase)->bool { return s.containAny(list, bCase, true); }, "returns true if contains any of the provided strings", py::arg("list"), py::arg("case") = true) 2025-09-08T22:32:43,587 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,587 235 | .def("containAny", (bool (CTextU::*)(const wchar_t* s, bool bCase) const) &CTextU::containAny, "returns true if our string contains any of the characters in the list", py::arg("str"), py::arg("case") = true) 2025-09-08T22:32:43,587 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,588 236 | .def("containOnly", (bool (CTextU::*)(const wchar_t* s, bool bCase) const) &CTextU::containOnly, "returns true if our string contains only characters in the list", py::arg("str"), py::arg("case") = true) 2025-09-08T22:32:43,588 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,588 237 | .def("count", [](CTextU& s, const wchar_t* str, bool bCase)->size_t { return s.count(str, bCase); }, "returns the count of occurences of the given substring", py::arg("str"), py::arg("case") = true) 2025-09-08T22:32:43,588 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,588 238 | .def("countWordFrequencies", [](CTextU& s, bool bCase, const wchar_t* sep)->std::vector< std::pair > { std::vector< std::pair > res; s.countWordFrequencies(res, bCase, sep); return res; }, "fill the container with the words frequency counts", py::arg("case") = true, py::arg("sep") = CTextU::SeparatorsWord) 2025-09-08T22:32:43,588 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,588 239 | .def("cutAfterFirst", [](CTextU& s, const wchar_t* str, bool include, bool bCase)->CTextU& { return s.cutAfterFirst(*str, include, bCase); }, "leaves everyting left from c, c is not included, everything after is removed", py::arg("str"), py::arg("include") = false, py::arg("case") = true) 2025-09-08T22:32:43,588 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,588 240 | .def("cutAfterLast", [](CTextU& s, const wchar_t* str, bool include, bool bCase)->CTextU& { return s.cutAfterLast(*str, include, bCase); }, "leaves everyting left from the last character, c is not included", py::arg("str"), py::arg("include") = false, py::arg("case") = true) 2025-09-08T22:32:43,588 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,589 241 | .def("cutBeforeFirst", [](CTextU& s, const wchar_t* str, bool include, bool bCase)->CTextU& { return s.cutBeforeFirst(*str, include, bCase); }, "cut everything before the first occurence of string str", py::arg("str"), py::arg("include") = false, py::arg("case") = true) 2025-09-08T22:32:43,589 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,589 242 | .def("cutAfterFirstOfAny", [](CTextU& s, const wchar_t* str, bool include, bool bCase)->CTextU& { return s.cutAfterFirstOfAny(str, include, bCase); }, "cut after the first occurence of any character from the list", py::arg("str"), py::arg("include") = false, py::arg("case") = true) 2025-09-08T22:32:43,589 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,589 243 | .def("cutBeforeFirstOfAny", [](CTextU& s, const wchar_t* str, bool include, bool bCase)->CTextU& { return s.cutBeforeFirstOfAny(str, include, bCase); }, "cut everything before the first occurence of any of the characters from the list or leave intact, include if set, character is included", py::arg("str"), py::arg("include") = false, py::arg("case") = true) 2025-09-08T22:32:43,589 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,589 244 | .def("cutEnds", (CTextU& (CTextU::*)(size_t)) &CTextU::cutEnds, "remove count of characters from left and right", py::arg("count")) 2025-09-08T22:32:43,589 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,589 245 | .def("cutLeft", &CTextU::cutLeft, "removes count characters from left", py::arg("count")) 2025-09-08T22:32:43,590 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,590 246 | .def("cutRight", &CTextU::cutRight, "removes count characters from left", py::arg("count")) 2025-09-08T22:32:43,590 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,590 247 | .def("enclose", (CTextU& (CTextU::*)(const wchar_t* begin, const wchar_t* end, bool checkEnds)) &CTextU::enclose, "enclose with the provided text separators (if not already ends and begins with them)", py::arg("begin"), py::arg("end"), py::arg("checkEnds") = true) 2025-09-08T22:32:43,590 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,590 248 | .def("endsWith", [](CTextU& s, const wchar_t* str, bool bCase)->bool { return s.endsWith(str, 0, bCase); }, "return true if ends with the provided string", py::arg("str"), py::arg("case") = true) 2025-09-08T22:32:43,590 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,590 249 | .def("endsWithAny", [](CTextU& s, const vector& list, bool bCase)->bool { return s.endsWithAny(list, 0, bCase, true); }, "returns true if ends with any of the strings from the list", py::arg("list"), py::arg("case") = true) 2025-09-08T22:32:43,590 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,590 250 | .def("equal", [](CTextU& s, const wchar_t* str, size_t len)->CTextU& { return s.equal(*str, len); }, "init witb len number of characters", py::arg("c"), py::arg("len")) 2025-09-08T22:32:43,590 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,591 251 | .def("erase", &CTextU::erase, "delete count characters starting at zero-based index", py::arg("from"), py::arg("count") = 1) 2025-09-08T22:32:43,591 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,591 252 | .def("find", (const wchar_t* (CTextU::*)(const wchar_t* s, bool bCase) const) &CTextU::find, "return a pointer to the first occurence of the string, or 0 pointer if not found", py::arg("str"), py::arg("case") = true) 2025-09-08T22:32:43,591 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,591 253 | .def("first", &CTextU::first) 2025-09-08T22:32:43,591 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,591 254 | .def("fromArray", [](CTextU& s, const vector& list, const wchar_t* sep)->void { s.fromArray(list, false, 2, sep); }, "compose a string from array using the given separator", py::arg("list"), py::arg("sep") = CTextU::SPACE) 2025-09-08T22:32:43,591 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,591 255 | .def("fromArray", [](CTextU& s, const vector& list, const wchar_t* sep)->void { s.fromArray(list, false, 2, sep); }, "compose a string from array using the given separator", py::arg("list"), py::arg("sep") = CTextU::SPACE) 2025-09-08T22:32:43,591 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,592 256 | .def("fromArray", [](CTextU& s, const vector& list, const wchar_t* sep)->void { s.fromArray(list, sep); }, "compose a string from array using the given separator", py::arg("list"), py::arg("sep") = CTextU::SPACE) 2025-09-08T22:32:43,592 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,592 257 | .def("fromArrayAsHex", [](CTextU& s, const vector& list, int wHex, const wchar_t* sep)->void { s.fromArray(list, true, wHex, sep); }, "compose a string from integerrs array in hex format using the given separator", py::arg("list"), py::arg("wHex") = 2, py::arg("sep") = CTextU::SPACE) 2025-09-08T22:32:43,592 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,592 258 | .def("fromBinary", &CTextU::fromBinary, "create a binary string from the number") 2025-09-08T22:32:43,592 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,592 259 | .def("fromBinary", &CTextU::fromBinary, "create a binary string from the number") 2025-09-08T22:32:43,592 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,592 260 | .def("fromBinary", &CTextU::fromBinary, "create a binary string from the number") 2025-09-08T22:32:43,593 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,593 261 | .def("fromHex", &CTextU::fromHex, "create a hexadecimal string from the number", py::arg("i"), py::arg("hasBase") = false, py::arg("upper") = false, py::arg("append") = false) 2025-09-08T22:32:43,593 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,593 262 | .def("fromHex", &CTextU::fromHex, "create a hexadecimal string from the number", py::arg("i"), py::arg("hasBase") = false, py::arg("upper") = false, py::arg("append") = false) 2025-09-08T22:32:43,593 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,593 263 | .def("fromHex", &CTextU::fromHex, "create a hexadecimal string from the number", py::arg("i"), py::arg("hasBase") = false, py::arg("upper") = false, py::arg("append") = false) 2025-09-08T22:32:43,593 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,593 264 | .def("fromInteger", &CTextU::fromInteger, "convert the decimal nteger to string", py::arg("i"), py::arg("append") = false, py::arg("padd") = 0, py::arg("paddValue") = '0') 2025-09-08T22:32:43,593 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,593 265 | .def("fromInteger", &CTextU::fromInteger, "convert the decimal nteger to string", py::arg("i"), py::arg("append") = false, py::arg("padd") = 0, py::arg("paddValue") = '0') 2025-09-08T22:32:43,593 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,594 266 | .def("fromInteger", &CTextU::fromInteger, "convert the decimal integer to string", py::arg("i"), py::arg("append") = false, py::arg("padd") = 0, py::arg("paddValue") = '0') 2025-09-08T22:32:43,594 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,594 267 | .def("fromDouble", &CTextU::fromDouble, "convert double to string", py::arg("d"), py::arg("precision") = 6, py::arg("fixed") = true, py::arg("nozeros") = false, py::arg("append") = false) 2025-09-08T22:32:43,594 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,594 268 | .def("fromMatrix", [](CTextU& s, py::array_t m, const wchar_t* sep, const wchar_t* sepLine)->void { py::buffer_info buf = m.request(); size_t h = buf.shape[0]; size_t w = buf.shape[1]; int* ptr = (int*)buf.ptr; s.fromMatrix(ptr, w, h, false, 2, sep, sepLine); }, "//compose string from a 2D numerical matrix", py::arg("list"), py::arg("sep") = CTextU::SPACE, py::arg("sepLine") = CTextU::EOL) 2025-09-08T22:32:43,594 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,594 269 | .def("fromMatrix", [](CTextU& s, py::array_t m, const wchar_t* sep, const wchar_t* sepLine)->void { py::buffer_info buf = m.request(); size_t h = buf.shape[0]; size_t w = buf.shape[1]; double* ptr = (double*)buf.ptr; s.fromMatrix(ptr, w, h, false, 2, sep, sepLine); }, "//compose string from a 2D numerical matrix", py::arg("list"), py::arg("sep") = CTextU::SPACE, py::arg("sepLine") = CTextU::EOL) 2025-09-08T22:32:43,594 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,594 270 | .def("fromMatrixAsHex", [](CTextU& s, py::array_t m, int wHex, const wchar_t* sep, const wchar_t* sepLine)->void { py::buffer_info buf = m.request(); size_t h = buf.shape[0]; size_t w = buf.shape[1]; int* ptr = (int*)buf.ptr; s.fromMatrix(ptr, w, h, true, wHex, sep, sepLine); }, "//compose string from a 2D numerical matrix", py::arg("list"), py::arg("wHex") = 2, py::arg("sep") = CTextU::SPACE, py::arg("sepLine") = CTextU::EOL) 2025-09-08T22:32:43,595 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,595 271 | .def("getDir", &CTextU::getDir, "get a folder from a full module path") 2025-09-08T22:32:43,595 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,595 272 | .def("getExtension", &CTextU::getExtension, "if our string contains file path, return pointer to the extension") 2025-09-08T22:32:43,595 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,595 273 | .def("getFileName", &CTextU::getFileName, "if our string contains file path, return pointer to the file name") 2025-09-08T22:32:43,595 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,595 274 | .def("hash", &CTextU::hash) 2025-09-08T22:32:43,595 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,595 275 | .def("indexOf", [](CTextU& s, const wchar_t* str, size_t from, bool bCase)->size_t { return s.lastIndexOf(str, from, bCase); }, "find the offset of first instance of the string in the list, return index or -1 if not found", py::arg("str"), py::arg("from") = 0, py::arg("case") = true) 2025-09-08T22:32:43,596 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,596 276 | .def("indexOfAny", [](CTextU& s, const wchar_t* cList, bool bCase)->size_t { return s.indexOfAny(cList, 0, bCase); }, "find the offset of the first instance of the characters in the list", py::arg("cList"), py::arg("case") = true) 2025-09-08T22:32:43,596 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,596 277 | .def("indexOfAny", [](CTextU& s, const vector& list, bool bCase)->size_t { return s.indexOfAny(list, 0, bCase, true); }, "find the offset of the first instance of the strings in the list", py::arg("list"), py::arg("case") = true) 2025-09-08T22:32:43,596 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,596 278 | .def("insert", [](CTextU& s, size_t from, const wchar_t* c, size_t count)->CTextU& { return s.insert(from, *c, count); }, "insert character at zero-based index, if index is past end of string", py::arg("from"), py::arg("c"), py::arg("count")) 2025-09-08T22:32:43,596 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,596 279 | .def("insert", [](CTextU& s, size_t from, const wchar_t* str)->CTextU& { return s.insert(from, str); }, "insert substring at zero-based index; concatenates, if index is past end of string", py::arg("from"), py::arg("str")) 2025-09-08T22:32:43,596 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,596 280 | .def("insertAtBegin", &CTextU::insertAtBegin, py::arg("str"), py::arg("skip") = 1, py::arg("sep") = CTextU::Separators) 2025-09-08T22:32:43,596 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,597 281 | .def("insertAtEnd", &CTextU::insertAtEnd, py::arg("str"), py::arg("skip") = 1, py::arg("sep") = CTextU::Separators) 2025-09-08T22:32:43,597 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,597 282 | .def("isAlpha", &CTextU::isAlpha, "return true if contains only alphabeta characters") 2025-09-08T22:32:43,597 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,597 283 | .def("isBinary", &CTextU::isBinary, "return true if contains only 0s and 1s") 2025-09-08T22:32:43,597 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,597 284 | .def("isEmpty", &CTextU::isEmpty, "return true if empty") 2025-09-08T22:32:43,597 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,597 285 | .def("isHexNumber", &CTextU::isHexNumber, "return true if contains only hexadecimal digits") 2025-09-08T22:32:43,597 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,598 286 | .def("isLower", &CTextU::isLower, py::arg("strict") = false) 2025-09-08T22:32:43,598 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,598 287 | .def("isNumber", &CTextU::isNumber, "return true if contains only decimal digits", py::arg("allowSign") = true) 2025-09-08T22:32:43,598 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,598 288 | .def("isPalindrome", &CTextU::isPalindrome) 2025-09-08T22:32:43,598 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,598 289 | .def("isUpper", &CTextU::isUpper, py::arg("strict") = false) 2025-09-08T22:32:43,598 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,598 290 | .def("keep", &CTextU::keep, "keeps count characters starting from given position") 2025-09-08T22:32:43,598 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,599 291 | .def("keepEnds", &CTextU::keepEnds, "keeps the characters from both ends, returns number of deleted characters") 2025-09-08T22:32:43,599 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,599 292 | .def("keepLeft", &CTextU::keepLeft, "keeps count characters from left and removes the rest, returns number of deleted characters") 2025-09-08T22:32:43,599 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,599 293 | .def("keepRight", &CTextU::keepRight, "keeps count characters from right and removes the rest, returns number of deleted characters") 2025-09-08T22:32:43,599 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,599 294 | .def("left", &CTextU::left, "return new string containing first count characters") 2025-09-08T22:32:43,599 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,599 295 | .def("length", &CTextU::length, "returns the number of characters in the string") 2025-09-08T22:32:43,599 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,599 296 | .def("last", &CTextU::last) 2025-09-08T22:32:43,600 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,600 297 | .def("lastIndexOf", [](CTextU& s, const wchar_t* str, size_t from, bool bCase)->size_t { return s.lastIndexOf(str, from, bCase); }, "find the first character position starting at right, where from is the offset from the end and the returned idx is from the beggining", py::arg("str"), py::arg("from") = 0, py::arg("case") = true) 2025-09-08T22:32:43,600 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,600 298 | .def("lastIndexOfAny", [](CTextU& s, const wchar_t* cList, bool bCase)->size_t { return s.lastIndexOfAny(cList, 0, bCase); }, "find the offset of the first instance of the characters in the list starting from right", py::arg("cList"), py::arg("case") = true) 2025-09-08T22:32:43,600 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,600 299 | .def("lines", [](CTextU& s, const wchar_t* sep)->vector { vector res; s.collectLines(res, false, sep); return res; }, "return list with all found lines", py::arg("sep") = CTextU::SeparatorsLine) 2025-09-08T22:32:43,600 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,600 300 | .def("linesCount", &CTextU::linesCount, "returns the number of the lines in the string", py::arg("sep") = CTextU::EOL) 2025-09-08T22:32:43,600 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,600 301 | .def("linesAppend", [](CTextU& s, const wchar_t* str, const wchar_t* sep)->size_t { return s.linesInsertAtEnd(str, 1, sep); }, "append text to each line", py::arg("str"), py::arg("sep") = CTextU::SeparatorsLine) 2025-09-08T22:32:43,601 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,601 302 | .def("linesInsertAtBegin", [](CTextU& s, const wchar_t* str, const wchar_t* sep)->size_t { return s.linesInsertAtBegin(str, 1, sep); }, "insert text at each line begin", py::arg("str"), py::arg("sep") = CTextU::SeparatorsLine) 2025-09-08T22:32:43,601 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,601 303 | .def("linesPaddRight", [](CTextU& s, const wchar_t* str, size_t len, const wchar_t* sep, const wchar_t* sepNew)->size_t { return s.linesPaddRight(*str, len, sep, sepNew); }, "append text to each line", py::arg("str"), py::arg("len"), py::arg("sep") = CTextU::SeparatorsLine, py::arg("sepNew") = CTextU::EOL) 2025-09-08T22:32:43,601 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,601 304 | .def("linesSort", &CTextU::linesSort, py::arg("sep") = CTextU::SeparatorsLine, py::arg("sepNew") = CTextU::EOL) 2025-09-08T22:32:43,601 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,601 305 | .def("linesRemoveEmpty", &CTextU::linesRemoveEmpty, py::arg("minLen") = 0, py::arg("sep") = CTextU::SeparatorsLine) 2025-09-08T22:32:43,601 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,601 306 | .def("linesTrim", &CTextU::linesTrim, py::arg("cList"), py::arg("sep") = CTextU::SeparatorsLine, py::arg("sepNew") = CTextU::EOL) 2025-09-08T22:32:43,601 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,602 307 | .def("limit", &CTextU::limit, "limit the the length, if our text length is smaller nothing is done") 2025-09-08T22:32:43,602 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,602 308 | .def("lower", &CTextU::toLower, "conversion to lowercase (in place)") 2025-09-08T22:32:43,602 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,602 309 | .def("makeUnique", (size_t(CTextU::*)()) &CTextU::makeUnique, "make sure that all characters occurs only once") 2025-09-08T22:32:43,602 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,602 310 | .def("mid", &CTextU::mid, "leaves the middle characters, count characters are cut from both ends, returns new string") 2025-09-08T22:32:43,602 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,602 311 | .def("nextLine", [](CTextU& s, int pos, CTextU& line, bool appendSeparators, const wchar_t* sep)->int { size_t _pos = pos; bool res = s.nextLine(_pos, line, appendSeparators, sep); return res ? (int)_pos : -1; }, py::arg("pos"), py::arg("line"), py::arg("appendSeparators") = false, py::arg("sep") = CTextU::SeparatorsLine) 2025-09-08T22:32:43,603 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,603 312 | .def("nextWord", [](CTextU& s, int pos, CTextU& line, const wchar_t* sep)->int { size_t _pos = pos; bool res = s.nextWord(_pos, line, sep); return res ? (int)_pos : -1; }, py::arg("pos"), py::arg("line"), py::arg("sep") = CTextU::SeparatorsWord) 2025-09-08T22:32:43,603 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,603 313 | .def("paddLeft", &CTextU::paddLeft, "fills from start with the given characters until given lenght") 2025-09-08T22:32:43,603 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,603 314 | .def("paddRight", &CTextU::paddRight, "fills from end with the given characters until given lenght") 2025-09-08T22:32:43,603 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,603 315 | .def("pathCombine", &CTextU::pathCombine, "combine paths, C:\\Temp\" + \"..\\Folder\\\" = \"C:\\Folder") 2025-09-08T22:32:43,603 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,604 316 | .def("push_back", (CTextU& (CTextU::*)(const wchar_t*)) &CTextU::push_back, "append string") 2025-09-08T22:32:43,604 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,604 317 | .def("push_front", (CTextU& (CTextU::*)(const wchar_t*)) &CTextU::push_front, "insert string at start") 2025-09-08T22:32:43,604 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,604 318 | .def("quote", &CTextU::quote) 2025-09-08T22:32:43,604 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,604 319 | .def("randomAlpha", &CTextU::randomAlpha, "generate text containing random alpha upper and lower characters ", py::arg("len") = 16) 2025-09-08T22:32:43,604 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,604 320 | .def("random", &CTextU::randomAlphaNumeric, "generate text containing random alphanumeric upper and lower characters ", py::arg("len") = 16) 2025-09-08T22:32:43,604 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,604 321 | .def("randomNumber", &CTextU::randomNumber, "generate text containing a random integer with the given length", py::arg("len") = 10) 2025-09-08T22:32:43,605 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,605 322 | .def("reduceChain", [](CTextU& s, const wchar_t* cList, const wchar_t* cNew)->CTextU { return s.reduceChain(cList, *cNew); }, "reduce blocks of the separators from the list to a single character", py::arg("cList") = CTextU::SeparatorsWord, py::arg("cNew") = CTextU::SPACE) 2025-09-08T22:32:43,605 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,605 323 | .def("regexLines", [](CTextU& s, const wchar_t* regex, const wchar_t* sep)->vector { vector res; s.regexCollectLines(res, regex, sep); return res; }, "collect all lines matching the given regex condition", py::arg("regex"), py::arg("sep") = CTextU::SeparatorsLine) 2025-09-08T22:32:43,605 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,605 324 | .def("regexWords", [](CTextU& s, const wchar_t* regex, const wchar_t* sep)->vector { vector res; s.regexCollectWords(res, regex, sep); return res; }, "collect all words matching the given regex condition", py::arg("regex"), py::arg("sep") = CTextU::SeparatorsWord) 2025-09-08T22:32:43,605 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,605 325 | .def("regexSearch", [](CTextU& s, const wchar_t* regex)->vector { vector res; s.regexSearch(res, regex); return res; }, "collect substrings using the provided Regex expression and regex_iterator", py::arg("regex")) 2025-09-08T22:32:43,605 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,605 326 | .def("regexReplace", (CTextU& (CTextU::*)(const wchar_t* regexp, const wchar_t* fmt)) &CTextU::regexReplace, "replace strings using the provided Regex expression") 2025-09-08T22:32:43,606 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,606 327 | .def("regexMatch", (bool (CTextU::*)(const wchar_t*) const) &CTextU::regexMatch) 2025-09-08T22:32:43,606 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,606 328 | .def("remove", (size_t(CTextU::*)(const wchar_t*, bool)) &CTextU::remove, "delete all occurences of the string s", py::arg("str"), py::arg("case") = true) 2025-09-08T22:32:43,606 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,606 329 | .def("removeAny", (size_t(CTextU::*)(const wchar_t*, bool)) &CTextU::removeAny, "delete all of provided in the list characters", py::arg("str"), py::arg("case") = true) 2025-09-08T22:32:43,606 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,606 330 | .def("removeAny", &CTextU::removeAny>, "remove any from the provided in the list strings", py::arg("list"), py::arg("case") = true, py::arg("longList") = true) 2025-09-08T22:32:43,606 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,606 331 | .def("removeExtension", &CTextU::removeExtension, "remove the extension from a file path") 2025-09-08T22:32:43,606 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,607 332 | .def("removeFileName", &CTextU::removeFileName, "if string contain file path, remove the file name", py::arg("keepSlash") = true) 2025-09-08T22:32:43,607 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,607 333 | .def("removeLast", &CTextU::removeLast, "removes the last character, return true if not empty and sucessful") 2025-09-08T22:32:43,607 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,607 334 | .def("removeWhileBegins", &CTextU::removeWhileBegins, "remove the characters from str while begins to the characters from our string", py::arg("str")) 2025-09-08T22:32:43,607 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,607 335 | .def("removeWhileEnds", &CTextU::removeWhileEnds, "remove the characters from str while ends to the characters from our string", py::arg("str")) 2025-09-08T22:32:43,607 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,607 336 | .def("replace", (size_t(CTextU::*)(const wchar_t* what, const wchar_t* with, bool bCase)) &CTextU::replace, "replace all occurrences of substring \"what\" with substring \"with\"", py::arg("what"), py::arg("with"), py::arg("case") = true) 2025-09-08T22:32:43,608 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,608 337 | .def("replace", [](CTextU& s, const wchar_t* str, size_t len, const wchar_t* c)->CTextU& { return s.replace(*str, len, *c); }, "replace range with single character", py::arg("str"), py::arg("len"), py::arg("c")) 2025-09-08T22:32:43,608 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,608 338 | .def("replace", [](CTextU& s, const vector& what, const wchar_t* c, bool bCase)->CTextU& { return s.replaceAny(what, *c, bCase, true); }, "replace all found strings in list 'what' with a single character ", py::arg("what"), py::arg("with"), py::arg("case") = true) 2025-09-08T22:32:43,608 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,608 339 | .def("replaceAny", [](CTextU& s, const vector& what, const vector& with, bool bCase)->CTextU& { return s.replaceAny(what, with, bCase, true); }, "replace found strings in list 'what' with corresponding strings from list 'with' ", py::arg("what"), py::arg("with"), py::arg("case") = true) 2025-09-08T22:32:43,608 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,608 340 | .def("replaceAny", [](CTextU& s, const vector& what, const wchar_t* with, bool bCase)->CTextU& { return s.replaceAny(what, with, bCase, true); }, "replace found strings in list 'what' with the string 'with' ", py::arg("what"), py::arg("with"), py::arg("case") = true) 2025-09-08T22:32:43,608 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,608 341 | .def("replaceExtension", &CTextU::replaceExtension, "change the file path extension") 2025-09-08T22:32:43,609 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,609 342 | .def("replaceFileName", &CTextU::replaceFileName, "change the file name") 2025-09-08T22:32:43,609 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,609 343 | .def("replaceLastFolder", &CTextU::replaceLastFolder, "replace last folder name") 2025-09-08T22:32:43,609 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,609 344 | .def("replaceFirst", &CTextU::replaceFirst, "replace first character") 2025-09-08T22:32:43,609 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,609 345 | .def("replaceLast", &CTextU::replaceFirst, "replace last character") 2025-09-08T22:32:43,609 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,609 346 | .def("readFile", &CTextU::readFile, "read a whole text file into our string", py::arg("path"), py::arg("asHex") = false) 2025-09-08T22:32:43,609 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,610 347 | .def("reverse", &CTextU::reverse) 2025-09-08T22:32:43,610 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,610 348 | .def("reverseFind", &CTextU::reverseFind, py::arg("s"), py::arg("case") = true) 2025-09-08T22:32:43,610 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,610 349 | .def("right", &CTextU::right, "return new string with count characters from the end of our string") 2025-09-08T22:32:43,610 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,610 350 | .def("rotateLeft", &CTextU::rotateLeft, "rotate tne string to the left") 2025-09-08T22:32:43,610 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,610 351 | .def("rotateRight", &CTextU::rotateRight, "rotate tne string to the right") 2025-09-08T22:32:43,610 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,610 352 | .def("sentences", [](CTextU& s, const wchar_t* sep, const wchar_t* sepWords)->vector { vector res; s.collectSentences(res, sep); return res; }, "return list with all found words", py::arg("sep") = CTextU::SeparatorsWord, py::arg("sepWords") = CTextU::SeparatorsWord) 2025-09-08T22:32:43,611 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,611 353 | .def("shuffle", &CTextU::shuffle) 2025-09-08T22:32:43,611 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,611 354 | .def("sort", &CTextU::sort) 2025-09-08T22:32:43,611 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,611 355 | .def("split", [](CTextU& s, const wchar_t* sep = CTextU::Separators)->vector { vector res; s.split(res, false, sep); return res; }, "fills the STL container with the collected substrings", py::arg("sep") = CTextU::Separators) 2025-09-08T22:32:43,611 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,611 356 | .def("str", (const wchar_t* (CTextU::*)(size_t pos) const) &CTextU::str, "return text buffer", py::arg("pos") = 0) 2025-09-08T22:32:43,611 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,611 357 | .def("toBinaryNumber", &CTextU::toBinaryNumber, "if the string contains a binary number, convert it ") 2025-09-08T22:32:43,612 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,612 358 | .def("toHexNumber", &CTextU::toHexNumber, "if the string contains a hex number, convert it , 1E --> 30") 2025-09-08T22:32:43,612 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,612 359 | .def("toDouble", &CTextU::toDouble) 2025-09-08T22:32:43,612 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,612 360 | .def("toInteger", &CTextU::toInteger) 2025-09-08T22:32:43,612 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,612 361 | .def("trim", &CTextU::trim, "trim string from both sides", py::arg("cList") = CTextU::Separators) 2025-09-08T22:32:43,612 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,612 362 | .def("trim", &CTextU::trim, "trim string from both sides", py::arg("cList") = CTextU::Separators) 2025-09-08T22:32:43,613 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,613 363 | .def("trimLeft", (CTextU& (CTextU::*)(const wchar_t*)) &CTextU::trimLeft, "trim string from left", py::arg("cList") = CTextU::Separators) 2025-09-08T22:32:43,613 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,613 364 | .def("trimRight", (CTextU& (CTextU::*)(const wchar_t*)) &CTextU::trimRight, "trim string from right", py::arg("cList") = CTextU::Separators) 2025-09-08T22:32:43,613 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,613 365 | .def("upper", &CTextU::toUpper, "conversion to uppercase (in place)") 2025-09-08T22:32:43,613 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,613 366 | .def("words", [](CTextU& s, const wchar_t* sep)->vector { vector res; s.collectWords(res, sep); return res; }, "return list with all found words", py::arg("sep") = CTextU::SeparatorsWord) 2025-09-08T22:32:43,613 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,614 367 | .def("wordsCapitalize", &CTextU::wordsCapitalize, "make all words in a text start with upper character", py::arg("sep") = CTextU::SeparatorsWord) 2025-09-08T22:32:43,614 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,614 368 | .def("wordsCount", &CTextU::wordsCount, "return number of the found words divided by seps", py::arg("sep") = CTextU::SeparatorsWord) 2025-09-08T22:32:43,614 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,614 369 | .def("wordsEnclose", (CTextU& (CTextU::*)(const wchar_t* sBegin, const wchar_t* sEnd, const wchar_t* sep)) &CTextU::wordsEnclose, "enclose all words", py::arg("sBegin"), py::arg("sEnd"), py::arg("sep") = CTextU::SeparatorsWord) 2025-09-08T22:32:43,614 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,614 370 | .def("wordsSort", &CTextU::wordsSort, "sort the text words in ascending order", py::arg("sep") = CTextU::SeparatorsWord, py::arg("sepNew") = CTextU::SPACE) 2025-09-08T22:32:43,614 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,614 371 | .def("wordsReplace", [](CTextU& s, const vector& what, const wchar_t* with, bool bCase, const wchar_t* sep)->CTextU& { return s.wordsReplace(what, with, bCase, sep); }, "replace found strings from the list with the string 'with' ", py::arg("what"), py::arg("with"), py::arg("case") = true, py::arg("sep") = CTextU::SeparatorsWord) 2025-09-08T22:32:43,614 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,614 372 | .def("wordsReplace", [](CTextU& s, const vector& what, const vector& with, bool bCase, const wchar_t* sep)->CTextU& { return s.wordsReplace(what, with, bCase, sep); }, "replace found strings from the list with the strings from another list ", py::arg("what"), py::arg("with"), py::arg("case") = true, py::arg("sep") = CTextU::SeparatorsWord) 2025-09-08T22:32:43,615 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,615 373 | .def("wordsReplaceWithChar", [](CTextU& s, const vector& what, const wchar_t* c, bool bCase, const wchar_t* sep)->CTextU& { return s.wordsReplaceWithChar(what, *c, bCase, sep); }, "replace all found words from the list with a single character ", py::arg("what"), py::arg("with"), py::arg("case") = true, py::arg("sep") = CTextU::SeparatorsWord) 2025-09-08T22:32:43,615 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,615 374 | .def("wordsReverse", &CTextU::wordsReverse, "reverse words inplace", py::arg("sep") = CTextU::SeparatorsWord) 2025-09-08T22:32:43,615 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,615 375 | .def("writeFile", &CTextU::writeFile, "write string to a text file with the given encoding", py::arg("path"), py::arg("encoding") = 1, py::arg("asHex") = false) 2025-09-08T22:32:43,615 | ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T22:32:43,615 /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/src/CTextU.h:142:19: error: no matching function for call to ‘std::basic_ofstream::basic_ofstream(const wchar_t*&)’ 2025-09-08T22:32:43,615 142 | std::ofstream file(filePath); 2025-09-08T22:32:43,615 | ^~~~ 2025-09-08T22:32:43,616 /usr/include/c++/14/fstream:899:7: note: candidate: ‘std::basic_ofstream<_CharT, _Traits>::basic_ofstream(std::basic_ofstream<_CharT, _Traits>&&) [with _CharT = char; _Traits = std::char_traits]’ 2025-09-08T22:32:43,616 899 | basic_ofstream(basic_ofstream&& __rhs) 2025-09-08T22:32:43,616 | ^~~~~~~~~~~~~~ 2025-09-08T22:32:43,616 /usr/include/c++/14/fstream:899:39: note: no known conversion for argument 1 from ‘const wchar_t*’ to ‘std::basic_ofstream&&’ 2025-09-08T22:32:43,616 899 | basic_ofstream(basic_ofstream&& __rhs) 2025-09-08T22:32:43,616 | ~~~~~~~~~~~~~~~~~^~~~~ 2025-09-08T22:32:43,616 /usr/include/c++/14/fstream:874:7: note: candidate: ‘std::basic_ofstream<_CharT, _Traits>::basic_ofstream(const std::string&, std::ios_base::openmode) [with _CharT = char; _Traits = std::char_traits; std::string = std::__cxx11::basic_string; std::ios_base::openmode = std::ios_base::openmode]’ 2025-09-08T22:32:43,616 874 | basic_ofstream(const std::string& __s, 2025-09-08T22:32:43,616 | ^~~~~~~~~~~~~~ 2025-09-08T22:32:43,616 /usr/include/c++/14/fstream:874:41: note: no known conversion for argument 1 from ‘const wchar_t*’ to ‘const std::string&’ {aka ‘const std::__cxx11::basic_string&’} 2025-09-08T22:32:43,617 874 | basic_ofstream(const std::string& __s, 2025-09-08T22:32:43,617 | ~~~~~~~~~~~~~~~~~~~^~~ 2025-09-08T22:32:43,617 /usr/include/c++/14/fstream:839:7: note: candidate: ‘std::basic_ofstream<_CharT, _Traits>::basic_ofstream(const char*, std::ios_base::openmode) [with _CharT = char; _Traits = std::char_traits; std::ios_base::openmode = std::ios_base::openmode]’ 2025-09-08T22:32:43,617 839 | basic_ofstream(const char* __s, 2025-09-08T22:32:43,617 | ^~~~~~~~~~~~~~ 2025-09-08T22:32:43,617 /usr/include/c++/14/fstream:839:34: note: no known conversion for argument 1 from ‘const wchar_t*’ to ‘const char*’ 2025-09-08T22:32:43,617 839 | basic_ofstream(const char* __s, 2025-09-08T22:32:43,617 | ~~~~~~~~~~~~^~~ 2025-09-08T22:32:43,617 /usr/include/c++/14/fstream:828:7: note: candidate: ‘std::basic_ofstream<_CharT, _Traits>::basic_ofstream() [with _CharT = char; _Traits = std::char_traits]’ 2025-09-08T22:32:43,617 828 | basic_ofstream(): __ostream_type(), _M_filebuf() 2025-09-08T22:32:43,618 | ^~~~~~~~~~~~~~ 2025-09-08T22:32:43,618 /usr/include/c++/14/fstream:828:7: note: candidate expects 0 arguments, 1 provided 2025-09-08T22:32:56,961 gmake[2]: *** [CMakeFiles/ctextlib.dir/build.make:79: CMakeFiles/ctextlib.dir/src/module.cpp.o] Error 1 2025-09-08T22:32:56,961 gmake[1]: *** [CMakeFiles/Makefile2:109: CMakeFiles/ctextlib.dir/all] Error 2 2025-09-08T22:32:56,961 gmake: *** [Makefile:91: all] Error 2 2025-09-08T22:32:56,974 Traceback (most recent call last): 2025-09-08T22:32:56,983 File "", line 2, in 2025-09-08T22:32:56,983 exec(compile(''' 2025-09-08T22:32:56,983 ~~~~^^^^^^^^^^^^ 2025-09-08T22:32:56,983 # This is -- a caller that pip uses to run setup.py 2025-09-08T22:32:56,983 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-08T22:32:56,984 ...<32 lines>... 2025-09-08T22:32:56,984 exec(compile(setup_py_code, filename, "exec")) 2025-09-08T22:32:56,984 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-08T22:32:56,984 ''' % ('/tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/setup.py',), "", "exec")) 2025-09-08T22:32:56,984 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-08T22:32:56,984 File "", line 35, in 2025-09-08T22:32:56,985 File "/tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/setup.py", line 62, in 2025-09-08T22:32:56,985 setup( 2025-09-08T22:32:56,985 ~~~~~^ 2025-09-08T22:32:56,985 name='ctextlib', 2025-09-08T22:32:56,985 ^^^^^^^^^^^^^^^^ 2025-09-08T22:32:56,985 ...<16 lines>... 2025-09-08T22:32:56,986 python_requires='>=3.6', 2025-09-08T22:32:56,986 ^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-08T22:32:56,986 ) 2025-09-08T22:32:56,986 ^ 2025-09-08T22:32:56,986 File "/usr/local/lib/python3.13/dist-packages/setuptools/__init__.py", line 115, in setup 2025-09-08T22:32:56,986 return distutils.core.setup(**attrs) 2025-09-08T22:32:56,986 ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ 2025-09-08T22:32:56,987 File "/usr/local/lib/python3.13/dist-packages/setuptools/_distutils/core.py", line 186, in setup 2025-09-08T22:32:56,987 return run_commands(dist) 2025-09-08T22:32:56,987 File "/usr/local/lib/python3.13/dist-packages/setuptools/_distutils/core.py", line 202, in run_commands 2025-09-08T22:32:56,987 dist.run_commands() 2025-09-08T22:32:56,987 ~~~~~~~~~~~~~~~~~^^ 2025-09-08T22:32:56,987 File "/usr/local/lib/python3.13/dist-packages/setuptools/_distutils/dist.py", line 1002, in run_commands 2025-09-08T22:32:56,988 self.run_command(cmd) 2025-09-08T22:32:56,988 ~~~~~~~~~~~~~~~~^^^^^ 2025-09-08T22:32:56,988 File "/usr/local/lib/python3.13/dist-packages/setuptools/dist.py", line 1102, in run_command 2025-09-08T22:32:56,988 super().run_command(command) 2025-09-08T22:32:56,988 ~~~~~~~~~~~~~~~~~~~^^^^^^^^^ 2025-09-08T22:32:56,988 File "/usr/local/lib/python3.13/dist-packages/setuptools/_distutils/dist.py", line 1021, in run_command 2025-09-08T22:32:56,988 cmd_obj.run() 2025-09-08T22:32:56,989 ~~~~~~~~~~~^^ 2025-09-08T22:32:56,989 File "/usr/local/lib/python3.13/dist-packages/setuptools/command/bdist_wheel.py", line 370, in run 2025-09-08T22:32:56,989 self.run_command("build") 2025-09-08T22:32:56,989 ~~~~~~~~~~~~~~~~^^^^^^^^^ 2025-09-08T22:32:56,989 File "/usr/local/lib/python3.13/dist-packages/setuptools/_distutils/cmd.py", line 357, in run_command 2025-09-08T22:32:56,989 self.distribution.run_command(command) 2025-09-08T22:32:56,990 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ 2025-09-08T22:32:56,990 File "/usr/local/lib/python3.13/dist-packages/setuptools/dist.py", line 1102, in run_command 2025-09-08T22:32:56,990 super().run_command(command) 2025-09-08T22:32:56,990 ~~~~~~~~~~~~~~~~~~~^^^^^^^^^ 2025-09-08T22:32:56,990 File "/usr/local/lib/python3.13/dist-packages/setuptools/_distutils/dist.py", line 1021, in run_command 2025-09-08T22:32:56,990 cmd_obj.run() 2025-09-08T22:32:56,990 ~~~~~~~~~~~^^ 2025-09-08T22:32:56,991 File "/usr/local/lib/python3.13/dist-packages/setuptools/_distutils/command/build.py", line 135, in run 2025-09-08T22:32:56,991 self.run_command(cmd_name) 2025-09-08T22:32:56,991 ~~~~~~~~~~~~~~~~^^^^^^^^^^ 2025-09-08T22:32:56,991 File "/usr/local/lib/python3.13/dist-packages/setuptools/_distutils/cmd.py", line 357, in run_command 2025-09-08T22:32:56,991 self.distribution.run_command(command) 2025-09-08T22:32:56,991 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ 2025-09-08T22:32:56,992 File "/usr/local/lib/python3.13/dist-packages/setuptools/dist.py", line 1102, in run_command 2025-09-08T22:32:56,992 super().run_command(command) 2025-09-08T22:32:56,992 ~~~~~~~~~~~~~~~~~~~^^^^^^^^^ 2025-09-08T22:32:56,992 File "/usr/local/lib/python3.13/dist-packages/setuptools/_distutils/dist.py", line 1021, in run_command 2025-09-08T22:32:56,993 cmd_obj.run() 2025-09-08T22:32:56,993 ~~~~~~~~~~~^^ 2025-09-08T22:32:56,993 File "/tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/setup.py", line 32, in run 2025-09-08T22:32:56,993 self.build_extension(ext) 2025-09-08T22:32:56,993 ~~~~~~~~~~~~~~~~~~~~^^^^^ 2025-09-08T22:32:56,993 File "/tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/setup.py", line 57, in build_extension 2025-09-08T22:32:56,994 subprocess.check_call(['cmake', '--build', '.'] + build_args, cwd=self.build_temp) 2025-09-08T22:32:56,994 ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-09-08T22:32:56,994 File "/usr/lib/python3.13/subprocess.py", line 419, in check_call 2025-09-08T22:32:56,994 raise CalledProcessError(retcode, cmd) 2025-09-08T22:32:56,994 subprocess.CalledProcessError: Command '['cmake', '--build', '.', '--config', 'Release', '--', '-j2']' returned non-zero exit status 2. 2025-09-08T22:32:57,101 ERROR: python setup.py bdist_wheel exited with 1 2025-09-08T22:32:57,114 [bold magenta]full command[/]: [blue]/usr/bin/python3 -u -c ' 2025-09-08T22:32:57,114 exec(compile('"'"''"'"''"'"' 2025-09-08T22:32:57,114 # This is -- a caller that pip uses to run setup.py 2025-09-08T22:32:57,114 # 2025-09-08T22:32:57,114 # - It imports setuptools before invoking setup.py, to enable projects that directly 2025-09-08T22:32:57,114 # import from `distutils.core` to work with newer packaging standards. 2025-09-08T22:32:57,114 # - It provides a clear error message when setuptools is not installed. 2025-09-08T22:32:57,114 # - It sets `sys.argv[0]` to the underlying `setup.py`, when invoking `setup.py` so 2025-09-08T22:32:57,114 # setuptools doesn'"'"'t think the script is `-c`. This avoids the following warning: 2025-09-08T22:32:57,114 # manifest_maker: standard file '"'"'-c'"'"' not found". 2025-09-08T22:32:57,114 # - It generates a shim setup.py, for handling setup.cfg-only projects. 2025-09-08T22:32:57,114 import os, sys, tokenize, traceback 2025-09-08T22:32:57,114 2025-09-08T22:32:57,114 try: 2025-09-08T22:32:57,114 import setuptools 2025-09-08T22:32:57,114 except ImportError: 2025-09-08T22:32:57,114 print( 2025-09-08T22:32:57,114 "ERROR: Can not execute `setup.py` since setuptools failed to import in " 2025-09-08T22:32:57,114 "the build environment with exception:", 2025-09-08T22:32:57,114 file=sys.stderr, 2025-09-08T22:32:57,114 ) 2025-09-08T22:32:57,114 traceback.print_exc() 2025-09-08T22:32:57,114 sys.exit(1) 2025-09-08T22:32:57,114 2025-09-08T22:32:57,114 __file__ = %r 2025-09-08T22:32:57,114 sys.argv[0] = __file__ 2025-09-08T22:32:57,114 2025-09-08T22:32:57,114 if os.path.exists(__file__): 2025-09-08T22:32:57,114 filename = __file__ 2025-09-08T22:32:57,114 with tokenize.open(__file__) as f: 2025-09-08T22:32:57,114 setup_py_code = f.read() 2025-09-08T22:32:57,114 else: 2025-09-08T22:32:57,114 filename = "" 2025-09-08T22:32:57,114 setup_py_code = "from setuptools import setup; setup()" 2025-09-08T22:32:57,114 2025-09-08T22:32:57,114 exec(compile(setup_py_code, filename, "exec")) 2025-09-08T22:32:57,114 '"'"''"'"''"'"' % ('"'"'/tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/setup.py'"'"',), "", "exec"))' bdist_wheel -d /tmp/pip-wheel-luqrrt4o[/] 2025-09-08T22:32:57,114 [bold magenta]cwd[/]: /tmp/pip-wheel-gu1tf0li/ctextlib_f4882c5ec6524992a44b52a8730f53de/ 2025-09-08T22:32:57,115 Building wheel for ctextlib (setup.py): finished with status 'error' 2025-09-08T22:32:57,115 ERROR: Failed building wheel for ctextlib 2025-09-08T22:32:57,116 Running setup.py clean for ctextlib 2025-09-08T22:32:57,117 Running command python setup.py clean 2025-09-08T22:32:58,314 /usr/local/lib/python3.13/dist-packages/setuptools/dist.py:759: SetuptoolsDeprecationWarning: License classifiers are deprecated. 2025-09-08T22:32:58,315 !! 2025-09-08T22:32:58,315 ******************************************************************************** 2025-09-08T22:32:58,315 Please consider removing the following classifiers in favor of a SPDX license expression: 2025-09-08T22:32:58,315 License :: OSI Approved :: MIT License 2025-09-08T22:32:58,315 See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. 2025-09-08T22:32:58,315 ******************************************************************************** 2025-09-08T22:32:58,315 !! 2025-09-08T22:32:58,316 self._finalize_license_expression() 2025-09-08T22:32:58,389 running clean 2025-09-08T22:32:58,534 removing 'build/temp.linux-armv7l-cpython-313' (and everything under it) 2025-09-08T22:32:58,536 removing 'build/lib.linux-armv7l-cpython-313' (and everything under it) 2025-09-08T22:32:58,536 'build/bdist.linux-armv7l' does not exist -- can't clean it 2025-09-08T22:32:58,536 'build/scripts-3.13' does not exist -- can't clean it 2025-09-08T22:32:58,537 removing 'build' 2025-09-08T22:32:58,648 Failed to build ctextlib 2025-09-08T22:32:58,649 ERROR: Failed to build one or more wheels 2025-09-08T22:32:58,650 Exception information: 2025-09-08T22:32:58,650 Traceback (most recent call last): 2025-09-08T22:32:58,650 File "/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py", line 105, in _run_wrapper 2025-09-08T22:32:58,650 status = _inner_run() 2025-09-08T22:32:58,650 File "/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py", line 96, in _inner_run 2025-09-08T22:32:58,650 return self.run(options, args) 2025-09-08T22:32:58,650 ~~~~~~~~^^^^^^^^^^^^^^^ 2025-09-08T22:32:58,650 File "/usr/lib/python3/dist-packages/pip/_internal/cli/req_command.py", line 68, in wrapper 2025-09-08T22:32:58,650 return func(self, options, args) 2025-09-08T22:32:58,650 File "/usr/lib/python3/dist-packages/pip/_internal/commands/wheel.py", line 180, in run 2025-09-08T22:32:58,650 raise CommandError("Failed to build one or more wheels") 2025-09-08T22:32:58,650 pip._internal.exceptions.CommandError: Failed to build one or more wheels 2025-09-08T22:32:58,654 Removed build tracker: '/tmp/pip-build-tracker-ltc6mawu'