rosetta-cli 3.0.4__tar.gz → 3.0.5__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.
- {rosetta_cli-3.0.4/rosetta_cli.egg-info → rosetta_cli-3.0.5}/PKG-INFO +1 -1
- {rosetta_cli-3.0.4 → rosetta_cli-3.0.5}/pyproject.toml +1 -1
- {rosetta_cli-3.0.4 → rosetta_cli-3.0.5}/rosetta_cli/cli.py +2 -1
- {rosetta_cli-3.0.4 → rosetta_cli-3.0.5}/rosetta_cli/ragflow_client.py +33 -15
- {rosetta_cli-3.0.4 → rosetta_cli-3.0.5}/rosetta_cli/services/dataset_service.py +16 -3
- {rosetta_cli-3.0.4 → rosetta_cli-3.0.5/rosetta_cli.egg-info}/PKG-INFO +1 -1
- {rosetta_cli-3.0.4 → rosetta_cli-3.0.5}/MANIFEST.in +0 -0
- {rosetta_cli-3.0.4 → rosetta_cli-3.0.5}/README.md +0 -0
- {rosetta_cli-3.0.4 → rosetta_cli-3.0.5}/env.template +0 -0
- {rosetta_cli-3.0.4 → rosetta_cli-3.0.5}/rosetta_cli/__init__.py +0 -0
- {rosetta_cli-3.0.4 → rosetta_cli-3.0.5}/rosetta_cli/__main__.py +0 -0
- {rosetta_cli-3.0.4 → rosetta_cli-3.0.5}/rosetta_cli/commands/__init__.py +0 -0
- {rosetta_cli-3.0.4 → rosetta_cli-3.0.5}/rosetta_cli/commands/base_command.py +0 -0
- {rosetta_cli-3.0.4 → rosetta_cli-3.0.5}/rosetta_cli/commands/cleanup_command.py +0 -0
- {rosetta_cli-3.0.4 → rosetta_cli-3.0.5}/rosetta_cli/commands/list_command.py +0 -0
- {rosetta_cli-3.0.4 → rosetta_cli-3.0.5}/rosetta_cli/commands/parse_command.py +0 -0
- {rosetta_cli-3.0.4 → rosetta_cli-3.0.5}/rosetta_cli/commands/publish_command.py +0 -0
- {rosetta_cli-3.0.4 → rosetta_cli-3.0.5}/rosetta_cli/commands/verify_command.py +0 -0
- {rosetta_cli-3.0.4 → rosetta_cli-3.0.5}/rosetta_cli/rosetta_auth.py +0 -0
- {rosetta_cli-3.0.4 → rosetta_cli-3.0.5}/rosetta_cli/rosetta_config.py +0 -0
- {rosetta_cli-3.0.4 → rosetta_cli-3.0.5}/rosetta_cli/rosetta_publisher.py +0 -0
- {rosetta_cli-3.0.4 → rosetta_cli-3.0.5}/rosetta_cli/rosetta_utils.py +0 -0
- {rosetta_cli-3.0.4 → rosetta_cli-3.0.5}/rosetta_cli/services/__init__.py +0 -0
- {rosetta_cli-3.0.4 → rosetta_cli-3.0.5}/rosetta_cli/services/auth_service.py +0 -0
- {rosetta_cli-3.0.4 → rosetta_cli-3.0.5}/rosetta_cli/services/document_data.py +0 -0
- {rosetta_cli-3.0.4 → rosetta_cli-3.0.5}/rosetta_cli/services/document_service.py +0 -0
- {rosetta_cli-3.0.4 → rosetta_cli-3.0.5}/rosetta_cli/typing_utils.py +0 -0
- {rosetta_cli-3.0.4 → rosetta_cli-3.0.5}/rosetta_cli.egg-info/SOURCES.txt +0 -0
- {rosetta_cli-3.0.4 → rosetta_cli-3.0.5}/rosetta_cli.egg-info/dependency_links.txt +0 -0
- {rosetta_cli-3.0.4 → rosetta_cli-3.0.5}/rosetta_cli.egg-info/entry_points.txt +0 -0
- {rosetta_cli-3.0.4 → rosetta_cli-3.0.5}/rosetta_cli.egg-info/requires.txt +0 -0
- {rosetta_cli-3.0.4 → rosetta_cli-3.0.5}/rosetta_cli.egg-info/top_level.txt +0 -0
- {rosetta_cli-3.0.4 → rosetta_cli-3.0.5}/setup.cfg +0 -0
|
@@ -378,7 +378,8 @@ Frontmatter Metadata (publish flow):
|
|
|
378
378
|
chunk_method=config.chunk_method,
|
|
379
379
|
parser_config=config.parser_config,
|
|
380
380
|
page_size=config.page_size,
|
|
381
|
-
|
|
381
|
+
dataset_default=config.dataset_default,
|
|
382
|
+
timeout=config.timeout,
|
|
382
383
|
)
|
|
383
384
|
|
|
384
385
|
return execute_command(args.command, args, client, config)
|
|
@@ -116,7 +116,8 @@ class RAGFlowClient:
|
|
|
116
116
|
embedding_model: str | None = None,
|
|
117
117
|
chunk_method: str = "naive",
|
|
118
118
|
parser_config: JsonDict | None = None,
|
|
119
|
-
page_size: int = 1000
|
|
119
|
+
page_size: int = 1000,
|
|
120
|
+
dataset_default: str = "aia",
|
|
120
121
|
):
|
|
121
122
|
"""
|
|
122
123
|
Initialize RAGFlow client.
|
|
@@ -130,6 +131,7 @@ class RAGFlowClient:
|
|
|
130
131
|
chunk_method: Chunking method (default: naive)
|
|
131
132
|
parser_config: Parser configuration dict for chunk_method settings
|
|
132
133
|
page_size: Default page size for list operations (default: 1000)
|
|
134
|
+
dataset_default: Default dataset name when no release-specific or explicit dataset name is available
|
|
133
135
|
|
|
134
136
|
Raises:
|
|
135
137
|
ValueError: If api_key or base_url is empty
|
|
@@ -147,6 +149,7 @@ class RAGFlowClient:
|
|
|
147
149
|
self.chunk_method = chunk_method
|
|
148
150
|
self.parser_config = parser_config or {}
|
|
149
151
|
self.page_size = page_size
|
|
152
|
+
self.dataset_default = dataset_default
|
|
150
153
|
|
|
151
154
|
# Initialize RAGFlow SDK client
|
|
152
155
|
self._client = RAGFlow(api_key=api_key, base_url=base_url, version=version)
|
|
@@ -469,26 +472,38 @@ class RAGFlowClient:
|
|
|
469
472
|
# Dataset doesn't exist, create it (gated by dry_run)
|
|
470
473
|
return self.create_dataset(name, description, dry_run=dry_run)
|
|
471
474
|
|
|
472
|
-
def _resolve_dataset_name(
|
|
475
|
+
def _resolve_dataset_name(
|
|
476
|
+
self,
|
|
477
|
+
dataset_template: str,
|
|
478
|
+
release: str | None,
|
|
479
|
+
dataset_name: str | None,
|
|
480
|
+
) -> str:
|
|
473
481
|
"""
|
|
474
|
-
Resolve dataset name
|
|
482
|
+
Resolve dataset name using release + dataset_template, explicit dataset_name or default.
|
|
475
483
|
|
|
476
484
|
Args:
|
|
477
|
-
|
|
485
|
+
dataset_template: Name template (e.g., "aia-{release}")
|
|
478
486
|
release: Release identifier (e.g., "r1")
|
|
487
|
+
dataset_name: Explicit dataset name, if provided (e.g., "aia-r1")
|
|
479
488
|
|
|
480
489
|
Returns:
|
|
481
490
|
Resolved dataset name
|
|
482
491
|
|
|
483
492
|
Examples:
|
|
484
|
-
>>> _resolve_dataset_name("aia-{release}", "r1")
|
|
493
|
+
>>> _resolve_dataset_name("aia-{release}", "r1", "aia-r2")
|
|
485
494
|
"aia-r1"
|
|
486
|
-
>>> _resolve_dataset_name("aia", None)
|
|
487
|
-
"aia"
|
|
495
|
+
>>> _resolve_dataset_name("aia-{release}", None, "aia-r2")
|
|
496
|
+
"aia-r2"
|
|
488
497
|
"""
|
|
489
|
-
if release and "{release}" in
|
|
490
|
-
|
|
491
|
-
|
|
498
|
+
if release and "{release}" in dataset_template:
|
|
499
|
+
resolved_name = dataset_template.format(release=release)
|
|
500
|
+
else:
|
|
501
|
+
resolved_name = dataset_name or self.dataset_default
|
|
502
|
+
|
|
503
|
+
if "{release}" in resolved_name:
|
|
504
|
+
raise ValueError(f"Unresolved release placeholder in dataset name: {resolved_name}")
|
|
505
|
+
|
|
506
|
+
return resolved_name
|
|
492
507
|
|
|
493
508
|
def _build_title_with_tags(self, tags: list[str], filename: str) -> str:
|
|
494
509
|
"""
|
|
@@ -521,7 +536,7 @@ class RAGFlowClient:
|
|
|
521
536
|
OPTIMIZED: Now accepts pre-read content to avoid redundant file I/O.
|
|
522
537
|
|
|
523
538
|
This method:
|
|
524
|
-
1. Resolves dataset name
|
|
539
|
+
1. Resolves the target dataset name
|
|
525
540
|
2. Ensures dataset exists
|
|
526
541
|
3. Builds title with tag prefixes
|
|
527
542
|
4. Checks if document exists (by ims_doc_id)
|
|
@@ -529,6 +544,12 @@ class RAGFlowClient:
|
|
|
529
544
|
6. Deletes existing document if changed
|
|
530
545
|
7. Uploads new document with metadata
|
|
531
546
|
|
|
547
|
+
Dataset name resolution precedence:
|
|
548
|
+
1. If metadata.release is present, and dataset_template contains "{release}",
|
|
549
|
+
resolve dataset_template with the release.
|
|
550
|
+
2. Otherwise, use dataset_name when provided.
|
|
551
|
+
3. Otherwise, fall back to dataset_default.
|
|
552
|
+
|
|
532
553
|
Args:
|
|
533
554
|
file_path: Path to file (for filename, backward compatibility)
|
|
534
555
|
metadata: Document metadata with pre-calculated hash
|
|
@@ -567,10 +588,7 @@ class RAGFlowClient:
|
|
|
567
588
|
actual_hash = metadata.content_hash
|
|
568
589
|
|
|
569
590
|
# Resolve dataset name
|
|
570
|
-
resolved_name = self._resolve_dataset_name(
|
|
571
|
-
dataset_template if "{release}" in dataset_template else (dataset_name or dataset_template),
|
|
572
|
-
metadata.release
|
|
573
|
-
)
|
|
591
|
+
resolved_name = self._resolve_dataset_name(dataset_template, metadata.release, dataset_name)
|
|
574
592
|
|
|
575
593
|
# Ensure dataset exists (dry_run gates the underlying create_dataset call)
|
|
576
594
|
dataset = self._ensure_dataset(
|
|
@@ -27,14 +27,27 @@ class DatasetService:
|
|
|
27
27
|
|
|
28
28
|
def resolve_dataset_name(self, args_dataset: Optional[str]) -> tuple[Optional[str], bool]:
|
|
29
29
|
"""
|
|
30
|
-
Resolve dataset
|
|
31
|
-
|
|
30
|
+
Resolve which dataset to act on.
|
|
31
|
+
|
|
32
|
+
How the name is picked:
|
|
33
|
+
1. --dataset given -> use it (False)
|
|
34
|
+
2. else list server datasets, keep those starting with the template
|
|
35
|
+
prefix ("aia-" from "aia-{release}")
|
|
36
|
+
3. exactly one match -> use it (True)
|
|
37
|
+
4. several matches -> give up, ask user (None, False)
|
|
38
|
+
5. no matches -> use dataset_default (True)
|
|
39
|
+
|
|
32
40
|
Args:
|
|
33
41
|
args_dataset: Dataset name from arguments (can be None)
|
|
34
|
-
|
|
42
|
+
|
|
35
43
|
Returns:
|
|
36
44
|
Tuple of (dataset_name: str or None, auto_detected: bool)
|
|
37
45
|
Returns (None, False) if resolution fails
|
|
46
|
+
|
|
47
|
+
auto_detected answers "did the caller supply this name?", not "did
|
|
48
|
+
we find it on the server". False only for step 1. True for steps 3
|
|
49
|
+
and 5 alike: the caller supplied nothing and this method chose.
|
|
50
|
+
True on step 5 is correct.
|
|
38
51
|
"""
|
|
39
52
|
# Explicit dataset provided
|
|
40
53
|
if args_dataset:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|