@polycode-projects/the-mechanical-code-talker 6.0.19 → 6.0.21

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 (72) hide show
  1. package/README.md +20 -23
  2. package/bin/tmct.mjs +16 -33
  3. package/corpus/LICENSES.json +0 -21
  4. package/corpus/README.md +10 -13
  5. package/corpus/reference/manifest.json +19 -19
  6. package/corpus/reference/shards/ref-01.jsonl.gz +0 -0
  7. package/corpus/reference/shards/ref-04.jsonl.gz +0 -0
  8. package/corpus/reference/shards/ref-08.jsonl.gz +0 -0
  9. package/corpus/reference/shards/ref-10.jsonl.gz +0 -0
  10. package/corpus/reference/shards/ref-11.jsonl.gz +0 -0
  11. package/corpus/reference/shards/ref-17.jsonl.gz +0 -0
  12. package/corpus/reference/shards/ref-20.jsonl.gz +0 -0
  13. package/corpus/reference/shards/ref-25.jsonl.gz +0 -0
  14. package/corpus/reference/shards/ref-2c.jsonl.gz +0 -0
  15. package/corpus/tier2/generate.mjs +6 -142
  16. package/corpus/tier2/manifest.json +0 -42
  17. package/package.json +4 -4
  18. package/src/adapters/corpus/child-seed.mjs +74 -0
  19. package/src/adapters/corpus/conceptnet.mjs +45 -26
  20. package/src/adapters/memory/blocks.mjs +7 -1
  21. package/src/adapters/memory/core.mjs +453 -103
  22. package/src/adapters/memory/corpus-bands.mjs +33 -10
  23. package/src/adapters/memory/inspect.mjs +24 -5
  24. package/src/adapters/memory/rows.mjs +106 -9
  25. package/src/adapters/memory/shacl.mjs +10 -3
  26. package/src/domain/ask.mjs +27 -10
  27. package/src/domain/cli-verbs.mjs +3 -4
  28. package/src/domain/completions/group.mjs +8 -3
  29. package/src/domain/completions/infer.mjs +7 -2
  30. package/src/domain/completions/prune.mjs +5 -1
  31. package/src/domain/completions/rank.mjs +7 -2
  32. package/src/domain/digest/compose.mjs +5 -1
  33. package/src/domain/digest/select.mjs +12 -6
  34. package/src/domain/domain.mjs +15 -8
  35. package/src/domain/el-classify.mjs +11 -2
  36. package/src/domain/fact-phrase.mjs +86 -4
  37. package/src/domain/hash.mjs +9 -0
  38. package/src/domain/memory/bias.mjs +8 -4
  39. package/src/domain/memory/capability.mjs +12 -6
  40. package/src/domain/memory/fact-order.mjs +29 -0
  41. package/src/domain/memory/resolution.mjs +3 -0
  42. package/src/domain/news-feed.mjs +422 -56
  43. package/src/domain/reference-pack.mjs +5 -0
  44. package/src/domain/sense-scope.mjs +116 -0
  45. package/src/domain/sense-split.mjs +1 -1
  46. package/src/domain/syllogise.mjs +21 -13
  47. package/src/domain/tableau.mjs +23 -14
  48. package/src/domain/worlds-pack.mjs +5 -1
  49. package/src/services/adventure-autoplay.mjs +6 -1
  50. package/src/services/adventure-editor.mjs +43 -21
  51. package/src/services/adventure-viz.mjs +26 -9
  52. package/src/services/adventure.mjs +40 -10
  53. package/src/services/chat.mjs +253 -113
  54. package/src/services/extensions.mjs +51 -58
  55. package/src/services/extract-facts.mjs +670 -95
  56. package/src/services/init.mjs +4 -4
  57. package/src/services/ledger-viz.mjs +9 -4
  58. package/src/services/memory-panel-viz.mjs +4 -5
  59. package/src/services/mud-editor.mjs +40 -16
  60. package/src/services/mud-viz.mjs +8 -2
  61. package/src/services/mudiii-turn.mjs +5 -3
  62. package/src/services/mudiii-viz.mjs +8 -2
  63. package/src/services/news.mjs +277 -11
  64. package/src/services/research-viz.mjs +1 -1
  65. package/src/services/sprite-catalog-viz.mjs +10 -5
  66. package/src/surfaces/web/adventure-browser-entry.mjs +6 -12
  67. package/src/surfaces/web/memory-ask-browser.bundle.js +152 -151
  68. package/src/surfaces/web/mud-browser-entry.mjs +7 -11
  69. package/src/surfaces/web/research-browser-entry.mjs +5 -2
  70. package/corpus/tier2/aws.jsonl +0 -39
  71. package/corpus/tier2/java.jsonl +0 -31
  72. package/corpus/tier2/python.jsonl +0 -30
@@ -38,7 +38,7 @@ import {
38
38
  foldWorldState, worldActionRows, worldDigestRows, roomAffordances,
39
39
  personKnowledgeLines, personKnownFoodLines, objectClassChain, recordExamined,
40
40
  diggableDirections, castInRoom, displayNameOf, isOutOfPlay, outOfPlayReasonOf, outOfPlayPhrase,
41
- roomKindOf, isMudStatePredicate, worldEpochFact, snapshotSubject,
41
+ roomKindOf, isMudStatePredicate, worldEpochFact,
42
42
  } from "../../services/adventure.mjs";
43
43
  import { waveFact, playedByFact, P2P_PREDICATES } from "../../domain/p2p/facts.mjs";
44
44
  import { relatedForTerm } from "../../domain/skos-view.mjs";
@@ -264,24 +264,20 @@ export async function createMudSession(worldPayload, { characters = [], epoch =
264
264
  * parseMudEditorText), plan the writes it implies, and apply them — scoped to
265
265
  * THIS world's provenance tag only. Returns `{ unrecognized, added, removed }`.
266
266
  *
267
- * Two things this does that a fresh, unplayed world would not need.
268
267
  * Retractions run only when the WHOLE document parsed cleanly, so a half-typed
269
- * line is never read as "this fact is gone". And a fold-versioned write
270
- * (a placement, an openness, a mass) is stamped `subject@turnN` at one past
271
- * the world's own turn count, exactly the way every in-game action's commit
272
- * writes: the fold takes the newest turn, so an untagged row would sit at turn
273
- * zero and lose to the snapshot the last played turn already left behind —
274
- * the edit would look accepted and change nothing. */
268
+ * line is never read as "this fact is gone". A placement, openness or mass
269
+ * edit arrives from the planner already written as a TURN SNAPSHOT, the way
270
+ * every played turn writes one, so all this has to add is the matching
271
+ * provenance tag. */
275
272
  async function applyEdit(text) {
276
273
  const allRows = readFactRows(await loadMemory(memoryDir));
277
274
  const worldRows = allRows.filter((r) => typeof r.provenance === "string" && r.provenance.indexOf(tag) === 0);
278
275
  const state = foldWorldState(worldRows);
279
276
  const { triples, unrecognized } = parseMudEditorText(text);
280
- const { toAppend, toRemoveIds } = planMudEditorSync(worldRows, state, triples);
281
- const editTurn = state.turnCount + 1;
277
+ const { toAppend, toRemoveIds, editTurn } = planMudEditorSync(worldRows, state, triples);
282
278
  if (toAppend.length) {
283
279
  await appendFacts(memoryDir, toAppend.map((f) => ({
284
- subject: f.kind === "other" ? f.subject : snapshotSubject(f.subject, editTurn, state.epoch),
280
+ subject: f.subject,
285
281
  predicate: f.predicate,
286
282
  object: f.object,
287
283
  provenance: f.kind === "other" ? tag : `${tag}:turn${editTurn}`,
@@ -158,7 +158,10 @@ export async function researchSnapshot(memoryDir, sessionIds = {}, { recentCap =
158
158
  }
159
159
  }
160
160
 
161
- const byCreatedDesc = (a, b) => String(b.createdAt || "").localeCompare(String(a.createdAt || ""));
161
+ // Codepoint order, never localeCompare two readers holding the same fact
162
+ // store must render its rows in the same order regardless of OS locale.
163
+ const byCodepoint = (a, b) => (a < b ? -1 : a > b ? 1 : 0);
164
+ const byCreatedDesc = (a, b) => byCodepoint(String(b.createdAt || ""), String(a.createdAt || ""));
162
165
  recent.sort(byCreatedDesc);
163
166
 
164
167
  const seedKeys = [...counts.keys()].filter((k) => k.startsWith("seed:")).sort();
@@ -175,7 +178,7 @@ export async function researchSnapshot(memoryDir, sessionIds = {}, { recentCap =
175
178
 
176
179
  const hubs = [...degree.entries()]
177
180
  .map(([term, deg]) => ({ term, degree: deg }))
178
- .sort((a, b) => b.degree - a.degree || a.term.localeCompare(b.term))
181
+ .sort((a, b) => b.degree - a.degree || byCodepoint(a.term, b.term))
179
182
  .slice(0, hubCap);
180
183
 
181
184
  return {
@@ -1,39 +0,0 @@
1
- {"start":"/c/en/aws","rel":"/r/IsA","end":"/c/en/cloud_platform","weight":1,"surfaceText":"[[aws]] IsA [[cloud platform]]"}
2
- {"start":"/c/en/aws","rel":"/r/IsA","end":"/c/en/cloud","weight":1,"surfaceText":"[[aws]] IsA [[cloud]]"}
3
- {"start":"/c/en/aws","rel":"/r/CapableOf","end":"/c/en/host_applications","weight":1,"surfaceText":"[[aws]] CapableOf [[host applications]]"}
4
- {"start":"/c/en/s3","rel":"/r/IsA","end":"/c/en/object_storage","weight":1,"surfaceText":"[[s3]] IsA [[object storage]]"}
5
- {"start":"/c/en/s3","rel":"/r/IsA","end":"/c/en/storage_service","weight":1,"surfaceText":"[[s3]] IsA [[storage service]]"}
6
- {"start":"/c/en/s3","rel":"/r/PartOf","end":"/c/en/aws","weight":1,"surfaceText":"[[s3]] PartOf [[aws]]"}
7
- {"start":"/c/en/s3","rel":"/r/HasA","end":"/c/en/bucket","weight":1,"surfaceText":"[[s3]] HasA [[bucket]]"}
8
- {"start":"/c/en/s3","rel":"/r/UsedFor","end":"/c/en/storing_files","weight":1,"surfaceText":"[[s3]] UsedFor [[storing files]]"}
9
- {"start":"/c/en/s3","rel":"/r/CapableOf","end":"/c/en/store_objects","weight":1,"surfaceText":"[[s3]] CapableOf [[store objects]]"}
10
- {"start":"/c/en/bucket","rel":"/r/IsA","end":"/c/en/container","weight":1,"surfaceText":"[[bucket]] IsA [[container]]"}
11
- {"start":"/c/en/bucket","rel":"/r/PartOf","end":"/c/en/s3","weight":1,"surfaceText":"[[bucket]] PartOf [[s3]]"}
12
- {"start":"/c/en/bucket","rel":"/r/UsedFor","end":"/c/en/storing_objects","weight":1,"surfaceText":"[[bucket]] UsedFor [[storing objects]]"}
13
- {"start":"/c/en/lambda","rel":"/r/IsA","end":"/c/en/compute_service","weight":1,"surfaceText":"[[lambda]] IsA [[compute service]]"}
14
- {"start":"/c/en/lambda","rel":"/r/IsA","end":"/c/en/function","weight":1,"surfaceText":"[[lambda]] IsA [[function]]"}
15
- {"start":"/c/en/lambda","rel":"/r/PartOf","end":"/c/en/aws","weight":1,"surfaceText":"[[lambda]] PartOf [[aws]]"}
16
- {"start":"/c/en/lambda","rel":"/r/UsedFor","end":"/c/en/running_code","weight":1,"surfaceText":"[[lambda]] UsedFor [[running code]]"}
17
- {"start":"/c/en/lambda","rel":"/r/CapableOf","end":"/c/en/run_code","weight":1,"surfaceText":"[[lambda]] CapableOf [[run code]]"}
18
- {"start":"/c/en/lambda","rel":"/r/HasProperty","end":"/c/en/serverless","weight":1,"surfaceText":"[[lambda]] HasProperty [[serverless]]"}
19
- {"start":"/c/en/dynamodb","rel":"/r/IsA","end":"/c/en/database","weight":1,"surfaceText":"[[dynamodb]] IsA [[database]]"}
20
- {"start":"/c/en/dynamodb","rel":"/r/IsA","end":"/c/en/nosql_database","weight":1,"surfaceText":"[[dynamodb]] IsA [[nosql database]]"}
21
- {"start":"/c/en/dynamodb","rel":"/r/PartOf","end":"/c/en/aws","weight":1,"surfaceText":"[[dynamodb]] PartOf [[aws]]"}
22
- {"start":"/c/en/dynamodb","rel":"/r/HasA","end":"/c/en/table","weight":1,"surfaceText":"[[dynamodb]] HasA [[table]]"}
23
- {"start":"/c/en/dynamodb","rel":"/r/UsedFor","end":"/c/en/storing_data","weight":1,"surfaceText":"[[dynamodb]] UsedFor [[storing data]]"}
24
- {"start":"/c/en/dynamodb","rel":"/r/HasProperty","end":"/c/en/managed","weight":1,"surfaceText":"[[dynamodb]] HasProperty [[managed]]"}
25
- {"start":"/c/en/ec2","rel":"/r/IsA","end":"/c/en/compute_service","weight":1,"surfaceText":"[[ec2]] IsA [[compute service]]"}
26
- {"start":"/c/en/ec2","rel":"/r/IsA","end":"/c/en/virtual_machine","weight":1,"surfaceText":"[[ec2]] IsA [[virtual machine]]"}
27
- {"start":"/c/en/ec2","rel":"/r/PartOf","end":"/c/en/aws","weight":1,"surfaceText":"[[ec2]] PartOf [[aws]]"}
28
- {"start":"/c/en/ec2","rel":"/r/HasA","end":"/c/en/instance","weight":1,"surfaceText":"[[ec2]] HasA [[instance]]"}
29
- {"start":"/c/en/ec2","rel":"/r/UsedFor","end":"/c/en/running_servers","weight":1,"surfaceText":"[[ec2]] UsedFor [[running servers]]"}
30
- {"start":"/c/en/iam","rel":"/r/IsA","end":"/c/en/access_control","weight":1,"surfaceText":"[[iam]] IsA [[access control]]"}
31
- {"start":"/c/en/iam","rel":"/r/PartOf","end":"/c/en/aws","weight":1,"surfaceText":"[[iam]] PartOf [[aws]]"}
32
- {"start":"/c/en/iam","rel":"/r/UsedFor","end":"/c/en/managing_permissions","weight":1,"surfaceText":"[[iam]] UsedFor [[managing permissions]]"}
33
- {"start":"/c/en/iam","rel":"/r/HasA","end":"/c/en/role","weight":1,"surfaceText":"[[iam]] HasA [[role]]"}
34
- {"start":"/c/en/iam","rel":"/r/HasA","end":"/c/en/policy","weight":1,"surfaceText":"[[iam]] HasA [[policy]]"}
35
- {"start":"/c/en/sqs","rel":"/r/IsA","end":"/c/en/message_queue","weight":1,"surfaceText":"[[sqs]] IsA [[message queue]]"}
36
- {"start":"/c/en/sqs","rel":"/r/IsA","end":"/c/en/queue","weight":1,"surfaceText":"[[sqs]] IsA [[queue]]"}
37
- {"start":"/c/en/sqs","rel":"/r/PartOf","end":"/c/en/aws","weight":1,"surfaceText":"[[sqs]] PartOf [[aws]]"}
38
- {"start":"/c/en/sqs","rel":"/r/UsedFor","end":"/c/en/decoupling_services","weight":1,"surfaceText":"[[sqs]] UsedFor [[decoupling services]]"}
39
- {"start":"/c/en/queue","rel":"/r/IsA","end":"/c/en/data_structure","weight":1,"surfaceText":"[[queue]] IsA [[data structure]]"}
@@ -1,31 +0,0 @@
1
- {"start":"/c/en/java","rel":"/r/IsA","end":"/c/en/programming_language","weight":1,"surfaceText":"[[java]] IsA [[programming language]]"}
2
- {"start":"/c/en/java","rel":"/r/HasProperty","end":"/c/en/compiled","weight":1,"surfaceText":"[[java]] HasProperty [[compiled]]"}
3
- {"start":"/c/en/java","rel":"/r/HasProperty","end":"/c/en/statically_typed","weight":1,"surfaceText":"[[java]] HasProperty [[statically typed]]"}
4
- {"start":"/c/en/java","rel":"/r/UsedFor","end":"/c/en/building_applications","weight":1,"surfaceText":"[[java]] UsedFor [[building applications]]"}
5
- {"start":"/c/en/arraylist","rel":"/r/IsA","end":"/c/en/list","weight":1,"surfaceText":"[[arraylist]] IsA [[list]]"}
6
- {"start":"/c/en/arraylist","rel":"/r/IsA","end":"/c/en/data_structure","weight":1,"surfaceText":"[[arraylist]] IsA [[data structure]]"}
7
- {"start":"/c/en/hashmap","rel":"/r/IsA","end":"/c/en/hash_table","weight":1,"surfaceText":"[[hashmap]] IsA [[hash table]]"}
8
- {"start":"/c/en/hashmap","rel":"/r/IsA","end":"/c/en/dictionary","weight":1,"surfaceText":"[[hashmap]] IsA [[dictionary]]"}
9
- {"start":"/c/en/hashmap","rel":"/r/IsA","end":"/c/en/map","weight":1,"surfaceText":"[[hashmap]] IsA [[map]]"}
10
- {"start":"/c/en/interface","rel":"/r/IsA","end":"/c/en/type","weight":1,"surfaceText":"[[interface]] IsA [[type]]"}
11
- {"start":"/c/en/interface","rel":"/r/IsA","end":"/c/en/contract","weight":1,"surfaceText":"[[interface]] IsA [[contract]]"}
12
- {"start":"/c/en/class","rel":"/r/IsA","end":"/c/en/type","weight":1,"surfaceText":"[[class]] IsA [[type]]"}
13
- {"start":"/c/en/object","rel":"/r/IsA","end":"/c/en/instance","weight":1,"surfaceText":"[[object]] IsA [[instance]]"}
14
- {"start":"/c/en/jvm","rel":"/r/IsA","end":"/c/en/virtual_machine","weight":1,"surfaceText":"[[jvm]] IsA [[virtual machine]]"}
15
- {"start":"/c/en/jvm","rel":"/r/UsedFor","end":"/c/en/running_bytecode","weight":1,"surfaceText":"[[jvm]] UsedFor [[running bytecode]]"}
16
- {"start":"/c/en/jvm","rel":"/r/CapableOf","end":"/c/en/execute_bytecode","weight":1,"surfaceText":"[[jvm]] CapableOf [[execute bytecode]]"}
17
- {"start":"/c/en/bytecode","rel":"/r/IsA","end":"/c/en/code","weight":1,"surfaceText":"[[bytecode]] IsA [[code]]"}
18
- {"start":"/c/en/garbage_collector","rel":"/r/PartOf","end":"/c/en/jvm","weight":1,"surfaceText":"[[garbage collector]] PartOf [[jvm]]"}
19
- {"start":"/c/en/garbage_collector","rel":"/r/UsedFor","end":"/c/en/freeing_memory","weight":1,"surfaceText":"[[garbage collector]] UsedFor [[freeing memory]]"}
20
- {"start":"/c/en/jar","rel":"/r/IsA","end":"/c/en/archive","weight":1,"surfaceText":"[[jar]] IsA [[archive]]"}
21
- {"start":"/c/en/jar","rel":"/r/IsA","end":"/c/en/file","weight":1,"surfaceText":"[[jar]] IsA [[file]]"}
22
- {"start":"/c/en/jar","rel":"/r/UsedFor","end":"/c/en/packaging_classes","weight":1,"surfaceText":"[[jar]] UsedFor [[packaging classes]]"}
23
- {"start":"/c/en/maven","rel":"/r/IsA","end":"/c/en/build_tool","weight":1,"surfaceText":"[[maven]] IsA [[build tool]]"}
24
- {"start":"/c/en/maven","rel":"/r/IsA","end":"/c/en/package_manager","weight":1,"surfaceText":"[[maven]] IsA [[package manager]]"}
25
- {"start":"/c/en/gradle","rel":"/r/IsA","end":"/c/en/build_tool","weight":1,"surfaceText":"[[gradle]] IsA [[build tool]]"}
26
- {"start":"/c/en/thread","rel":"/r/IsA","end":"/c/en/process","weight":1,"surfaceText":"[[thread]] IsA [[process]]"}
27
- {"start":"/c/en/thread","rel":"/r/UsedFor","end":"/c/en/concurrency","weight":1,"surfaceText":"[[thread]] UsedFor [[concurrency]]"}
28
- {"start":"/c/en/generics","rel":"/r/UsedFor","end":"/c/en/type_safety","weight":1,"surfaceText":"[[generics]] UsedFor [[type safety]]"}
29
- {"start":"/c/en/annotation","rel":"/r/IsA","end":"/c/en/metadata","weight":1,"surfaceText":"[[annotation]] IsA [[metadata]]"}
30
- {"start":"/c/en/exception","rel":"/r/IsA","end":"/c/en/error","weight":1,"surfaceText":"[[exception]] IsA [[error]]"}
31
- {"start":"/c/en/method","rel":"/r/IsA","end":"/c/en/function","weight":1,"surfaceText":"[[method]] IsA [[function]]"}
@@ -1,30 +0,0 @@
1
- {"start":"/c/en/python","rel":"/r/IsA","end":"/c/en/programming_language","weight":1,"surfaceText":"[[python]] IsA [[programming language]]"}
2
- {"start":"/c/en/python","rel":"/r/HasProperty","end":"/c/en/interpreted","weight":1,"surfaceText":"[[python]] HasProperty [[interpreted]]"}
3
- {"start":"/c/en/python","rel":"/r/HasProperty","end":"/c/en/dynamically_typed","weight":1,"surfaceText":"[[python]] HasProperty [[dynamically typed]]"}
4
- {"start":"/c/en/python","rel":"/r/UsedFor","end":"/c/en/scripting","weight":1,"surfaceText":"[[python]] UsedFor [[scripting]]"}
5
- {"start":"/c/en/list","rel":"/r/IsA","end":"/c/en/array","weight":1,"surfaceText":"[[list]] IsA [[array]]"}
6
- {"start":"/c/en/list","rel":"/r/IsA","end":"/c/en/sequence","weight":1,"surfaceText":"[[list]] IsA [[sequence]]"}
7
- {"start":"/c/en/list","rel":"/r/IsA","end":"/c/en/data_structure","weight":1,"surfaceText":"[[list]] IsA [[data structure]]"}
8
- {"start":"/c/en/dict","rel":"/r/IsA","end":"/c/en/hash_table","weight":1,"surfaceText":"[[dict]] IsA [[hash table]]"}
9
- {"start":"/c/en/dict","rel":"/r/IsA","end":"/c/en/dictionary","weight":1,"surfaceText":"[[dict]] IsA [[dictionary]]"}
10
- {"start":"/c/en/dict","rel":"/r/IsA","end":"/c/en/mapping","weight":1,"surfaceText":"[[dict]] IsA [[mapping]]"}
11
- {"start":"/c/en/tuple","rel":"/r/IsA","end":"/c/en/sequence","weight":1,"surfaceText":"[[tuple]] IsA [[sequence]]"}
12
- {"start":"/c/en/tuple","rel":"/r/HasProperty","end":"/c/en/immutable","weight":1,"surfaceText":"[[tuple]] HasProperty [[immutable]]"}
13
- {"start":"/c/en/set","rel":"/r/IsA","end":"/c/en/collection","weight":1,"surfaceText":"[[set]] IsA [[collection]]"}
14
- {"start":"/c/en/set","rel":"/r/HasProperty","end":"/c/en/unordered","weight":1,"surfaceText":"[[set]] HasProperty [[unordered]]"}
15
- {"start":"/c/en/str","rel":"/r/IsA","end":"/c/en/string","weight":1,"surfaceText":"[[str]] IsA [[string]]"}
16
- {"start":"/c/en/decorator","rel":"/r/IsA","end":"/c/en/function","weight":1,"surfaceText":"[[decorator]] IsA [[function]]"}
17
- {"start":"/c/en/decorator","rel":"/r/UsedFor","end":"/c/en/modifying_functions","weight":1,"surfaceText":"[[decorator]] UsedFor [[modifying functions]]"}
18
- {"start":"/c/en/generator","rel":"/r/IsA","end":"/c/en/iterator","weight":1,"surfaceText":"[[generator]] IsA [[iterator]]"}
19
- {"start":"/c/en/generator","rel":"/r/UsedFor","end":"/c/en/lazy_evaluation","weight":1,"surfaceText":"[[generator]] UsedFor [[lazy evaluation]]"}
20
- {"start":"/c/en/comprehension","rel":"/r/IsA","end":"/c/en/expression","weight":1,"surfaceText":"[[comprehension]] IsA [[expression]]"}
21
- {"start":"/c/en/comprehension","rel":"/r/UsedFor","end":"/c/en/building_collections","weight":1,"surfaceText":"[[comprehension]] UsedFor [[building collections]]"}
22
- {"start":"/c/en/exception","rel":"/r/IsA","end":"/c/en/error","weight":1,"surfaceText":"[[exception]] IsA [[error]]"}
23
- {"start":"/c/en/module","rel":"/r/IsA","end":"/c/en/file","weight":1,"surfaceText":"[[module]] IsA [[file]]"}
24
- {"start":"/c/en/package","rel":"/r/IsA","end":"/c/en/module","weight":1,"surfaceText":"[[package]] IsA [[module]]"}
25
- {"start":"/c/en/method","rel":"/r/IsA","end":"/c/en/function","weight":1,"surfaceText":"[[method]] IsA [[function]]"}
26
- {"start":"/c/en/pip","rel":"/r/IsA","end":"/c/en/package_manager","weight":1,"surfaceText":"[[pip]] IsA [[package manager]]"}
27
- {"start":"/c/en/pip","rel":"/r/UsedFor","end":"/c/en/installing_packages","weight":1,"surfaceText":"[[pip]] UsedFor [[installing packages]]"}
28
- {"start":"/c/en/gil","rel":"/r/IsA","end":"/c/en/lock","weight":1,"surfaceText":"[[gil]] IsA [[lock]]"}
29
- {"start":"/c/en/gil","rel":"/r/PartOf","end":"/c/en/interpreter","weight":1,"surfaceText":"[[gil]] PartOf [[interpreter]]"}
30
- {"start":"/c/en/cpython","rel":"/r/IsA","end":"/c/en/interpreter","weight":1,"surfaceText":"[[cpython]] IsA [[interpreter]]"}