Atlal / complete.py
mghareeb32's picture
Some UI changes.
6b7dfd8
from wisdom_extract import allam
import garood
from concurrent.futures import ThreadPoolExecutor, as_completed
_log_file = None
def print(txt=""):
global _log_file
if _log_file is None:
_log_file = open("complete.tmp", "w")
_log_file.write(f"{txt}\n")
_log_file.flush()
def suggest(input):
resp = allam("allam/akmil.txt", {"input": input})
poss = []
for line in resp.split("\n"):
if not line.startswith("- "): continue
verse = line[2:].strip()
if len(verse) <= len(input): continue
poss.append(verse)
return poss
def shakkil(p):
return allam("allam/shakl.txt", {"input": p}).strip()
def gen(input):
print("SUGGESTING...")
poss = set()
with ThreadPoolExecutor(max_workers=16) as executor:
futures = [
executor.submit(suggest, input)
for _ in range(5)
]
for future in as_completed(futures):
for p in future.result(): poss.add(p)
print("\n".join(poss))
return poss
def shakk(poss):
print("TASHKEELING...")
pshak = []
with ThreadPoolExecutor(max_workers=16) as executor:
futures = [
executor.submit(shakkil, p)
for p in poss
]
for future in as_completed(futures):
pshak.append(future.result())
print("\n".join(pshak))
return pshak
def filter(pshak):
print(f"EVALUATING...")
BH = garood.config()['bahr']['kamil_1']
for p in pshak:
EN, HR = garood.en_gen_enhr(garood.ar_gen_en(p))
c, s = garood.bh_gen_best(BH, EN, HR, True)
g = garood.state_to_str(s, EN)
if c >= 0: yield (c, p, s, g)
if __name__ == "__main__":
pshak =\
"""
ู‡ูŽู„ู’ ุณูŽุงู…ูŽุฑูŽ ุงู„ู’ุฃูŽุตู’ุญูŽุงุจูŽ ูููŠ ุฏูŽุงุฑูŽุฉู
ู‡ูŽู„ู’ ุณูŽุงู…ูŽุฑูŽ ุงู„ู’ุฃูŽุตู’ุญูŽุงุจูŽ ูููŠ ุญูุจู‘ู ุงู„ู†ู‘ูŽุจููŠ
ู‡ูŽู„ู’ ุณูŽุงู…ูŽุฑ ุงู„ู’ุฃูŽุตู’ุญูŽุงุจูŽ ูููŠ ูƒูู„ู‘ู ู…ูŽุนู’ู‚ูู„ู
ู‡ูŽู„ู’ ุณูŽุงู…ูŽุฑูŽ ุงู„ู’ุฃูŽุตู’ุญูŽุงุจูŽ ูููŠ ู…ูŽุญู’ููู„ู
ู‡ูŽู„ู’ ุณูŽุงู…ูŽุฑูŽ ุงู„ู’ุฃูŽุตู’ุญูŽุงุจูŽ ูููŠ ุฑูŽู…ู’ู„ู ุฏูŽุงุฑูุณูุŸ
ู‡ูŽู„ู’ ุณูŽุงู…ูŽุฑูŽ ุงู„ู’ุฃูŽุตู’ุญูŽุงุจู ูููŠ ูƒูู„ู‘ู ู…ูŽุฑู’ุชูŽุนู
ู‡ูŽู„ู’ ุณูŽุงู…ูŽุฑูŽ ุงู„ู’ุฃูŽุตู’ุญูŽุงุจู ูููŠ ู…ูŽุฏู’ุญู ุงู„ู†ู‘ูŽุจููŠูู‘
ู‡ูŽู„ู’ ุณูŽุงู…ูŽุฑูŽ ุงู„ู’ุฃูŽุตู’ุญูŽุงุจูŽ ูููŠ ู†ูŽุดู’ุฑู ุงู„ู’ููŽุถูŽุง
ู‡ูŽู„ู’ ุณูŽุงู…ูŽุฑูŽ ุงู„ู’ุฃูŽุตู’ุญูŽุงุจู ูููŠ ู…ูŽุฏู’ุญู ุงู„ู’ุนูŽู„ูŽุง
ู‡ูŽู„ู’ ุณูŽุงู…ูŽุฑูŽ ุงู„ู’ุฃูŽุตู’ุญูŽุงุจูŽ ูููŠ ุงู„ู’ูˆูŽุงุฏููŠ ุงู„ุฑู‘ูŽุทู’ุจูุŸ
ู‡ูŽู„ู’ ุณูŽุงู…ูŽุฑูŽ ุงู„ู’ุฃูŽุตู’ุญูŽุงุจูŽ ูููŠ ู†ูŽุงุฏููŠ ุงู„ู’ุนูู„ูŽู‰
ู‡ูŽู„ู’ ุณูŽุงู…ูŽุฑูŽ ุงู„ู’ุฃูŽุตู’ุญูŽุงุจู ูููŠ ุฌูŽุจูŽู„ู ุตูŽุนู’ุจูุŸ
ู‡ูŽู„ู’ ุณูŽุงู…ูŽุฑูŽ ุงู„ู’ุฃูŽุตู’ุญูŽุงุจูŽ ูููŠ ู…ูŽุฌู’ู„ูุณู
ู‡ูŽู„ู’ ุณูŽุงู…ูŽุฑูŽ ุงู„ู’ุฃูŽุตู’ุญูŽุงุจู ูููŠ ุฃูŽุฑู’ุถู ุงู„ุณู‘ูŽู…ูŽุง
ู‡ูŽู„ู’ ุณูŽุงู…ูŽุฑูŽ ุงู„ู’ุฃูŽุตู’ุญูŽุงุจู ูููŠ ู†ูŽุงุฏููŠ ุงู„ู’ุญูŽูŠูู‘ุŸ
ู‡ูŽู„ู’ ุณูŽุงู…ูŽุฑูŽ ุงู„ู’ุฃูŽุตู’ุญูŽุงุจู ูููŠ ุณูŽูู’ุญู ุงู„ุซู‘ูŽุฑูŽู‰
ู‡ูŽู„ู’ ุณูŽุงู…ูŽุฑูŽ ุงู„ู’ุฃูŽุตู’ุญูŽุงุจู ูููŠ ู†ูŽุงุฏููŠู ุงู„ู’ู‡ูŽู†ูŽุง
ู‡ูŽู„ู’ ุณูŽุงู…ูŽุฑูŽ ุงู„ู’ุฃูŽุตู’ุญูŽุงุจู ูููŠ ุฎูŽูŠู’ุฑู ู…ูŽุดู’ู‡ูŽุฏู
ู‡ูŽู„ู’ ุณูŽุงู…ูŽุฑูŽ ุงู„ู’ุฃูŽุตู’ุญูŽุงุจู ูููŠ ู…ูŽุฏู’ุญู ุงู„ู’ูƒูŽุฑููŠู…ู
ู‡ูŽู„ู’ ุณูŽุงู…ูŽุฑูŽ ุงู„ู’ุฃูŽุตู’ุญูŽุงุจู ูููŠ ู…ูŽุฏู‘ู ุงู„ู’ูƒูŽุฑููŠู…ู
ู‡ูŽู„ู’ ุณูŽุงู…ูŽุฑูŽ ุงู„ู’ุฃูŽุตู’ุญูŽุงุจู ูููŠ ุฏูŽุนูŽุฉู ูˆูŽุฑูŽุงุญูŽุฉู
ู‡ูŽู„ู’ ุณูŽุงู…ูŽุฑูŽ ุงู„ู’ุฃูŽุตู’ุญูŽุงุจูŽ ูููŠ ู†ูŽุงุฏููŠ ุงู„ุฑู‘ูŽุจูŽู‰
ู‡ูŽู„ู’ ุณูŽุงู…ูŽุฑูŽ ุงู„ู’ุฃูŽุตู’ุญูŽุงุจูŽ ูููŠ ูƒูู„ู‘ู ู…ูุดู’ุฑูู‚ู
ู‡ูŽู„ู’ ุณูŽุงู…ูŽุฑูŽ ุงู„ู’ุฃูŽุตู’ุญูŽุงุจูŽ ูููŠ ุญูŽูŠูู‘ู‡ู
ู‡ูŽู„ู’ ุณูŽุงู…ูŽุฑูŽ ุงู„ู’ุฃูŽุตู’ุญูŽุงุจูŽ ูููŠ ูƒูู„ูู‘ ู…ูŽูˆู’ู‚ูุนู
ู‡ูŽู„ู’ ุณูŽุงู…ูŽุฑูŽ ุงู„ู’ุฃูŽุตู’ุญูŽุงุจูŽ ูููŠ ูƒูู„ู‘ู ู…ูู†ู’ุชูŽุฌูŽุนู
ู‡ูŽู„ู’ ุณูŽุงู…ูŽุฑูŽ ุงู„ู’ุฃูŽุตู’ุญูŽุงุจูŽ ูููŠ ูƒูู„ู‘ู ู…ูŽูˆู’ุณูู…ู
""".strip().split("\n")
input = "ู‚ุฏ ุณุงู…ุฑ ุงู„ุฃุตุญุงุจ ููŠ"
poss = gen(input)
pshak = shakk(poss)
for p, c, s, g in filter(pshak):
print(p)