KL-Py 0.5.4__tar.gz → 0.5.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (338) hide show
  1. {kl_py-0.5.4 → kl_py-0.5.5}/PKG-INFO +1 -1
  2. {kl_py-0.5.4 → kl_py-0.5.5}/pyproject.toml +1 -1
  3. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/KL_Py.py +69 -29
  4. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/_translate.py +129 -52
  5. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py.egg-info/PKG-INFO +1 -1
  6. {kl_py-0.5.4 → kl_py-0.5.5}/LICENSE +0 -0
  7. {kl_py-0.5.4 → kl_py-0.5.5}/README.md +0 -0
  8. {kl_py-0.5.4 → kl_py-0.5.5}/setup.cfg +0 -0
  9. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/FreeSimpleGUI/__init__.py +0 -0
  10. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/FreeSimpleGUI/_utils.py +0 -0
  11. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/FreeSimpleGUI/elements/__init__.py +0 -0
  12. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/FreeSimpleGUI/elements/base.py +0 -0
  13. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/FreeSimpleGUI/elements/button.py +0 -0
  14. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/FreeSimpleGUI/elements/calendar.py +0 -0
  15. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/FreeSimpleGUI/elements/canvas.py +0 -0
  16. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/FreeSimpleGUI/elements/checkbox.py +0 -0
  17. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/FreeSimpleGUI/elements/column.py +0 -0
  18. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/FreeSimpleGUI/elements/combo.py +0 -0
  19. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/FreeSimpleGUI/elements/error.py +0 -0
  20. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/FreeSimpleGUI/elements/frame.py +0 -0
  21. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/FreeSimpleGUI/elements/graph.py +0 -0
  22. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/FreeSimpleGUI/elements/helpers.py +0 -0
  23. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/FreeSimpleGUI/elements/image.py +0 -0
  24. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/FreeSimpleGUI/elements/input.py +0 -0
  25. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/FreeSimpleGUI/elements/list_box.py +0 -0
  26. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/FreeSimpleGUI/elements/menu.py +0 -0
  27. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/FreeSimpleGUI/elements/multiline.py +0 -0
  28. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/FreeSimpleGUI/elements/option_menu.py +0 -0
  29. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/FreeSimpleGUI/elements/pane.py +0 -0
  30. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/FreeSimpleGUI/elements/progress_bar.py +0 -0
  31. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/FreeSimpleGUI/elements/radio.py +0 -0
  32. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/FreeSimpleGUI/elements/separator.py +0 -0
  33. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/FreeSimpleGUI/elements/sizegrip.py +0 -0
  34. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/FreeSimpleGUI/elements/slider.py +0 -0
  35. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/FreeSimpleGUI/elements/spin.py +0 -0
  36. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/FreeSimpleGUI/elements/status_bar.py +0 -0
  37. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/FreeSimpleGUI/elements/stretch.py +0 -0
  38. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/FreeSimpleGUI/elements/tab.py +0 -0
  39. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/FreeSimpleGUI/elements/table.py +0 -0
  40. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/FreeSimpleGUI/elements/text.py +0 -0
  41. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/FreeSimpleGUI/elements/tree.py +0 -0
  42. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/FreeSimpleGUI/themes.py +0 -0
  43. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/FreeSimpleGUI/tray.py +0 -0
  44. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/FreeSimpleGUI/window.py +0 -0
  45. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/__init__.py +0 -0
  46. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/_custom_pandas.py +0 -0
  47. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/_custom_sqlite.py +0 -0
  48. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/_custom_turtle.py +0 -0
  49. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/_error_classes.py +0 -0
  50. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/_filepaths.py +0 -0
  51. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/_klang_builtins.py +0 -0
  52. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/_web_translate.py +0 -0
  53. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/automl.py +0 -0
  54. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/dnd/__init__.py +0 -0
  55. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/drag_and_drop/__init__.py +0 -0
  56. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/export/__init__.py +0 -0
  57. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/export/__main__.py +0 -0
  58. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/export/config.py +0 -0
  59. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/export/dialogs.py +0 -0
  60. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/export/packaging.py +0 -0
  61. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/export/shims.py +0 -0
  62. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/export/ui.py +0 -0
  63. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/export/utils.py +0 -0
  64. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/export/validation.py +0 -0
  65. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/fsgdnd/__init__.py +0 -0
  66. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/fsgui/__init__.py +0 -0
  67. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/hindGui/__init__.py +0 -0
  68. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/hindGui/_utils.py +0 -0
  69. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/hindGui/elements/base.py +0 -0
  70. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/hindGui/elements/button.py +0 -0
  71. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/hindGui/elements/calendar.py +0 -0
  72. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/hindGui/elements/canvas.py +0 -0
  73. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/hindGui/elements/center.py +0 -0
  74. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/hindGui/elements/checkbox.py +0 -0
  75. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/hindGui/elements/column.py +0 -0
  76. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/hindGui/elements/combo.py +0 -0
  77. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/hindGui/elements/error.py +0 -0
  78. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/hindGui/elements/frame.py +0 -0
  79. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/hindGui/elements/graph.py +0 -0
  80. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/hindGui/elements/helpers.py +0 -0
  81. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/hindGui/elements/image.py +0 -0
  82. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/hindGui/elements/input.py +0 -0
  83. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/hindGui/elements/list_box.py +0 -0
  84. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/hindGui/elements/menu.py +0 -0
  85. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/hindGui/elements/multiline.py +0 -0
  86. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/hindGui/elements/option_menu.py +0 -0
  87. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/hindGui/elements/pane.py +0 -0
  88. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/hindGui/elements/progress_bar.py +0 -0
  89. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/hindGui/elements/radio.py +0 -0
  90. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/hindGui/elements/separator.py +0 -0
  91. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/hindGui/elements/sizegrip.py +0 -0
  92. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/hindGui/elements/slider.py +0 -0
  93. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/hindGui/elements/spin.py +0 -0
  94. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/hindGui/elements/status_bar.py +0 -0
  95. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/hindGui/elements/stretch.py +0 -0
  96. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/hindGui/elements/tab.py +0 -0
  97. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/hindGui/elements/table.py +0 -0
  98. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/hindGui/elements/text.py +0 -0
  99. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/hindGui/elements/tree.py +0 -0
  100. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/hindGui/replace.py +0 -0
  101. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/hindGui/tray.py +0 -0
  102. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/hindGui/window.py +0 -0
  103. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/k2exe/__init__.py +0 -0
  104. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/k2exe/__main__.py +0 -0
  105. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/k2exe/config.py +0 -0
  106. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/k2exe/dialogs.py +0 -0
  107. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/k2exe/packaging.py +0 -0
  108. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/k2exe/shims.py +0 -0
  109. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/k2exe/ui.py +0 -0
  110. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/k2exe/utils.py +0 -0
  111. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/k2exe/validation.py +0 -0
  112. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/kexe/__init__.py +0 -0
  113. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/kexe/__main__.py +0 -0
  114. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/kexe/config.py +0 -0
  115. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/kexe/dialogs.py +0 -0
  116. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/kexe/packaging.py +0 -0
  117. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/kexe/shims.py +0 -0
  118. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/kexe/ui.py +0 -0
  119. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/kexe/utils.py +0 -0
  120. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/kexe/validation.py +0 -0
  121. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/kl2exe/__init__.py +0 -0
  122. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/kl2exe/__main__.py +0 -0
  123. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/kl2exe/config.py +0 -0
  124. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/kl2exe/dialogs.py +0 -0
  125. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/kl2exe/packaging.py +0 -0
  126. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/kl2exe/shims.py +0 -0
  127. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/kl2exe/ui.py +0 -0
  128. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/kl2exe/utils.py +0 -0
  129. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/kl2exe/validation.py +0 -0
  130. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/klang2exe/__init__.py +0 -0
  131. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/klang2exe/__main__.py +0 -0
  132. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/klang2exe/config.py +0 -0
  133. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/klang2exe/dialogs.py +0 -0
  134. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/klang2exe/packaging.py +0 -0
  135. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/klang2exe/shims.py +0 -0
  136. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/klang2exe/ui.py +0 -0
  137. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/klang2exe/utils.py +0 -0
  138. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/klang2exe/validation.py +0 -0
  139. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/klangexe/__init__.py +0 -0
  140. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/klangexe/__main__.py +0 -0
  141. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/klangexe/config.py +0 -0
  142. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/klangexe/dialogs.py +0 -0
  143. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/klangexe/packaging.py +0 -0
  144. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/klangexe/shims.py +0 -0
  145. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/klangexe/ui.py +0 -0
  146. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/klangexe/utils.py +0 -0
  147. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/klangexe/validation.py +0 -0
  148. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/klexe/__init__.py +0 -0
  149. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/klexe/__main__.py +0 -0
  150. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/klexe/config.py +0 -0
  151. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/klexe/dialogs.py +0 -0
  152. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/klexe/packaging.py +0 -0
  153. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/klexe/shims.py +0 -0
  154. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/klexe/ui.py +0 -0
  155. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/klexe/utils.py +0 -0
  156. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/klexe/validation.py +0 -0
  157. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/ml.py +0 -0
  158. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/np/__init__.py +0 -0
  159. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/pd/__init__.py +0 -0
  160. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/plt/__init__.py +0 -0
  161. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/psgui/__init__.py +0 -0
  162. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/px/__init__.py +0 -0
  163. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/pyexe/__init__.py +0 -0
  164. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/pyexe/__main__.py +0 -0
  165. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/pyexe/config.py +0 -0
  166. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/pyexe/dialogs.py +0 -0
  167. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/pyexe/packaging.py +0 -0
  168. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/pyexe/shims.py +0 -0
  169. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/pyexe/ui.py +0 -0
  170. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/pyexe/utils.py +0 -0
  171. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/pyexe/validation.py +0 -0
  172. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/pysgdnd/__init__.py +0 -0
  173. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/__init__.py +0 -0
  174. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/__version__.py +0 -0
  175. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/_internal_utils.py +0 -0
  176. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/adapters.py +0 -0
  177. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/api.py +0 -0
  178. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/auth.py +0 -0
  179. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/backports/zstd/__init__.py +0 -0
  180. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/backports/zstd/__init__.pyi +0 -0
  181. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/backports/zstd/_cffi/__init__.py +0 -0
  182. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/backports/zstd/_cffi/_blocks_output_buffer.py +0 -0
  183. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/backports/zstd/_cffi/_common.py +0 -0
  184. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/backports/zstd/_cffi/buffer.py +0 -0
  185. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/backports/zstd/_cffi/compressor.py +0 -0
  186. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/backports/zstd/_cffi/decompressor.py +0 -0
  187. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/backports/zstd/_cffi/zstddict.py +0 -0
  188. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/backports/zstd/_compat.py +0 -0
  189. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/backports/zstd/_shutil.py +0 -0
  190. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/backports/zstd/_streams.py +0 -0
  191. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/backports/zstd/_zstd.py +0 -0
  192. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/backports/zstd/_zstdfile.py +0 -0
  193. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/backports/zstd/py.typed +0 -0
  194. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/backports/zstd/tarfile.py +0 -0
  195. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/backports/zstd/tarfile.pyi +0 -0
  196. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/backports/zstd/zipfile/__init__.py +0 -0
  197. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/backports/zstd/zipfile/__init__.pyi +0 -0
  198. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/backports/zstd/zipfile/__main__.py +0 -0
  199. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/backports/zstd/zipfile/_path/__init__.py +0 -0
  200. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/backports/zstd/zipfile/_path/__init__.pyi +0 -0
  201. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/backports/zstd/zipfile/_path/glob.py +0 -0
  202. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/backports/zstd/zipfile/_path/glob.pyi +0 -0
  203. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/certifi/__init__.py +0 -0
  204. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/certifi/__main__.py +0 -0
  205. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/certifi/core.py +0 -0
  206. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/certifi/py.typed +0 -0
  207. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/certs.py +0 -0
  208. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/charset_normalizer/__init__.py +0 -0
  209. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/charset_normalizer/__main__.py +0 -0
  210. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/charset_normalizer/api.py +0 -0
  211. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/charset_normalizer/cd.py +0 -0
  212. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/charset_normalizer/cli/__init__.py +0 -0
  213. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/charset_normalizer/cli/__main__.py +0 -0
  214. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/charset_normalizer/constant.py +0 -0
  215. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/charset_normalizer/legacy.py +0 -0
  216. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/charset_normalizer/md.py +0 -0
  217. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/charset_normalizer/models.py +0 -0
  218. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/charset_normalizer/py.typed +0 -0
  219. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/charset_normalizer/utils.py +0 -0
  220. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/charset_normalizer/version.py +0 -0
  221. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/compat.py +0 -0
  222. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/cookies.py +0 -0
  223. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/exceptions.py +0 -0
  224. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/help.py +0 -0
  225. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/hooks.py +0 -0
  226. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/idna/__init__.py +0 -0
  227. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/idna/codec.py +0 -0
  228. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/idna/compat.py +0 -0
  229. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/idna/core.py +0 -0
  230. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/idna/idnadata.py +0 -0
  231. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/idna/intranges.py +0 -0
  232. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/idna/package_data.py +0 -0
  233. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/idna/py.typed +0 -0
  234. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/idna/uts46data.py +0 -0
  235. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/models.py +0 -0
  236. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/packages.py +0 -0
  237. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/sessions.py +0 -0
  238. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/__init__.py +0 -0
  239. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/compat.py +0 -0
  240. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/decoder.py +0 -0
  241. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/encoder.py +0 -0
  242. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/errors.py +0 -0
  243. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/ordered_dict.py +0 -0
  244. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/raw_json.py +0 -0
  245. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/scanner.py +0 -0
  246. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/tests/__init__.py +0 -0
  247. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/tests/_cibw_runner.py +0 -0
  248. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/tests/_helpers.py +0 -0
  249. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/tests/test_bigint_as_string.py +0 -0
  250. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/tests/test_bitsize_int_as_string.py +0 -0
  251. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/tests/test_check_circular.py +0 -0
  252. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/tests/test_decimal.py +0 -0
  253. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/tests/test_decode.py +0 -0
  254. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/tests/test_default.py +0 -0
  255. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/tests/test_dump.py +0 -0
  256. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/tests/test_encode_basestring_ascii.py +0 -0
  257. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/tests/test_encode_for_html.py +0 -0
  258. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/tests/test_errors.py +0 -0
  259. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/tests/test_fail.py +0 -0
  260. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/tests/test_float.py +0 -0
  261. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/tests/test_for_json.py +0 -0
  262. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/tests/test_free_threading.py +0 -0
  263. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/tests/test_indent.py +0 -0
  264. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/tests/test_item_sort_key.py +0 -0
  265. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/tests/test_iterable.py +0 -0
  266. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/tests/test_namedtuple.py +0 -0
  267. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/tests/test_pass1.py +0 -0
  268. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/tests/test_pass2.py +0 -0
  269. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/tests/test_pass3.py +0 -0
  270. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/tests/test_raw_json.py +0 -0
  271. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/tests/test_recursion.py +0 -0
  272. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/tests/test_scanstring.py +0 -0
  273. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/tests/test_separators.py +0 -0
  274. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/tests/test_speedups.py +0 -0
  275. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/tests/test_str_subclass.py +0 -0
  276. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/tests/test_subclass.py +0 -0
  277. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/tests/test_subinterpreters.py +0 -0
  278. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/tests/test_tool.py +0 -0
  279. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/tests/test_tuple.py +0 -0
  280. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/tests/test_unicode.py +0 -0
  281. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/simplejson/tool.py +0 -0
  282. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/status_codes.py +0 -0
  283. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/structures.py +0 -0
  284. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/urllib3/__init__.py +0 -0
  285. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/urllib3/_base_connection.py +0 -0
  286. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/urllib3/_collections.py +0 -0
  287. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/urllib3/_request_methods.py +0 -0
  288. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/urllib3/_version.py +0 -0
  289. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/urllib3/connection.py +0 -0
  290. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/urllib3/connectionpool.py +0 -0
  291. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/urllib3/contrib/__init__.py +0 -0
  292. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/urllib3/contrib/emscripten/__init__.py +0 -0
  293. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/urllib3/contrib/emscripten/connection.py +0 -0
  294. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/urllib3/contrib/emscripten/fetch.py +0 -0
  295. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/urllib3/contrib/emscripten/request.py +0 -0
  296. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/urllib3/contrib/emscripten/response.py +0 -0
  297. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/urllib3/contrib/pyopenssl.py +0 -0
  298. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/urllib3/contrib/socks.py +0 -0
  299. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/urllib3/exceptions.py +0 -0
  300. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/urllib3/fields.py +0 -0
  301. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/urllib3/filepost.py +0 -0
  302. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/urllib3/http2/__init__.py +0 -0
  303. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/urllib3/http2/connection.py +0 -0
  304. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/urllib3/http2/probe.py +0 -0
  305. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/urllib3/poolmanager.py +0 -0
  306. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/urllib3/py.typed +0 -0
  307. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/urllib3/response.py +0 -0
  308. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/urllib3/util/__init__.py +0 -0
  309. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/urllib3/util/connection.py +0 -0
  310. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/urllib3/util/proxy.py +0 -0
  311. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/urllib3/util/request.py +0 -0
  312. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/urllib3/util/response.py +0 -0
  313. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/urllib3/util/retry.py +0 -0
  314. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/urllib3/util/ssl_.py +0 -0
  315. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/urllib3/util/ssl_match_hostname.py +0 -0
  316. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/urllib3/util/ssltransport.py +0 -0
  317. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/urllib3/util/timeout.py +0 -0
  318. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/urllib3/util/url.py +0 -0
  319. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/urllib3/util/util.py +0 -0
  320. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/urllib3/util/wait.py +0 -0
  321. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/requests/utils.py +0 -0
  322. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/sb/__init__.py +0 -0
  323. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/sk/__init__.py +0 -0
  324. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/sns/__init__.py +0 -0
  325. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/toexe/__init__.py +0 -0
  326. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/toexe/__main__.py +0 -0
  327. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/toexe/config.py +0 -0
  328. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/toexe/dialogs.py +0 -0
  329. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/toexe/packaging.py +0 -0
  330. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/toexe/shims.py +0 -0
  331. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/toexe/ui.py +0 -0
  332. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/toexe/utils.py +0 -0
  333. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/toexe/validation.py +0 -0
  334. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py/when.py +0 -0
  335. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py.egg-info/SOURCES.txt +0 -0
  336. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py.egg-info/dependency_links.txt +0 -0
  337. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py.egg-info/requires.txt +0 -0
  338. {kl_py-0.5.4 → kl_py-0.5.5}/src/KL_Py.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: KL_Py
3
- Version: 0.5.4
3
+ Version: 0.5.5
4
4
  Summary: A Python simplification module
5
5
  Author-email: Abbaskhurram255 <abbaskhurram255@gmail.com>
6
6
  Classifier: Programming Language :: Python :: 3
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
5
5
 
6
6
  [project]
7
7
  name = "KL_Py"
8
- version = "0.5.4"
8
+ version = "0.5.5"
9
9
  authors = [
10
10
  { name = "Abbaskhurram255", email = "abbaskhurram255@gmail.com" }
11
11
  ]
@@ -6674,12 +6674,23 @@ def joined_words(*args: tuple[Any]) -> str:
6674
6674
  if arg is None:
6675
6675
  continue
6676
6676
  if isinstance(arg, (list, tuple)):
6677
- arg = joined_words(*arg)
6678
- arg = re.sub(r"(?<=, )aur (?=.+$)", "", str(arg))
6677
+ arg = joined_words(
6678
+ *arg
6679
+ )
6680
+ arg = re.sub(
6681
+ r"(?<=, )aur (?=.+$)", "",
6682
+ str(
6683
+ arg
6684
+ )
6685
+ )
6679
6686
  if isinstance(arg, float):
6680
- arg = round(arg, 1)
6687
+ arg = round(
6688
+ arg,
6689
+ 2
6690
+ )
6681
6691
  if isinstance(arg, bool):
6682
- arg = "Han" if arg else "Nahi"
6692
+ arg = "Han"\
6693
+ if arg else "Nahi"
6683
6694
  arg = str(arg)
6684
6695
  if ", " in arg:
6685
6696
  sub_args: list[str] = arg.split(", ")
@@ -6692,10 +6703,6 @@ def joined_words(*args: tuple[Any]) -> str:
6692
6703
  last: str = str(result.pop())
6693
6704
  return ", ".join(result) + ", aur " + last
6694
6705
  jurewe = joined_words
6695
- def split_into_words(s: str) -> list[str]:
6696
- if not isinstance(s, str) or not s.strip(): return ""
6697
- return re.findall(WORD_RE, s)
6698
- find_words = findwords = to_words = towords = to_word_list = towordlist = pakro_words = pakrowords = pakro_alfaaz = pakroalfaaz = split_into_words
6699
6706
  def json_load(filename: str) -> Obj | list:
6700
6707
  if not isinstance(filename, str)\
6701
6708
  or not filename.strip():
@@ -6843,74 +6850,99 @@ def find_words(src: Any) -> list[str]:
6843
6850
  :type list <blankable, if no words are found>
6844
6851
  :description a word list containing all the words from the object
6845
6852
  """
6846
- if not src:
6853
+ if src is None:
6847
6854
  return ""
6848
- src = str(src).strip()
6849
- word_list: list[str] = find_matches(src, r"(?:[A-Za-z]+\-)*[A-Za-z]+")
6855
+ src = str(src)\
6856
+ .strip()
6857
+ word_list: list[str] = find_matches(
6858
+ src,
6859
+ WORD_RE
6860
+ )
6850
6861
  return word_list
6851
6862
  dhundo_alfaaz = dhundo_alfaz = words_of = to_words = find_words
6863
+ find_words = findwords = to_words = towords = to_word_list = towordlist = pakro_words = pakrowords = pakro_alfaaz = pakroalfaaz = split_into_words = find_words
6852
6864
  def startswith(x: str|list, y: str|list) -> bool:
6853
- if not isinstance(x, (str, list, tuple)):
6865
+ if not isinstance(x, (str, list, tuple, set)):
6854
6866
  return False
6855
- if isinstance_each([x, y], str):
6867
+ if all(isinstance(item, str) for item in (x, y)):
6856
6868
  try:
6857
- return re.search(f"^{y}", x)
6869
+ return re.search(
6870
+ f"^{y}",
6871
+ x
6872
+ ) or False
6858
6873
  except re.error as e:
6859
6874
  print(f"re.warning:\n * Bad regex. Switching to default `str.startswith` mode, now that the regex mode failed. *Reason*: {str(e).capitalize()}.")
6860
6875
  return x.startswith(y)
6861
- elif isinstance(x, (list, tuple)):
6862
- if isinstance(x, tuple):
6876
+ elif isinstance(x, (list, tuple, set)):
6877
+ if isinstance(x, (tuple, set)):
6863
6878
  x = list(x)
6864
- if not isinstance(y, (list, tuple)):
6879
+ if not isinstance(y, (list, tuple, set)):
6865
6880
  y = [y]
6866
- if isinstance(y, tuple):
6881
+ if isinstance(y, (tuple, set)):
6867
6882
  y = list(y)
6868
6883
  if len(x) < len(y):
6869
6884
  return False
6870
6885
  return x[:len(y)] == y
6871
6886
  return False
6872
- starts_with = startswith
6887
+ ki_shurwat = starts_with = startswith
6873
6888
  def endswith(x: str|list, y: str|list) -> bool:
6874
- if not isinstance(x, (str, list, tuple)):
6889
+ if not isinstance(x, (str, list, tuple, set)):
6875
6890
  return False
6876
- if isinstance_each([x, y], str):
6891
+ if all(isinstance(item, str) for item in (x, y)):
6877
6892
  try:
6878
- return re.search(f"{y}$", x)
6893
+ return re.search(
6894
+ f"{y}$",
6895
+ x
6896
+ ) or False
6879
6897
  except re.error as e:
6880
6898
  print(f"re.warning:\n * Bad regex. Switching to default `str.endswith` mode, now that the regex mode failed. *Reason*: {str(e).capitalize()}.")
6881
6899
  return x.endswith(y)
6882
- elif isinstance(x, (list, tuple)):
6883
- if isinstance(x, tuple):
6900
+ elif isinstance(x, (list, tuple, set)):
6901
+ if isinstance(x, (tuple, set)):
6884
6902
  x = list(x)
6885
- if not isinstance(y, (list, tuple)):
6903
+ if not isinstance(y, (list, tuple, set)):
6886
6904
  y = [y]
6887
- if isinstance(y, tuple):
6905
+ if isinstance(y, (tuple, set)):
6888
6906
  y = list(y)
6889
6907
  if len(x) < len(y):
6890
6908
  return False
6891
6909
  return x[-len(y):] == y
6892
6910
  return False
6893
- ends_with = endswith
6911
+ ka_khatma = ends_with = endswith
6894
6912
  def upper(src: str) -> str:
6895
6913
  if not isinstance(src, str):
6896
6914
  return ""
6897
6915
  result: str = src.upper()
6898
6916
  return result
6917
+ bara_case =\
6918
+ banao_bara_case =\
6919
+ banao_upper_case =\
6920
+ upper
6899
6921
  def isupper(src: str) -> bool:
6900
6922
  if not isinstance(src, str):
6901
6923
  return False
6902
6924
  return src.isupper()
6903
6925
  is_upper = isupper
6926
+ he_bara_case =\
6927
+ he_upper_case =\
6928
+ isupper
6904
6929
  def lower(src: str) -> str:
6905
6930
  if not isinstance(src, str):
6906
6931
  return ""
6907
6932
  result: str = src.lower()
6908
6933
  return result
6934
+ chota_case =\
6935
+ banao_chota_case =\
6936
+ banao_lower_case =\
6937
+ lower
6909
6938
  def islower(src: str) -> bool:
6910
6939
  if not isinstance(src, str):
6911
6940
  return False
6912
6941
  return src.islower()
6913
6942
  is_lower = islower
6943
+ he_chota_case =\
6944
+ he_lower_case =\
6945
+ islower
6914
6946
  def snake_case(src: str) -> str:
6915
6947
  if not isinstance(src, str):
6916
6948
  return ""
@@ -6923,32 +6955,39 @@ def snake_case(src: str) -> str:
6923
6955
  result = result.upper()
6924
6956
  return result
6925
6957
  snakecase = snake_case
6958
+ banao_snake_case = snake_case
6926
6959
  def is_snake_case(src: str) -> bool:
6927
6960
  if not isinstance(src, str):
6928
6961
  return False
6929
6962
  return src == snake_case(src)
6930
6963
  issnakecase = is_snakecase = is_snake_case
6964
+ he_snake_case = is_snake_case
6931
6965
  def title_case(src: str) -> str:
6932
6966
  if not isinstance(src, str):
6933
6967
  return ""
6934
6968
  result: str = src.title()
6935
6969
  return result
6970
+ titlecase = title_case
6971
+ banao_title_case = title_case
6936
6972
  def is_title_case(src: str) -> bool:
6937
6973
  if not isinstance(src, str):
6938
6974
  return False
6939
6975
  return src.istitle()
6940
6976
  istitle = is_title = istitlecase = is_titlecase = is_title_case
6977
+ he_title_case = is_title_case
6941
6978
  def sentence_case(src: str) -> str:
6942
6979
  if not isinstance(src, str):
6943
6980
  return ""
6944
6981
  result: str = src.capitalize()
6945
6982
  return result
6946
- sentcase = sent_case = sentence_case
6983
+ sentcase = sent_case = sentencecase = sentence_case
6984
+ banao_sentence_case = sentence_case
6947
6985
  def is_sentence_case(src: str) -> bool:
6948
6986
  if not isinstance(src, str):
6949
6987
  return False
6950
6988
  return src == sentence_case(src)
6951
6989
  issentcase = is_sentcase = is_sent_case = issentencecase = is_sentencecase = is_sentence_case
6990
+ he_sentence_case = is_sentence_case
6952
6991
  class Money:
6953
6992
  def __init__(self, amount=0, currency="Rs. "):
6954
6993
  self.amount = amount if amount >= 0 else 0
@@ -7818,4 +7857,5 @@ if __name__ == "__main__":
7818
7857
  print(([5, 2, 5] + arr).append([[15]]))
7819
7858
  lst = numlist("", "6.3", None).append(['5.5'])
7820
7859
  print("last removed:", lst.nikalo(6.3, 4, 2, [[[[[5.5]]]]]))
7821
- print(lst)
7860
+ print(lst)
7861
+ print(ki_shurwat(["hello", "world", "over-driven cars"], "hello"))
@@ -266,7 +266,7 @@ def translate_for_jupyter(code: str) -> None:
266
266
  # remove multi-line comments
267
267
  # single-line comments will be gotten rid of later
268
268
  # FOR A BIG REASON (being settings can contains hashes --- # --- too)
269
- multi_line_comments: list[str] = re.findall(r"(?:\= *[kflerb]*)?[\"\']{3}[\s\S]*?[\"\']{3}", code)
269
+ multi_line_comments: list[str] = re.findall(r"(?:\= *[kflerbRxim]*)?[\"\']{3}[\s\S]*?[\"\']{3}", code)
270
270
  # *? is used for LAZY matching (matching only one match at a time)
271
271
  # it's better if you DO NOT TOUCH THE REGEX
272
272
  for multi_line_comment in multi_line_comments:
@@ -282,7 +282,7 @@ def translate_for_jupyter(code: str) -> None:
282
282
  processed_multi_line_comment = re.sub("[^\n]*\n[^\n]*", "\n", processed_multi_line_comment)
283
283
  code = code.replace(unprocessed_multi_line_comment, processed_multi_line_comment, 1)
284
284
  # Remove strings (actual strings, now that multi-line comments are GONE)
285
- strings: list[str] = find_matches(code, r"(?<![\"\\])[kflerb]*(?:\"{3}|\"{1})[^\"]*(?:\"{1}|\"{3})(?!\")") + find_matches(code, r"(?<![\'\\])[kflerb]*(?:\'{1}|\'{3})[^\'\"]*(?:\'{1}|\'{3})(?!\')")
285
+ strings: list[str] = find_matches(code, r"(?<![\"\\])[kflerbRxim]*(?:\"{3}|\"{1})[^\"]*(?:\"{1}|\"{3})(?!\")") + find_matches(code, r"(?<![\'\\])[kflerbRxim]*(?:\'{1}|\'{3})[^\'\"]*(?:\'{1}|\'{3})(?!\')")
286
286
  # added partial support for apostrophe strings (strings initiated with an apostrophe, rather than quotes)
287
287
  for i, string in old_enumerate(strings):
288
288
  # for it to work,
@@ -294,17 +294,42 @@ def translate_for_jupyter(code: str) -> None:
294
294
  was_multi_line_string_initially: bool = False
295
295
  was_l_string_initially: bool = False
296
296
  was_b_string_initially: bool = False
297
- if re.search(r"^[\"\']{3}(?=[\s\S]+)", strings[i]):
298
- strings[i] = strings[i][2:-2].replace("\n", "\\n")
299
- was_multi_line_string_initially = True
300
- if re.search("(?:(?<=^[A-Za-z])[kf]+|^[kf]+)(?=[A-Za-z]*[\"\'])", strings[i]):
301
- strings[i] = replace(strings[i], "(?:(?<=^[A-Za-z])[kf]+|^[kf]+)(?=[A-Za-z]*[\"\'])", "")
297
+ was_regex_x_string_initially: bool = False
298
+ was_i_string_initially: bool = False
299
+ was_regex_m_string_initially: bool = False
300
+ def clear_kf_from_front() -> str:
301
+ if re.search(
302
+ "(?:(?<=^[A-Za-z])[kf]+|^[kf]+)(?=[A-Za-z]*[\"\'])",
303
+ strings[i]
304
+ ):
305
+ strings[i] = replace(
306
+ strings[i],
307
+ "(?:(?<=^[A-Za-z])[kf]+|^[kf]+)(?=[A-Za-z]*[\"\'])",
308
+ ""
309
+ )
310
+ clear_kf_from_front()
311
+ if re.search("(?:(?<=^[A-Za-z])[xR]+|^[xR]+)(?=[A-Za-z]*[\"\'])", strings[i]):
312
+ strings[i] = replace(strings[i], "(?:(?<=^[A-Za-z])[xR]+|^[xR]+)(?=[A-Za-z]*[\"\'])", "")
313
+ was_regex_x_string_initially = True
314
+ was_l_string_initially = True
315
+ if re.search("(?:(?<=^[A-Za-z])i+|^i+)(?=[A-Za-z]*[\"\'])", strings[i]):
316
+ strings[i] = replace(strings[i], "(?:(?<=^[A-Za-z])i+|^i+)(?=[A-Za-z]*[\"\'])", "")
317
+ was_i_string_initially = True
318
+ if re.search("(?:(?<=^[A-Za-z])m+|^m+)(?=[A-Za-z]*[\"\'])", strings[i]):
319
+ strings[i] = replace(strings[i], "(?:(?<=^[A-Za-z])m+|^m+)(?=[A-Za-z]*[\"\'])", "")
320
+ was_regex_m_string_initially = True
321
+ clear_kf_from_front()
302
322
  if re.search("(?:(?<=^[A-Za-z])[ler]+|^[ler]+)(?=[A-Za-z]*[\"\'])", strings[i]):
303
323
  strings[i] = replace(strings[i], "(?:(?<=^[A-Za-z])[ler]+|^[ler]+)(?=[A-Za-z]*[\"\'])", "")
304
324
  was_l_string_initially = True
305
- if re.search("(?:(?<=^[A-Za-z])b|^b)(?=[A-Za-z]*[\"\'])", strings[i]):
306
- strings[i] = replace(strings[i], "(?:(?<=^[A-Za-z])b|^b)(?=[A-Za-z]*[\"\'])", "")
325
+ if re.search("(?:(?<=^[A-Za-z])b+|^b+)(?=[A-Za-z]*[\"\'])", strings[i]):
326
+ strings[i] = replace(strings[i], "(?:(?<=^[A-Za-z])b+|^b+)(?=[A-Za-z]*[\"\'])", "")
307
327
  was_b_string_initially = True
328
+ if re.search(r"^[\"\']{3}(?=[\s\S]+)", strings[i]):
329
+ # must appear
330
+ # at last
331
+ strings[i] = strings[i][2:-2].replace("\n", "\\n")
332
+ was_multi_line_string_initially = True
308
333
  strings[i] = strings[i][1:-1]
309
334
  if len(strings[i]) == 1:
310
335
  # safety: let single characters pass through
@@ -359,66 +384,72 @@ def translate_for_jupyter(code: str) -> None:
359
384
  r"(?<=\w) k[aei] (?=\w)",
360
385
  "."
361
386
  )
362
- strings[i] = replace(
363
- strings[i],
364
- re.escape(
365
- templt
366
- ),
367
- processed_templt
368
- ) # escaping here is mandatory
369
- # NOTE: the RE.ESCAPE part here, is NECESSARY
370
- # and allows template strings like "${2+3 he}", "${a+b he}"
371
- strings[i] = replace(strings[i], r"(?<=\S\.)\b_cl(?:as)?s_?name\b", "__class__.__name__")
372
- strings[i] = replace(strings[i], r"(?<=\S\.)\b_cl(?:as)?s\b", "__class__")
387
+ processed_templt = replace(processed_templt, r"\b(?:this|its?|mer[aie]|khud(?:[_ ]?k[aeio])?(?! *[A-Za-z_]))\b", "self")
388
+ processed_templt = replace(processed_templt, r"\b(?:super|mom|parent)(?! *\()\b", "super()")
389
+ processed_templt = replace(processed_templt, r"(?<=\S )\bplu?s\b(?= *[^\(\:\s])", "+")
390
+ processed_templt = replace(processed_templt, r"(?<=\S )\bmi?nu?s\b(?= *[^\(\:\s])", "-")
391
+ processed_templt = replace(processed_templt, r"(?<=\S )\b(?:guna|dafa|baar|marta?ba)\b(?= *[^\(\:\s])", "*")
392
+ processed_templt = replace(processed_templt, r"(?<=\S )\bdiv\b(?= *[^\(\:\s])", "/")
393
+ processed_templt = replace(processed_templt, r"(?<=\S\.)\b_cl(?:as)?s_?name\b", "__class__.__name__")
394
+ processed_templt = replace(processed_templt, r"(?<=\S\.)\b_cl(?:as)?s\b", "__class__")
373
395
  # readable index access
374
396
  # sequence MATTERS
375
397
  # sequence is the only thing holding it together
376
- strings[i] = replace(strings[i], r"\[\.?(?:ba{1,2}d *\:?|har) *(?<step>\-?\d+(?:[\+\-\*\/]*\d*)+)(?: ?(?:ke[_ ])?ba{1,2}d)?[ _\/\-]\d+\]", "[::$step]")
398
+ processed_templt = replace(processed_templt, r"\[\.?(?:ba{1,2}d *\:?|har) *(?<step>\-?\d+(?:[\+\-\*\/]*\d*)+)(?: ?(?:ke[_ ])?ba{1,2}d)?[ _\/\-]\d+\]", "[::$step]")
377
399
  # SUPPOSED TO COME FIRST
378
400
  # and then the following line:
379
- strings[i] = replace(strings[i], r"\[\.?b(?:a(?:a?d|ger)|ina)(?: (?:pehl[ae]|shurwa{1,2}ti))? (?<start>\d+(?:[\+\-\*\/]*\d*)+)(?:st|nd|rd|h?l[ae]|th|th?[ae]|s?r[ae]|w[ae])?(?:,? +(?:\d+ )?baad (?<step>\w+(?:[\+\-\*\/]*\d*)+) *[ \/\-] *\w+(?:[\+\-\*\/]*\d*))?\]", "[$start::$step]")
380
- strings[i] = replace(strings[i], r"\[\.?(?<n>\d+(?:[\+\-\*\/]*\d*)+)(?:st|nd|rd|h?l[ae]|th|th?[ae]|s?r[ae]|w[ae])(?: se)? (?:(?:l(?:e(?:ke|n(?:gth)?)|ambai)|size)(?: a{1,2}kh(?:ir|ri)(?: tak)?)?|a{1,2}kh(?:ir|ri)(?: tak)) *(?<stop>\-\d+)? *(?:tak *)?(?:,? +(?:\d+ )?baad (?<step>\w+(?:[\+\-\*\/]*\d*)+) *[ \/\-] *\w+(?:[\+\-\*\/]*\d*))?\]", "[$n-1:$stop:$step]")
381
- strings[i] = replace(strings[i], r"\[\.?b(?:ager|ina) (?:last|akhri)(?:,? +(?:\d+ )?baad (?<step>\w+(?:[\+\-\*\/]*\d*)+) *[ \/\-] *\w+(?:[\+\-\*\/]*\d*))?\]", "[:-1:$step]")
382
- strings[i] = replace(strings[i], r"\[\.?b(?:ager|ina) (?:last|akhri) (?<stop>\-?\d+(?:[\+\-\*\/]*\d*)+)(?:st|nd|rd|h?l[ae]|th|th?[ae]|s?r[ae]|w[ae])?(?:,? +(?:\d+ )?baad (?<step>\w+(?:[\+\-\*\/]*\d*)+) *[ \/\-] *\w+(?:[\+\-\*\/]*\d*))?\]", "[:-abs($stop):$step]")
401
+ processed_templt = replace(processed_templt, r"\[\.?b(?:a(?:a?d|ger)|ina)(?: (?:pehl[ae]|shurwa{1,2}ti))? (?<start>\d+(?:[\+\-\*\/]*\d*)+)(?:st|nd|rd|h?l[ae]|th|th?[ae]|s?r[ae]|w[ae])?(?:,? +(?:\d+ )?baad (?<step>\w+(?:[\+\-\*\/]*\d*)+) *[ \/\-] *\w+(?:[\+\-\*\/]*\d*))?\]", "[$start::$step]")
402
+ processed_templt = replace(processed_templt, r"\[\.?(?<n>\d+(?:[\+\-\*\/]*\d*)+)(?:st|nd|rd|h?l[ae]|th|th?[ae]|s?r[ae]|w[ae])(?: se)? (?:(?:l(?:e(?:ke|n(?:gth)?)|ambai)|size)(?: a{1,2}kh(?:ir|ri)(?: tak)?)?|a{1,2}kh(?:ir|ri)(?: tak)) *(?<stop>\-\d+)? *(?:tak *)?(?:,? +(?:\d+ )?baad (?<step>\w+(?:[\+\-\*\/]*\d*)+) *[ \/\-] *\w+(?:[\+\-\*\/]*\d*))?\]", "[$n-1:$stop:$step]")
403
+ processed_templt = replace(processed_templt, r"\[\.?b(?:ager|ina) (?:last|akhri)(?:,? +(?:\d+ )?baad (?<step>\w+(?:[\+\-\*\/]*\d*)+) *[ \/\-] *\w+(?:[\+\-\*\/]*\d*))?\]", "[:-1:$step]")
404
+ processed_templt = replace(processed_templt, r"\[\.?b(?:ager|ina) (?:last|akhri) (?<stop>\-?\d+(?:[\+\-\*\/]*\d*)+)(?:st|nd|rd|h?l[ae]|th|th?[ae]|s?r[ae]|w[ae])?(?:,? +(?:\d+ )?baad (?<step>\w+(?:[\+\-\*\/]*\d*)+) *[ \/\-] *\w+(?:[\+\-\*\/]*\d*))?\]", "[:-abs($stop):$step]")
383
405
  # reversing
384
- strings[i] = replace(strings[i], r"\[\.?(?:k[aeio]\:?[_ ])?(?:ula?t[ai]?|rev(?:er(?:se)?)?[dt]?)\]", "[::-1]")
406
+ processed_templt = replace(processed_templt, r"\[\.?(?:k[aeio]\:?[_ ])?(?:ula?t[ai]?|rev(?:er(?:se)?)?[dt]?)\]", "[::-1]")
385
407
  while SEMICOLON_SUBINDEX_ACCESSOR_RE_COMPILED\
386
- .search(strings[i]):
387
- strings[i] = replace(
388
- strings[i],
408
+ .search(processed_templt):
409
+ processed_templt = replace(
410
+ processed_templt,
389
411
  SEMICOLON_SUBINDEX_ACCESSOR_RE,
390
412
  "${first_index}][${second_index}${rest}"
391
413
  )
392
- strings[i] = replace(
393
- strings[i],
414
+ processed_templt = replace(
415
+ processed_templt,
394
416
  r"(?<=\w) *\:\:(?!\s*\()([^\n]*)",
395
417
  "($1)"
396
418
  )
397
419
  # number-based mid slicing (rather than index-based)
398
420
  # comes before
399
- strings[i] = replace(strings[i], r"\[\.?(?:da?rmya{0,2}n|beech)? *\:? *(?<start>\-?\d+)(?:st|nd|rd|h?l[ae]|th|th?[ae]|s?r[ae]|w[ae])(?:[,:~\-]| *(?:se|aur)?) *(?<stop>\-?\d+)(?:st|nd|rd|h?la|th|th?a|s?ra|wa)?(?:[, ]*(?:akhri )?(?:chor[_ ]?k?e|b(?:ina|a?ge?r))(?: akhri)?)(?:,? +(?:\d+ )?baad (?<step>\w+(?:[\+\-\*\/]*\d*)+) *[ \/\-] *\w+(?:[\+\-\*\/]*\d*))?\]", "[$start-1 if $start > 0 else $start:$stop-1 if $stop > 0 else $stop:$step]")
421
+ processed_templt = replace(processed_templt, r"\[\.?(?:da?rmya{0,2}n|beech)? *\:? *(?<start>\-?\d+)(?:st|nd|rd|h?l[ae]|th|th?[ae]|s?r[ae]|w[ae])(?:[,:~\-]| *(?:se|aur)?) *(?<stop>\-?\d+)(?:st|nd|rd|h?la|th|th?a|s?ra|wa)?(?:[, ]*(?:akhri )?(?:chor[_ ]?k?e|b(?:ina|a?ge?r))(?: akhri)?)(?:,? +(?:\d+ )?baad (?<step>\w+(?:[\+\-\*\/]*\d*)+) *[ \/\-] *\w+(?:[\+\-\*\/]*\d*))?\]", "[$start-1 if $start > 0 else $start:$stop-1 if $stop > 0 else $stop:$step]")
400
422
  # comes after {similar, but different:}
401
- strings[i] = replace(strings[i], r"\[\.?(?:da?rmya{0,2}n|beech)? *\:? *(?<start>\-?\d+)(?:st|nd|rd|h?l[ae]|th|th?[ae]|s?r[ae]|w[ae])(?:[,:~\-]| *(?:se|aur)?) *(?<stop>\-?\d+)(?:st|nd|rd|h?la|th|th?a|s?ra|wa)?(?:[, ]*(?:akhri )?(?:rakhe|sha{1,2}mil|shuma{1,2}r|mila{1,2}k?e|(?:ke[_ ]?)?sath)(?: akhri)?)?(?:,? +(?:\d+ )?baad (?<step>\w+(?:[\+\-\*\/]*\d*)+) *[ \/\-] *\w+(?:[\+\-\*\/]*\d*))?\]", "[$start-1 if $start > 0 else $start:$stop:$step]")
402
- strings[i] = replace(strings[i], r"\[\.?(?:(?:se|f(?:ir)?st|pehl(?:e|a))(?:[_ ]ke)?|shuru?(?:[_ ][smk]e|wa{1,2}ti)) *[\: ] *(?<stop>\d+)(?: tak)?(?:,? +(?:\d+ )?baad (?<step>\w+(?:[\+\-\*\/]*\d*)+) *[ \/\-] *\w+(?:[\+\-\*\/]*\d*))?\]", "[:$stop:$step]")
423
+ processed_templt = replace(processed_templt, r"\[\.?(?:da?rmya{0,2}n|beech)? *\:? *(?<start>\-?\d+)(?:st|nd|rd|h?l[ae]|th|th?[ae]|s?r[ae]|w[ae])(?:[,:~\-]| *(?:se|aur)?) *(?<stop>\-?\d+)(?:st|nd|rd|h?la|th|th?a|s?ra|wa)?(?:[, ]*(?:akhri )?(?:rakhe|sha{1,2}mil|shuma{1,2}r|mila{1,2}k?e|(?:ke[_ ]?)?sath)(?: akhri)?)?(?:,? +(?:\d+ )?baad (?<step>\w+(?:[\+\-\*\/]*\d*)+) *[ \/\-] *\w+(?:[\+\-\*\/]*\d*))?\]", "[$start-1 if $start > 0 else $start:$stop:$step]")
424
+ processed_templt = replace(processed_templt, r"\[\.?(?:(?:se|f(?:ir)?st|pehl(?:e|a))(?:[_ ]ke)?|shuru?(?:[_ ][smk]e|wa{1,2}ti)) *[\: ] *(?<stop>\d+)(?: tak)?(?:,? +(?:\d+ )?baad (?<step>\w+(?:[\+\-\*\/]*\d*)+) *[ \/\-] *\w+(?:[\+\-\*\/]*\d*))?\]", "[:$stop:$step]")
403
425
  # ^ e.g. "hello world"[.first4] -> "hell"
404
- strings[i] = replace(strings[i], r"\[\.?(?:ba{1,2}d )?(?:la?st|akhri|akhir)(?:[_ ]?[smk]e)? *[\: ] *(?<right_start>\d+)(?:,? +(?:\d+ )?baad (?<step>\w+(?:[\+\-\*\/]*\d*)+) *[ \/\-] *\w+(?:[\+\-\*\/]*\d*))?\]", "[-$right_start::$step]")
426
+ processed_templt = replace(processed_templt, r"\[\.?(?:ba{1,2}d )?(?:la?st|akhri|akhir)(?:[_ ]?[smk]e)? *[\: ] *(?<right_start>\d+)(?:,? +(?:\d+ )?baad (?<step>\w+(?:[\+\-\*\/]*\d*)+) *[ \/\-] *\w+(?:[\+\-\*\/]*\d*))?\]", "[-$right_start::$step]")
405
427
  # ^ e.g. "hello world"[.last:?4] -> "orld"
406
- strings[i] = replace(strings[i], r"\[(?:\.?(?:f(?:ir)?st|pehla)|\.?1(?:st|h?la))\]", "[0]")
428
+ processed_templt = replace(processed_templt, r"\[(?:\.?(?:f(?:ir)?st|pehla)|\.?1(?:st|h?la))\]", "[0]")
407
429
  # ^ e.g. "hello world"[.1st] -> "h"
408
- strings[i] = replace(strings[i], r"\[(?:\.?(?:sec(?:o|d|o?nd?)?|d(?:u|oo)sra)|\.?2(?:nd|s?ra))\]", "[1]")
430
+ processed_templt = replace(processed_templt, r"\[(?:\.?(?:sec(?:o|d|o?nd?)?|d(?:u|oo)sra)|\.?2(?:nd|s?ra))\]", "[1]")
409
431
  # ^ e.g. "hello world"[.second] -> "e"
410
- strings[i] = replace(strings[i], r"\[(?:\.?(?:th(?:i|d|i?rd?)|t(?:i|ee)sra)|\.?3(?:rd|s?ra))\]", "[2]")
432
+ processed_templt = replace(processed_templt, r"\[(?:\.?(?:th(?:i|d|i?rd?)|t(?:i|ee)sra)|\.?3(?:rd|s?ra))\]", "[2]")
411
433
  # ^ e.g. "hello world"[.third] -> "l"
412
- strings[i] = replace(strings[i], r"\[\.?(?:(?:f(?:ir)?st|shuru?(?:wat)?(?:[_ ]?(?:i|(?:k|wal)a|me))?|n)\:)?(?<n>\d+)(?:st|nd|rd|h?la|th|th?a|s?ra|wa)\]", "[$n-1]")
413
- strings[i] = replace(strings[i], r"\[\.?(?:la?st|a{1,2}kh(?:ir|ri)(?:[_ ]?(?:(?:k|wal)a|[sm]e))?|\-n) *\:? *(?<n>\d+)(?:st|nd|rd|h?la|th|th?a|s?ra|wa)\]", "[-$n]")
434
+ processed_templt = replace(processed_templt, r"\[\.?(?:(?:f(?:ir)?st|shuru?(?:wat)?(?:[_ ]?(?:i|(?:k|wal)a|me))?|n)\:)?(?<n>\d+)(?:st|nd|rd|h?la|th|th?a|s?ra|wa)\]", "[$n-1]")
435
+ processed_templt = replace(processed_templt, r"\[\.?(?:la?st|a{1,2}kh(?:ir|ri)(?:[_ ]?(?:(?:k|wal)a|[sm]e))?|\-n) *\:? *(?<n>\d+)(?:st|nd|rd|h?la|th|th?a|s?ra|wa)\]", "[-$n]")
414
436
  # ^ catches arr[akhri:4tha]
415
- strings[i] = replace(strings[i], r"\[\.?(?<n>\d+)(?:st|nd|rd|h?la|th|th?a|s?ra|wa) (?:la?st|a{1,2}kh(?:ir|ri)(?:[_ ]?(?:(?:k|wal)a|[sm]e))?)\]", "[-$n]")
437
+ processed_templt = replace(processed_templt, r"\[\.?(?<n>\d+)(?:st|nd|rd|h?la|th|th?a|s?ra|wa) (?:la?st|a{1,2}kh(?:ir|ri)(?:[_ ]?(?:(?:k|wal)a|[sm]e))?)\]", "[-$n]")
416
438
  # ^ catches arr[4tha akhri], same functionality, too different allowed orders for convenience
417
- strings[i] = replace(strings[i], r"\[(?:(?:(?:\.th(?:i|d|i?rd?))[_ ]?la?st)|\.?[t3](?:i|ee)?(?:s?ra|rd)[_ ]?(?:a{1,2}khri|la?st))\]", "[-3]")
439
+ processed_templt = replace(processed_templt, r"\[(?:(?:(?:\.th(?:i|d|i?rd?))[_ ]?la?st)|\.?[t3](?:i|ee)?(?:s?ra|rd)[_ ]?(?:a{1,2}khri|la?st))\]", "[-3]")
418
440
  # ^ e.g. "hello world"[.third] -> "l"
419
- strings[i] = replace(strings[i], r"\[(?:(?:(?:\.sec(?:o|d|o?nd?)?|2nd)[_ ]?la?st)|\.?[d2](?:u|oo)?(?:s?ra|nd)[_ ]?(?:a{1,2}khri|la?st))\]", "[-2]")
441
+ processed_templt = replace(processed_templt, r"\[(?:(?:(?:\.sec(?:o|d|o?nd?)?|2nd)[_ ]?la?st)|\.?[d2](?:u|oo)?(?:s?ra|nd)[_ ]?(?:a{1,2}khri|la?st))\]", "[-2]")
420
442
  # ^ e.g. "hello world"[.secondlast] -> "s"
421
- strings[i] = replace(strings[i], r"\[\.?(?:(?:f(?:ir)?st|pehla)|1(?:st|h?la))?[_ ]?(?:\.?(?:la?st|a{1,2}khri))\]", "[-1]")
443
+ processed_templt = replace(processed_templt, r"\[\.?(?:(?:f(?:ir)?st|pehla)|1(?:st|h?la))?[_ ]?(?:\.?(?:la?st|a{1,2}khri))\]", "[-1]")
444
+ strings[i] = replace(
445
+ strings[i],
446
+ re.escape(
447
+ templt
448
+ ),
449
+ processed_templt
450
+ ) # escaping here is mandatory
451
+ # NOTE: the RE.ESCAPE part here, is NECESSARY
452
+ # and allows template strings like "${2+3 he}", "${a+b he}"
422
453
  strings[i] = replace(strings[i], r"(?<=\<)class(?= [\"\'][A-Za-z_][\w\.]*[\"\']\>)", "kism:")
423
454
  strings[i] = replace(strings[i], r"(?<=\<)enum (?<name_of_enum>[\"\'][A-Za-z_][\w\.]*[\"\'])(?=\>)", "kism: Enum[$name_of_enum]")
424
455
  # ^ meaning <class 'int'> SHOULD BE <kism 'int'>
@@ -433,12 +464,6 @@ def translate_for_jupyter(code: str) -> None:
433
464
  strings[i] = replace(strings[i], r"\bNone\b", "koi_na")
434
465
  strings[i] = replace(strings[i], r"\bTrue\b", "Han")
435
466
  strings[i] = replace(strings[i], r"\bFalse\b", "Nahi")
436
- strings[i] = replace(strings[i], r"\b(?:this|its?|mer[aie]|khud(?:[_ ]?k[aeio])?(?! *[A-Za-z_]))\b", "self")
437
- strings[i] = replace(strings[i], r"\b(?:super|mom|parent)(?! *\()\b", "super()")
438
- strings[i] = replace(strings[i], r"(?<=\S )\bplu?s\b(?= *[^\(\:\s])", "+")
439
- strings[i] = replace(strings[i], r"(?<=\S )\bmi?nu?s\b(?= *[^\(\:\s])", "-")
440
- strings[i] = replace(strings[i], r"(?<=\S )\b(?:guna|dafa|baar|marta?ba)\b(?= *[^\(\:\s])", "*")
441
- strings[i] = replace(strings[i], r"(?<=\S )\bdiv\b(?= *[^\(\:\s])", "/")
442
467
  # the #### part helps get rid of a bug
443
468
  # this replaces previously removed {formatted_var} functionality with new $-based functionality
444
469
  # WARNING: r"{$1}####" should be as is
@@ -453,13 +478,59 @@ def translate_for_jupyter(code: str) -> None:
453
478
  # if the `l"{{content}}"` handle is used
454
479
  strings[i] = old_string
455
480
  # ^^mandatory step
456
- strings[i] = replace(strings[i], "(?:(?<=^[A-Za-z])[ler]+|^[ler]+)(?=[A-Za-z]*[\"\'])", "")
481
+ strings[i] = replace(strings[i], "(?:(?<=^[A-Za-z])[lerRxim]+|^[lerRxim]+)(?=[A-Za-z]*[\"\'])", "")
457
482
  strings[i] = replace(strings[i], "(?:(?<=^[A-Za-z])[kf]+|^[kf]+)(?=[A-Za-z]*[\"\'])", "f")
458
483
  # now that the string is back to being its original version
459
484
  # ^ this replacement has to
460
485
  # take place again
486
+ strings[i] = replace(
487
+ strings[i],
488
+ r"^[im]+(?=[A-Za-z]*[\"\'])|(?<=^[kfler])[im]+(?=[A-Za-z]*[\"\'])",
489
+ ""
490
+ )
461
491
  if was_b_string_initially:
462
492
  strings[i] = old_string
493
+ strings[i] = replace(strings[i], "(?:(?<=^[A-Za-z])[lerRxim]+|^[lerRxim]+)(?=[A-Za-z]*[\"\'])", "")
494
+ strings[i] = replace(strings[i], "(?:(?<=^[A-Za-z])[kf]+|^[kf]+)(?=[A-Za-z]*[\"\'])", "")
495
+ strings[i] = replace(
496
+ strings[i],
497
+ r"(?<=^b)[kflerb]+(?=[A-Za-z]*[\"\'])|(?<=^[kflerb]|b)b+(?=[A-Za-z]*[\"\'])",
498
+ ""
499
+ )
500
+ elif was_regex_x_string_initially:
501
+ strings[i] = replace(
502
+ strings[i],
503
+ r"^[im]+(?=[A-Za-z]*[\"\'])|(?<=^[kfler])[im]+(?=[A-Za-z]*[\"\'])",
504
+ ""
505
+ )
506
+ strings[i] = f"re.compile({strings[i]}"
507
+ if any(f for f in [was_i_string_initially, was_regex_m_string_initially]):
508
+ strings[i] += ", flags="
509
+ if was_i_string_initially:
510
+ # [xR]i""
511
+ # MUST be
512
+ # IN ITS OWN
513
+ # block
514
+ strings[i] += "re.IGNORECASE | "
515
+ if was_regex_m_string_initially:
516
+ # [xR]m""
517
+ # MUST be
518
+ # IN ITS OWN
519
+ # block
520
+ strings[i] += "re.MULTILINE | "
521
+ strings[i] = strings[i].rstrip("| ")
522
+ strings[i] += ")"
523
+ elif was_i_string_initially:
524
+ # should come
525
+ # at the last
526
+ # and stay
527
+ # an elif block
528
+ strings[i] = replace(
529
+ strings[i],
530
+ r"^[im]+(?=[A-Za-z]*[\"\'])|(?<=^[kfler])[im]+(?=[A-Za-z]*[\"\'])",
531
+ ""
532
+ )
533
+ strings[i] = strings[i].lower()
463
534
  # auto-escape bad escapes (EXCEPT SPECIAL CHARACTERS LIKE newline \n, tabbreak \t, return carriage \r, backspace \b, vertical space \v, ASCII bell \a, form feed \f, escaped backslash \\, escaped quote \", escaped apostrophe \', among others.)
464
535
  # kill the need for r-strings
465
536
  # completely
@@ -2408,7 +2479,13 @@ arr kism<tuple[3d]> = [
2408
2479
  ]
2409
2480
  kaho x[0;1;2]
2410
2481
 
2411
- age &kism = int
2482
+ age &kism = haal
2483
+ pygame mese mangao mixer
2484
+ mangao mixer pygame mese
2485
+
2486
+ agar x"hey {'worlD'}".search("hey world"):
2487
+ test = l\"\"\"hello
2488
+ worlD\"\"\"
2412
2489
  """
2413
2490
  )
2414
2491
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: KL_Py
3
- Version: 0.5.4
3
+ Version: 0.5.5
4
4
  Summary: A Python simplification module
5
5
  Author-email: Abbaskhurram255 <abbaskhurram255@gmail.com>
6
6
  Classifier: Programming Language :: Python :: 3
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes