File size: 1,729 Bytes
6b1bc4b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
"""Add the learned-interests switch to an already patched `main` checkout (python sync_learned_interests_patch.py <repo root>):
  hybrid/__init__.py : learn_interests() reads PERSONALIZATION_ENGINE_LEARNED_INTERESTS (default on)
  service.py         : create_slate passes it to score_posts_for_slate
Every replacement must match exactly once."""
import sys

root = sys.argv[1]


def edit(rel, pairs):
    p = root + "/" + rel
    s = open(p, encoding="utf8", newline="").read(); crlf = "\r\n" in s; s = s.replace("\r\n", "\n")
    for a, b in pairs:
        assert s.count(a) == 1, (rel, a[:80], s.count(a))
        s = s.replace(a, b)
    open(p, "w", encoding="utf8", newline="").write(s.replace("\n", "\r\n") if crlf else s)
    print("edited", rel)


edit("backend/personalization/hybrid/__init__.py", [
    ("PERSONALIZATION_ENGINE_ORDER=engine|score  chooses how the engine's order reaches `create_slate` (see main_adapter.rank_posts).\n",
     "PERSONALIZATION_ENGINE_ORDER=engine|score  chooses how the engine's order reaches `create_slate` (see main_adapter.rank_posts).\n"
     "PERSONALIZATION_ENGINE_LEARNED_INTERESTS=1|0  (default 1) adds the tags a user keeps engaging with to their declared interests (see main_adapter.learned_interests).\n"),
    ("@lru_cache(maxsize=1)\ndef get_engine():",
     "def learn_interests() -> bool:\n    return os.getenv(\"PERSONALIZATION_ENGINE_LEARNED_INTERESTS\", \"1\").strip().lower() not in (\"0\", \"false\", \"no\", \"off\")\n\n\n"
     "@lru_cache(maxsize=1)\ndef get_engine():"),
])
edit("backend/personalization/service.py", [
    ("order_mode=hybrid_engine.order_mode())\n", "order_mode=hybrid_engine.order_mode(),learn_interests=hybrid_engine.learn_interests())\n"),
])