promptflow

Форк
0
47 строк · 1.5 Кб
1
import io
2
import re
3
from pathlib import Path
4

5
import panflute
6
import pypandoc
7

8
from .readme_step import ReadmeStepsManage
9

10

11
def strip_comments(code):
12
    code = str(code)
13
    code = re.sub(r"(?m)^ *#.*\n?", "", code)  # remove comments
14
    splits = [ll.rstrip() for ll in code.splitlines() if ll.strip()]  # remove empty
15
    splits_no_interactive = [
16
        split
17
        for split in splits
18
        if "interactive" not in split
19
        and "pf flow serve" not in split
20
        and "pf connection delete" not in split
21
    ]  # remove --interactive and pf flow serve and pf export docker
22
    text = "\n".join([ll.rstrip() for ll in splits_no_interactive])
23
    # replacements
24
    text = text.replace("<your_api_key>", "$aoai_api_key")
25
    text = text.replace("<your_api_base>", "$aoai_api_endpoint")
26
    text = text.replace("<your_subscription_id>", "$test_workspace_sub_id")
27
    text = text.replace("<your_resource_group_name>", "$test_workspace_rg")
28
    text = text.replace("<your_workspace_name>", "$test_workspace_name")
29
    return text
30

31

32
def prepare(doc):
33
    doc.full_text = ""
34

35

36
def action(elem, doc):
37
    if isinstance(elem, panflute.CodeBlock) and "bash" in elem.classes:
38
        doc.full_text = "\n".join([doc.full_text, strip_comments(elem.text)])
39

40

41
def readme_parser(filename: str):
42
    real_filename = Path(ReadmeStepsManage.git_base_dir()) / filename
43
    data = pypandoc.convert_file(str(real_filename), "json")
44
    f = io.StringIO(data)
45
    doc = panflute.load(f)
46
    panflute.run_filter(action, prepare, doc=doc)
47
    return doc.full_text
48

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.