trustgraph-cli 2.9.11__tar.gz → 2.10.0__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 (122) hide show
  1. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/PKG-INFO +2 -2
  2. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/pyproject.toml +1 -1
  3. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/invoke_document_embeddings.py +19 -2
  4. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/invoke_graph_embeddings.py +29 -2
  5. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/invoke_row_embeddings.py +18 -1
  6. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/nquads.py +15 -0
  7. trustgraph_cli-2.10.0/trustgraph/cli_version.py +1 -0
  8. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph_cli.egg-info/PKG-INFO +2 -2
  9. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph_cli.egg-info/requires.txt +1 -1
  10. trustgraph_cli-2.9.11/trustgraph/cli_version.py +0 -1
  11. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/README.md +0 -0
  12. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/setup.cfg +0 -0
  13. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/__init__.py +0 -0
  14. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/_iam.py +0 -0
  15. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/add_library_document.py +0 -0
  16. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/bootstrap_iam.py +0 -0
  17. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/change_password.py +0 -0
  18. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/create_api_key.py +0 -0
  19. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/create_user.py +0 -0
  20. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/create_workspace.py +0 -0
  21. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/delete_collection.py +0 -0
  22. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/delete_config_item.py +0 -0
  23. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/delete_flow_blueprint.py +0 -0
  24. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/delete_kg_core.py +0 -0
  25. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/delete_mcp_tool.py +0 -0
  26. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/delete_tool.py +0 -0
  27. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/delete_user.py +0 -0
  28. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/describe_image.py +0 -0
  29. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/disable_user.py +0 -0
  30. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/dump_msgpack.py +0 -0
  31. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/dump_queues.py +0 -0
  32. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/enable_user.py +0 -0
  33. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/export_workspace.py +0 -0
  34. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/export_workspace_config.py +0 -0
  35. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/get_config_item.py +0 -0
  36. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/get_de_core.py +0 -0
  37. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/get_document_content.py +0 -0
  38. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/get_flow_blueprint.py +0 -0
  39. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/get_kg_core.py +0 -0
  40. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/graph_to_turtle.py +0 -0
  41. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/import_workspace.py +0 -0
  42. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/import_workspace_config.py +0 -0
  43. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/init_pulsar_manager.py +0 -0
  44. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/invoke_agent.py +0 -0
  45. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/invoke_document_rag.py +0 -0
  46. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/invoke_embeddings.py +0 -0
  47. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/invoke_graph_rag.py +0 -0
  48. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/invoke_llm.py +0 -0
  49. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/invoke_mcp_tool.py +0 -0
  50. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/invoke_nlp_query.py +0 -0
  51. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/invoke_prompt.py +0 -0
  52. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/invoke_reranker.py +0 -0
  53. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/invoke_rows_query.py +0 -0
  54. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/invoke_sparql_query.py +0 -0
  55. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/invoke_structured_query.py +0 -0
  56. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/list_api_keys.py +0 -0
  57. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/list_collections.py +0 -0
  58. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/list_config_items.py +0 -0
  59. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/list_explain_traces.py +0 -0
  60. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/list_my_workspaces.py +0 -0
  61. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/list_users.py +0 -0
  62. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/list_workspaces.py +0 -0
  63. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/load_doc_embeds.py +0 -0
  64. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/load_kg_core.py +0 -0
  65. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/load_knowledge.py +0 -0
  66. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/load_sample_documents.py +0 -0
  67. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/load_structured_data.py +0 -0
  68. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/load_turtle.py +0 -0
  69. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/login.py +0 -0
  70. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/monitor_prompts.py +0 -0
  71. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/put_config_item.py +0 -0
  72. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/put_de_core.py +0 -0
  73. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/put_flow_blueprint.py +0 -0
  74. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/put_kg_core.py +0 -0
  75. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/query_graph.py +0 -0
  76. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/remove_library_document.py +0 -0
  77. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/reset_password.py +0 -0
  78. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/revoke_api_key.py +0 -0
  79. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/sample_documents/__init__.py +0 -0
  80. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/sample_documents/belgian-beer.md +0 -0
  81. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/sample_documents/bronze-age-collapse.pdf +0 -0
  82. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/sample_documents/corporate-scandals.pdf +0 -0
  83. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/sample_documents/history-of-pets.md +0 -0
  84. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/sample_documents/metadata.json +0 -0
  85. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/sample_documents/mil-fortifications-america-19th-c.md +0 -0
  86. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/sample_documents/recipes.md +0 -0
  87. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/sample_documents/trade-routes-europe.md +0 -0
  88. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/save_doc_embeds.py +0 -0
  89. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/set_collection.py +0 -0
  90. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/set_mcp_tool.py +0 -0
  91. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/set_prompt.py +0 -0
  92. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/set_token_costs.py +0 -0
  93. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/set_tool.py +0 -0
  94. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/show_config.py +0 -0
  95. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/show_explain_trace.py +0 -0
  96. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/show_extraction_provenance.py +0 -0
  97. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/show_flow_blueprints.py +0 -0
  98. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/show_flow_state.py +0 -0
  99. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/show_flows.py +0 -0
  100. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/show_graph.py +0 -0
  101. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/show_kg_cores.py +0 -0
  102. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/show_library_documents.py +0 -0
  103. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/show_library_processing.py +0 -0
  104. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/show_mcp_tools.py +0 -0
  105. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/show_parameter_types.py +0 -0
  106. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/show_processor_state.py +0 -0
  107. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/show_prompts.py +0 -0
  108. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/show_token_costs.py +0 -0
  109. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/show_token_rate.py +0 -0
  110. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/show_tools.py +0 -0
  111. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/start_flow.py +0 -0
  112. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/start_library_processing.py +0 -0
  113. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/stop_flow.py +0 -0
  114. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/stop_library_processing.py +0 -0
  115. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/unload_kg_core.py +0 -0
  116. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/update_user.py +0 -0
  117. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/verify_system_status.py +0 -0
  118. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph/cli/whoami.py +0 -0
  119. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph_cli.egg-info/SOURCES.txt +0 -0
  120. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph_cli.egg-info/dependency_links.txt +0 -0
  121. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph_cli.egg-info/entry_points.txt +0 -0
  122. {trustgraph_cli-2.9.11 → trustgraph_cli-2.10.0}/trustgraph_cli.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: trustgraph-cli
3
- Version: 2.9.11
3
+ Version: 2.10.0
4
4
  Summary: TrustGraph provides a means to run a pipeline of flexible AI processing components in a flexible means to achieve a processing pipeline.
5
5
  Author-email: "trustgraph.ai" <security@trustgraph.ai>
6
6
  Project-URL: Homepage, https://github.com/trustgraph-ai/trustgraph
@@ -8,7 +8,7 @@ Classifier: Programming Language :: Python :: 3
8
8
  Classifier: Operating System :: OS Independent
9
9
  Requires-Python: >=3.10
10
10
  Description-Content-Type: text/markdown
11
- Requires-Dist: trustgraph-base<2.10,>=2.9
11
+ Requires-Dist: trustgraph-base<2.11,>=2.10
12
12
  Requires-Dist: requests
13
13
  Requires-Dist: pulsar-client
14
14
  Requires-Dist: aiohttp
@@ -10,7 +10,7 @@ description = "TrustGraph provides a means to run a pipeline of flexible AI proc
10
10
  readme = "README.md"
11
11
  requires-python = ">=3.10"
12
12
  dependencies = [
13
- "trustgraph-base>=2.9,<2.10",
13
+ "trustgraph-base>=2.10,<2.11",
14
14
  "requests",
15
15
  "pulsar-client",
16
16
  "aiohttp",
@@ -11,7 +11,10 @@ default_url = os.getenv("TRUSTGRAPH_URL", 'http://localhost:8888/')
11
11
  default_token = os.getenv("TRUSTGRAPH_TOKEN", None)
12
12
  default_workspace = os.getenv("TRUSTGRAPH_WORKSPACE", "default")
13
13
 
14
- def query(url, flow_id, query_text, collection, limit, token=None, workspace="default"):
14
+ def query(
15
+ url, flow_id, query_text, collection, limit,
16
+ attributes=None, token=None, workspace="default",
17
+ ):
15
18
 
16
19
  # Create API client
17
20
  api = Api(url=url, token=token, workspace=workspace)
@@ -23,7 +26,8 @@ def query(url, flow_id, query_text, collection, limit, token=None, workspace="de
23
26
  result = flow.document_embeddings_query(
24
27
  text=query_text,
25
28
  collection=collection,
26
- limit=limit
29
+ limit=limit,
30
+ attributes=attributes,
27
31
  )
28
32
 
29
33
  chunks = result.get("chunks", [])
@@ -83,6 +87,13 @@ def main():
83
87
  help='Maximum number of results (default: 10)',
84
88
  )
85
89
 
90
+ parser.add_argument(
91
+ '-a', '--attribute',
92
+ action='append',
93
+ default=[],
94
+ help='Filter attribute as key=value (repeatable)',
95
+ )
96
+
86
97
  parser.add_argument(
87
98
  'query',
88
99
  nargs=1,
@@ -91,6 +102,11 @@ def main():
91
102
 
92
103
  args = parser.parse_args()
93
104
 
105
+ attributes = {}
106
+ for attr in args.attribute:
107
+ k, _, v = attr.partition('=')
108
+ attributes[k] = v
109
+
94
110
  try:
95
111
 
96
112
  query(
@@ -99,6 +115,7 @@ def main():
99
115
  query_text=args.query[0],
100
116
  collection=args.collection,
101
117
  limit=args.limit,
118
+ attributes=attributes or None,
102
119
  token=args.token,
103
120
  workspace=args.workspace,
104
121
  )
@@ -4,6 +4,7 @@ Returns a list of matching graph entities.
4
4
  """
5
5
 
6
6
  import argparse
7
+ import json
7
8
  import os
8
9
  from trustgraph.api import Api
9
10
 
@@ -11,7 +12,11 @@ default_url = os.getenv("TRUSTGRAPH_URL", 'http://localhost:8888/')
11
12
  default_token = os.getenv("TRUSTGRAPH_TOKEN", None)
12
13
  default_workspace = os.getenv("TRUSTGRAPH_WORKSPACE", "default")
13
14
 
14
- def query(url, flow_id, query_text, collection, limit, token=None, workspace="default"):
15
+ def query(
16
+ url, flow_id, query_text, collection, limit,
17
+ rdf_type=None, attributes=None,
18
+ token=None, workspace="default",
19
+ ):
15
20
 
16
21
  # Create API client
17
22
  api = Api(url=url, token=token, workspace=workspace)
@@ -23,7 +28,9 @@ def query(url, flow_id, query_text, collection, limit, token=None, workspace="de
23
28
  result = flow.graph_embeddings_query(
24
29
  text=query_text,
25
30
  collection=collection,
26
- limit=limit
31
+ limit=limit,
32
+ rdf_type=rdf_type,
33
+ attributes=attributes,
27
34
  )
28
35
 
29
36
  entities = result.get("entities", [])
@@ -93,6 +100,19 @@ def main():
93
100
  help='Maximum number of results (default: 10)',
94
101
  )
95
102
 
103
+ parser.add_argument(
104
+ '--rdf-type',
105
+ default=None,
106
+ help='RDF type IRI to filter results (optional)',
107
+ )
108
+
109
+ parser.add_argument(
110
+ '-a', '--attribute',
111
+ action='append',
112
+ default=[],
113
+ help='Filter attribute as key=value (repeatable)',
114
+ )
115
+
96
116
  parser.add_argument(
97
117
  'query',
98
118
  nargs=1,
@@ -101,6 +121,11 @@ def main():
101
121
 
102
122
  args = parser.parse_args()
103
123
 
124
+ attributes = {}
125
+ for attr in args.attribute:
126
+ k, _, v = attr.partition('=')
127
+ attributes[k] = v
128
+
104
129
  try:
105
130
 
106
131
  query(
@@ -109,6 +134,8 @@ def main():
109
134
  query_text=args.query[0],
110
135
  collection=args.collection,
111
136
  limit=args.limit,
137
+ rdf_type=args.rdf_type,
138
+ attributes=attributes or None,
112
139
  token=args.token,
113
140
  workspace=args.workspace,
114
141
  )
@@ -11,7 +11,10 @@ default_url = os.getenv("TRUSTGRAPH_URL", 'http://localhost:8888/')
11
11
  default_token = os.getenv("TRUSTGRAPH_TOKEN", None)
12
12
  default_workspace = os.getenv("TRUSTGRAPH_WORKSPACE", "default")
13
13
 
14
- def query(url, flow_id, query_text, schema_name, collection, index_name, limit, token=None, workspace="default"):
14
+ def query(
15
+ url, flow_id, query_text, schema_name, collection, index_name, limit,
16
+ attributes=None, token=None, workspace="default",
17
+ ):
15
18
 
16
19
  # Create API client
17
20
  api = Api(url=url, token=token, workspace=workspace)
@@ -25,6 +28,7 @@ def query(url, flow_id, query_text, schema_name, collection, index_name, limit,
25
28
  schema_name=schema_name,
26
29
  collection=collection,
27
30
  index_name=index_name,
31
+ attributes=attributes,
28
32
  limit=limit
29
33
  )
30
34
 
@@ -96,6 +100,13 @@ def main():
96
100
  help='Maximum number of results (default: 10)',
97
101
  )
98
102
 
103
+ parser.add_argument(
104
+ '-a', '--attribute',
105
+ action='append',
106
+ default=[],
107
+ help='Filter attribute as key=value (repeatable)',
108
+ )
109
+
99
110
  parser.add_argument(
100
111
  'query',
101
112
  nargs=1,
@@ -104,6 +115,11 @@ def main():
104
115
 
105
116
  args = parser.parse_args()
106
117
 
118
+ attributes = {}
119
+ for attr in args.attribute:
120
+ k, _, v = attr.partition('=')
121
+ attributes[k] = v
122
+
107
123
  try:
108
124
 
109
125
  query(
@@ -114,6 +130,7 @@ def main():
114
130
  collection=args.collection,
115
131
  index_name=args.index_name,
116
132
  limit=args.limit,
133
+ attributes=attributes or None,
117
134
  token=args.token,
118
135
  workspace=args.workspace,
119
136
  )
@@ -39,6 +39,21 @@ _BAD_IRI = re.compile(r'[\x00-\x20<>"{}|^\x60\\]')
39
39
  _LANGTAG = re.compile(r"[a-zA-Z]+(?:-[a-zA-Z0-9]+)*")
40
40
 
41
41
 
42
+ def valid_language_tag(language):
43
+ """True when language can be emitted after the '@' of a LANGTAG.
44
+
45
+ The wire schema types the language field as a free-form str, so an
46
+ unusable tag arrives here as data, not as a bug.
47
+ """
48
+ return isinstance(language, str) and _LANGTAG.fullmatch(language) is not None
49
+
50
+ # The body of the LANGTAG production, [a-zA-Z]+ ('-' [a-zA-Z0-9]+)*, which
51
+ # Turtle shares and which is the shape rdflib's Literal(lang=...) accepts.
52
+ # fullmatch, not a trailing $: $ also matches before a trailing newline, so
53
+ # "en\n" would pass and split the quad across two lines.
54
+ _LANGTAG = re.compile(r"[a-zA-Z]+(?:-[a-zA-Z0-9]+)*")
55
+
56
+
42
57
  def valid_language_tag(language):
43
58
  """True when language can be emitted after the '@' of a LANGTAG.
44
59
 
@@ -0,0 +1 @@
1
+ __version__ = "2.10.0"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: trustgraph-cli
3
- Version: 2.9.11
3
+ Version: 2.10.0
4
4
  Summary: TrustGraph provides a means to run a pipeline of flexible AI processing components in a flexible means to achieve a processing pipeline.
5
5
  Author-email: "trustgraph.ai" <security@trustgraph.ai>
6
6
  Project-URL: Homepage, https://github.com/trustgraph-ai/trustgraph
@@ -8,7 +8,7 @@ Classifier: Programming Language :: Python :: 3
8
8
  Classifier: Operating System :: OS Independent
9
9
  Requires-Python: >=3.10
10
10
  Description-Content-Type: text/markdown
11
- Requires-Dist: trustgraph-base<2.10,>=2.9
11
+ Requires-Dist: trustgraph-base<2.11,>=2.10
12
12
  Requires-Dist: requests
13
13
  Requires-Dist: pulsar-client
14
14
  Requires-Dist: aiohttp
@@ -1,4 +1,4 @@
1
- trustgraph-base<2.10,>=2.9
1
+ trustgraph-base<2.11,>=2.10
2
2
  requests
3
3
  pulsar-client
4
4
  aiohttp
@@ -1 +0,0 @@
1
- __version__ = "2.9.11"