pltr-cli 0.11.0__py3-none-any.whl → 0.13.0__py3-none-any.whl
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.
- pltr/__init__.py +1 -1
- pltr/cli.py +40 -0
- pltr/commands/admin.py +565 -11
- pltr/commands/aip_agents.py +333 -0
- pltr/commands/connectivity.py +309 -1
- pltr/commands/cp.py +103 -0
- pltr/commands/dataset.py +104 -4
- pltr/commands/functions.py +503 -0
- pltr/commands/language_models.py +515 -0
- pltr/commands/mediasets.py +176 -0
- pltr/commands/models.py +362 -0
- pltr/commands/ontology.py +44 -13
- pltr/commands/orchestration.py +167 -11
- pltr/commands/project.py +231 -22
- pltr/commands/resource.py +416 -17
- pltr/commands/space.py +25 -303
- pltr/commands/sql.py +54 -7
- pltr/commands/streams.py +616 -0
- pltr/commands/third_party_applications.py +82 -0
- pltr/services/admin.py +331 -3
- pltr/services/aip_agents.py +147 -0
- pltr/services/base.py +104 -1
- pltr/services/connectivity.py +139 -0
- pltr/services/copy.py +391 -0
- pltr/services/dataset.py +77 -4
- pltr/services/folder.py +6 -1
- pltr/services/functions.py +223 -0
- pltr/services/language_models.py +281 -0
- pltr/services/mediasets.py +144 -9
- pltr/services/models.py +179 -0
- pltr/services/ontology.py +48 -1
- pltr/services/orchestration.py +133 -1
- pltr/services/project.py +213 -39
- pltr/services/resource.py +229 -60
- pltr/services/space.py +24 -175
- pltr/services/sql.py +44 -20
- pltr/services/streams.py +290 -0
- pltr/services/third_party_applications.py +53 -0
- pltr/utils/formatting.py +195 -1
- pltr/utils/pagination.py +325 -0
- {pltr_cli-0.11.0.dist-info → pltr_cli-0.13.0.dist-info}/METADATA +55 -4
- pltr_cli-0.13.0.dist-info/RECORD +70 -0
- {pltr_cli-0.11.0.dist-info → pltr_cli-0.13.0.dist-info}/WHEEL +1 -1
- pltr_cli-0.11.0.dist-info/RECORD +0 -55
- {pltr_cli-0.11.0.dist-info → pltr_cli-0.13.0.dist-info}/entry_points.txt +0 -0
- {pltr_cli-0.11.0.dist-info → pltr_cli-0.13.0.dist-info}/licenses/LICENSE +0 -0
pltr/utils/pagination.py
ADDED
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Pagination utilities for handling large result sets.
|
|
3
|
+
|
|
4
|
+
This module provides a unified interface for pagination across different
|
|
5
|
+
SDK patterns used by the Foundry platform.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from dataclasses import dataclass, field
|
|
9
|
+
from typing import Any, Callable, Dict, List, Optional
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@dataclass
|
|
13
|
+
class PaginationConfig:
|
|
14
|
+
"""
|
|
15
|
+
Configuration for pagination behavior.
|
|
16
|
+
|
|
17
|
+
Attributes:
|
|
18
|
+
page_size: Number of items per page (None = use service default)
|
|
19
|
+
max_pages: Maximum number of pages to fetch (None = fetch all)
|
|
20
|
+
page_token: Token to resume from a specific page
|
|
21
|
+
fetch_all: If True, overrides max_pages to fetch all available pages
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
page_size: Optional[int] = None
|
|
25
|
+
max_pages: Optional[int] = 1 # Default: fetch single page
|
|
26
|
+
page_token: Optional[str] = None
|
|
27
|
+
fetch_all: bool = False
|
|
28
|
+
|
|
29
|
+
def should_show_progress(self) -> bool:
|
|
30
|
+
"""
|
|
31
|
+
Determine if progress tracking should be shown.
|
|
32
|
+
|
|
33
|
+
Returns:
|
|
34
|
+
True if fetching multiple pages with known max_pages
|
|
35
|
+
"""
|
|
36
|
+
return self.max_pages is not None and self.max_pages > 1 and not self.fetch_all
|
|
37
|
+
|
|
38
|
+
def effective_max_pages(self) -> Optional[int]:
|
|
39
|
+
"""
|
|
40
|
+
Get the effective maximum pages to fetch.
|
|
41
|
+
|
|
42
|
+
Returns:
|
|
43
|
+
None if fetch_all is True, otherwise max_pages value
|
|
44
|
+
"""
|
|
45
|
+
return None if self.fetch_all else self.max_pages
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
@dataclass
|
|
49
|
+
class PaginationMetadata:
|
|
50
|
+
"""
|
|
51
|
+
Metadata about pagination state.
|
|
52
|
+
|
|
53
|
+
Attributes:
|
|
54
|
+
current_page: Current page number (1-indexed)
|
|
55
|
+
items_fetched: Total number of items fetched
|
|
56
|
+
next_page_token: Token for fetching the next page (if available)
|
|
57
|
+
has_more: Whether more pages are available
|
|
58
|
+
total_pages_fetched: Total number of pages fetched so far
|
|
59
|
+
"""
|
|
60
|
+
|
|
61
|
+
current_page: int = 1
|
|
62
|
+
items_fetched: int = 0
|
|
63
|
+
next_page_token: Optional[str] = None
|
|
64
|
+
has_more: bool = False
|
|
65
|
+
total_pages_fetched: int = 0
|
|
66
|
+
|
|
67
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
68
|
+
"""
|
|
69
|
+
Convert metadata to dictionary for JSON serialization.
|
|
70
|
+
|
|
71
|
+
Returns:
|
|
72
|
+
Dictionary representation of metadata
|
|
73
|
+
"""
|
|
74
|
+
result: Dict[str, Any] = {
|
|
75
|
+
"page": self.current_page,
|
|
76
|
+
"items_count": self.items_fetched,
|
|
77
|
+
"has_more": self.has_more,
|
|
78
|
+
"total_pages_fetched": self.total_pages_fetched,
|
|
79
|
+
}
|
|
80
|
+
if self.next_page_token:
|
|
81
|
+
result["next_page_token"] = self.next_page_token
|
|
82
|
+
return result
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
@dataclass
|
|
86
|
+
class PaginationResult:
|
|
87
|
+
"""
|
|
88
|
+
Wrapper for paginated results with metadata.
|
|
89
|
+
|
|
90
|
+
Attributes:
|
|
91
|
+
data: List of items fetched
|
|
92
|
+
metadata: Pagination metadata
|
|
93
|
+
"""
|
|
94
|
+
|
|
95
|
+
data: List[Any] = field(default_factory=list)
|
|
96
|
+
metadata: PaginationMetadata = field(default_factory=PaginationMetadata)
|
|
97
|
+
|
|
98
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
99
|
+
"""
|
|
100
|
+
Convert result to dictionary for JSON serialization.
|
|
101
|
+
|
|
102
|
+
Returns:
|
|
103
|
+
Dictionary with data and pagination metadata
|
|
104
|
+
"""
|
|
105
|
+
return {
|
|
106
|
+
"data": self.data,
|
|
107
|
+
"pagination": self.metadata.to_dict(),
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
class ResponsePaginationHandler:
|
|
112
|
+
"""
|
|
113
|
+
Handler for SDK Pattern B: Response-based pagination.
|
|
114
|
+
|
|
115
|
+
This handler works with SDK methods that return response objects
|
|
116
|
+
with explicit `.data` and `.next_page_token` attributes.
|
|
117
|
+
|
|
118
|
+
Example SDK methods:
|
|
119
|
+
- admin.User.list()
|
|
120
|
+
- orchestration.Build.search()
|
|
121
|
+
"""
|
|
122
|
+
|
|
123
|
+
def collect_pages(
|
|
124
|
+
self,
|
|
125
|
+
fetch_fn: Callable[[Optional[str]], Dict[str, Any]],
|
|
126
|
+
config: PaginationConfig,
|
|
127
|
+
progress_callback: Optional[Callable[[int, int], None]] = None,
|
|
128
|
+
) -> PaginationResult:
|
|
129
|
+
"""
|
|
130
|
+
Collect pages using a fetch function.
|
|
131
|
+
|
|
132
|
+
Args:
|
|
133
|
+
fetch_fn: Function that accepts a page_token and returns a dict
|
|
134
|
+
with 'data' and 'next_page_token' keys
|
|
135
|
+
config: Pagination configuration
|
|
136
|
+
progress_callback: Optional callback(page_num, items_count)
|
|
137
|
+
|
|
138
|
+
Returns:
|
|
139
|
+
PaginationResult with collected items and metadata
|
|
140
|
+
|
|
141
|
+
Example:
|
|
142
|
+
>>> def fetch(token):
|
|
143
|
+
... response = service.list(page_token=token)
|
|
144
|
+
... return {"data": response.data, "next_page_token": response.next_page_token}
|
|
145
|
+
>>> handler = ResponsePaginationHandler()
|
|
146
|
+
>>> result = handler.collect_pages(fetch, config)
|
|
147
|
+
"""
|
|
148
|
+
all_items: List[Any] = []
|
|
149
|
+
page_num = 0
|
|
150
|
+
current_token = config.page_token
|
|
151
|
+
max_pages = config.effective_max_pages()
|
|
152
|
+
|
|
153
|
+
while True:
|
|
154
|
+
try:
|
|
155
|
+
# Fetch the current page
|
|
156
|
+
response = fetch_fn(current_token)
|
|
157
|
+
page_data = response.get("data", [])
|
|
158
|
+
next_token = response.get("next_page_token")
|
|
159
|
+
|
|
160
|
+
# Add items from this page
|
|
161
|
+
all_items.extend(page_data)
|
|
162
|
+
page_num += 1
|
|
163
|
+
|
|
164
|
+
# Update progress
|
|
165
|
+
if progress_callback:
|
|
166
|
+
progress_callback(page_num, len(all_items))
|
|
167
|
+
|
|
168
|
+
# Check if we should continue
|
|
169
|
+
has_more = next_token is not None
|
|
170
|
+
should_stop = (
|
|
171
|
+
not has_more # No more pages
|
|
172
|
+
or (
|
|
173
|
+
max_pages is not None and page_num >= max_pages
|
|
174
|
+
) # Reached max pages
|
|
175
|
+
)
|
|
176
|
+
|
|
177
|
+
if should_stop:
|
|
178
|
+
metadata = PaginationMetadata(
|
|
179
|
+
current_page=page_num,
|
|
180
|
+
items_fetched=len(all_items),
|
|
181
|
+
next_page_token=next_token,
|
|
182
|
+
has_more=has_more,
|
|
183
|
+
total_pages_fetched=page_num,
|
|
184
|
+
)
|
|
185
|
+
return PaginationResult(data=all_items, metadata=metadata)
|
|
186
|
+
|
|
187
|
+
# Continue to next page
|
|
188
|
+
current_token = next_token
|
|
189
|
+
|
|
190
|
+
except Exception as e:
|
|
191
|
+
# Error occurred while fetching - return partial results
|
|
192
|
+
# Include the error information in metadata for user awareness
|
|
193
|
+
if all_items:
|
|
194
|
+
# We have partial results - return what we got so far
|
|
195
|
+
import sys
|
|
196
|
+
|
|
197
|
+
print(
|
|
198
|
+
f"\nWarning: Error fetching page {page_num + 1}: {e}",
|
|
199
|
+
file=sys.stderr,
|
|
200
|
+
)
|
|
201
|
+
print(
|
|
202
|
+
f"Returning partial results ({len(all_items)} items from {page_num} pages)",
|
|
203
|
+
file=sys.stderr,
|
|
204
|
+
)
|
|
205
|
+
|
|
206
|
+
metadata = PaginationMetadata(
|
|
207
|
+
current_page=page_num,
|
|
208
|
+
items_fetched=len(all_items),
|
|
209
|
+
next_page_token=current_token, # Token for retry
|
|
210
|
+
has_more=True, # Assume more pages exist
|
|
211
|
+
total_pages_fetched=page_num,
|
|
212
|
+
)
|
|
213
|
+
return PaginationResult(data=all_items, metadata=metadata)
|
|
214
|
+
else:
|
|
215
|
+
# No data fetched yet - re-raise the error
|
|
216
|
+
raise
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
class IteratorPaginationHandler:
|
|
220
|
+
"""
|
|
221
|
+
Handler for SDK Pattern A: Iterator-based pagination.
|
|
222
|
+
|
|
223
|
+
This handler works with SDK methods that return ResourceIterator instances
|
|
224
|
+
that automatically paginate internally and expose next_page_token.
|
|
225
|
+
|
|
226
|
+
Example SDK methods:
|
|
227
|
+
- ontology.OntologyObject.list()
|
|
228
|
+
- Dataset.File.list()
|
|
229
|
+
|
|
230
|
+
Note: The SDK's ResourceIterator exposes .next_page_token and .data properties
|
|
231
|
+
which we leverage for proper pagination support.
|
|
232
|
+
"""
|
|
233
|
+
|
|
234
|
+
def collect_pages(
|
|
235
|
+
self,
|
|
236
|
+
iterator: Any, # ResourceIterator from SDK
|
|
237
|
+
config: PaginationConfig,
|
|
238
|
+
progress_callback: Optional[Callable[[int, int], None]] = None,
|
|
239
|
+
) -> PaginationResult:
|
|
240
|
+
"""
|
|
241
|
+
Collect pages from a ResourceIterator using SDK's pagination.
|
|
242
|
+
|
|
243
|
+
Args:
|
|
244
|
+
iterator: ResourceIterator instance from SDK (has .next_page_token property)
|
|
245
|
+
config: Pagination configuration
|
|
246
|
+
progress_callback: Optional callback(page_num, items_count)
|
|
247
|
+
|
|
248
|
+
Returns:
|
|
249
|
+
PaginationResult with collected items and metadata
|
|
250
|
+
|
|
251
|
+
Note:
|
|
252
|
+
This leverages the SDK's ResourceIterator.next_page_token property
|
|
253
|
+
for proper token-based pagination and resume capability.
|
|
254
|
+
"""
|
|
255
|
+
all_items: List[Any] = []
|
|
256
|
+
page_num = 0
|
|
257
|
+
max_pages = config.effective_max_pages()
|
|
258
|
+
next_token = None
|
|
259
|
+
has_more = False
|
|
260
|
+
|
|
261
|
+
try:
|
|
262
|
+
# Collect items from the iterator
|
|
263
|
+
for item in iterator:
|
|
264
|
+
all_items.append(item)
|
|
265
|
+
|
|
266
|
+
# Check if we've completed a "page" worth of items
|
|
267
|
+
page_size = config.page_size or 20 # Default page size
|
|
268
|
+
if len(all_items) % page_size == 0:
|
|
269
|
+
page_num += 1
|
|
270
|
+
|
|
271
|
+
# Update progress
|
|
272
|
+
if progress_callback:
|
|
273
|
+
progress_callback(page_num, len(all_items))
|
|
274
|
+
|
|
275
|
+
# Check if we should stop
|
|
276
|
+
if max_pages is not None and page_num >= max_pages:
|
|
277
|
+
# Capture next_page_token BEFORE breaking while iterator state is known
|
|
278
|
+
if hasattr(iterator, "next_page_token"):
|
|
279
|
+
next_token = iterator.next_page_token
|
|
280
|
+
has_more = next_token is not None
|
|
281
|
+
break
|
|
282
|
+
|
|
283
|
+
# Calculate final page number if items don't align with page_size
|
|
284
|
+
if len(all_items) % page_size != 0:
|
|
285
|
+
page_num += 1
|
|
286
|
+
if progress_callback:
|
|
287
|
+
progress_callback(page_num, len(all_items))
|
|
288
|
+
|
|
289
|
+
# If we didn't break early (exhausted iterator), check for next_page_token
|
|
290
|
+
if next_token is None and hasattr(iterator, "next_page_token"):
|
|
291
|
+
next_token = iterator.next_page_token
|
|
292
|
+
has_more = next_token is not None
|
|
293
|
+
|
|
294
|
+
except Exception as e:
|
|
295
|
+
# Error occurred during iteration - return partial results
|
|
296
|
+
if all_items:
|
|
297
|
+
# We have partial results
|
|
298
|
+
import sys
|
|
299
|
+
|
|
300
|
+
print(
|
|
301
|
+
f"\nWarning: Error during iteration: {e}",
|
|
302
|
+
file=sys.stderr,
|
|
303
|
+
)
|
|
304
|
+
print(
|
|
305
|
+
f"Returning partial results ({len(all_items)} items)",
|
|
306
|
+
file=sys.stderr,
|
|
307
|
+
)
|
|
308
|
+
|
|
309
|
+
# Try to get next_page_token if available
|
|
310
|
+
if hasattr(iterator, "next_page_token"):
|
|
311
|
+
next_token = iterator.next_page_token
|
|
312
|
+
has_more = next_token is not None
|
|
313
|
+
else:
|
|
314
|
+
# No data fetched yet - re-raise the error
|
|
315
|
+
raise
|
|
316
|
+
|
|
317
|
+
metadata = PaginationMetadata(
|
|
318
|
+
current_page=page_num,
|
|
319
|
+
items_fetched=len(all_items),
|
|
320
|
+
next_page_token=next_token,
|
|
321
|
+
has_more=has_more,
|
|
322
|
+
total_pages_fetched=page_num,
|
|
323
|
+
)
|
|
324
|
+
|
|
325
|
+
return PaginationResult(data=all_items, metadata=metadata)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pltr-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.13.0
|
|
4
4
|
Summary: Command-line interface for Palantir Foundry APIs
|
|
5
5
|
Project-URL: Homepage, https://github.com/anjor/pltr-cli
|
|
6
6
|
Project-URL: Repository, https://github.com/anjor/pltr-cli
|
|
@@ -27,8 +27,9 @@ Classifier: Topic :: System :: Systems Administration
|
|
|
27
27
|
Classifier: Topic :: Utilities
|
|
28
28
|
Requires-Python: >=3.9
|
|
29
29
|
Requires-Dist: click-repl>=0.3.0
|
|
30
|
-
Requires-Dist: foundry-platform-sdk
|
|
30
|
+
Requires-Dist: foundry-platform-sdk<2.0.0,>=1.69.0
|
|
31
31
|
Requires-Dist: keyring>=25.6.0
|
|
32
|
+
Requires-Dist: pandas>=2.0.0
|
|
32
33
|
Requires-Dist: python-dotenv>=1.1.1
|
|
33
34
|
Requires-Dist: requests>=2.32.4
|
|
34
35
|
Requires-Dist: rich>=14.1.0
|
|
@@ -37,7 +38,7 @@ Description-Content-Type: text/markdown
|
|
|
37
38
|
|
|
38
39
|
# pltr-cli
|
|
39
40
|
|
|
40
|
-
A comprehensive command-line interface for Palantir Foundry APIs, providing
|
|
41
|
+
A comprehensive command-line interface for Palantir Foundry APIs, providing 81+ commands for data analysis, dataset management, ontology operations, orchestration, SQL queries, folder management, and administrative tasks.
|
|
41
42
|
|
|
42
43
|
## Overview
|
|
43
44
|
|
|
@@ -55,6 +56,9 @@ A comprehensive command-line interface for Palantir Foundry APIs, providing 80+
|
|
|
55
56
|
- 🎯 **Comprehensive Ontology Access**: 13 commands for objects, actions, and queries
|
|
56
57
|
- 🏗️ **Orchestration Management**: Create, manage, and monitor builds, jobs, and schedules
|
|
57
58
|
- 🎬 **MediaSets Operations**: Upload, download, and manage media content with transaction support
|
|
59
|
+
- 🤖 **Models Management**: Create and inspect ML models and versions in the model registry
|
|
60
|
+
- 🌊 **Streams Management**: Manage streaming datasets and publish real-time data
|
|
61
|
+
- 💬 **Language Models**: Interact with Claude and OpenAI embeddings for LLM operations
|
|
58
62
|
- 📝 **Full SQL Support**: Execute, submit, monitor, and export query results
|
|
59
63
|
- 👥 **Admin Operations**: User, group, role, and organization management (16 commands)
|
|
60
64
|
- 💻 **Interactive Shell**: REPL mode with tab completion and command history
|
|
@@ -215,6 +219,7 @@ pltr connectivity import table <conn-rid> <table-name> <dataset-rid> --execute
|
|
|
215
219
|
# Administrative
|
|
216
220
|
pltr admin user current # Current user info
|
|
217
221
|
pltr admin user list # List users
|
|
222
|
+
pltr third-party-apps get <rid> # Get third-party application details
|
|
218
223
|
|
|
219
224
|
# Interactive & Tools
|
|
220
225
|
pltr shell # Interactive mode
|
|
@@ -332,6 +337,52 @@ pltr media-sets download ri.mediasets.main.media-set.abc \
|
|
|
332
337
|
- Preview mode (`--preview`)
|
|
333
338
|
- Transaction-based upload workflow
|
|
334
339
|
|
|
340
|
+
### 🤖 Models Commands
|
|
341
|
+
|
|
342
|
+
pltr-cli provides support for managing ML models and versions in the Foundry model registry. This is distinct from the LanguageModels module, which handles LLM chat and embeddings.
|
|
343
|
+
|
|
344
|
+
**Note**: The SDK does not provide a way to list all models. Use the Foundry web UI or Ontology API to discover models.
|
|
345
|
+
|
|
346
|
+
#### Model Operations
|
|
347
|
+
```bash
|
|
348
|
+
# Create a new model
|
|
349
|
+
pltr models model create "fraud-detector" --folder ri.compass.main.folder.xxx
|
|
350
|
+
|
|
351
|
+
# Get model details
|
|
352
|
+
pltr models model get ri.foundry.main.model.abc123
|
|
353
|
+
|
|
354
|
+
# Get model as JSON
|
|
355
|
+
pltr models model get ri.foundry.main.model.abc123 --format json
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
#### Model Version Operations
|
|
359
|
+
```bash
|
|
360
|
+
# List all versions of a model
|
|
361
|
+
pltr models version list ri.foundry.main.model.abc123
|
|
362
|
+
|
|
363
|
+
# List with pagination
|
|
364
|
+
pltr models version list ri.foundry.main.model.abc123 --page-size 50
|
|
365
|
+
|
|
366
|
+
# Get next page
|
|
367
|
+
pltr models version list ri.foundry.main.model.abc123 \
|
|
368
|
+
--page-size 50 --page-token <token-from-previous-response>
|
|
369
|
+
|
|
370
|
+
# Get specific version details
|
|
371
|
+
pltr models version get ri.foundry.main.model.abc123 v1.0.0
|
|
372
|
+
|
|
373
|
+
# Save version details to file
|
|
374
|
+
pltr models version get ri.foundry.main.model.abc123 v1.0.0 \
|
|
375
|
+
--format json --output version-details.json
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
**All Models commands support:**
|
|
379
|
+
- Multiple output formats (table, JSON, CSV)
|
|
380
|
+
- File output (`--output filename`)
|
|
381
|
+
- Profile selection (`--profile production`)
|
|
382
|
+
- Preview mode (`--preview`)
|
|
383
|
+
|
|
384
|
+
**Note**: Model version creation requires specialized ML tooling and is not provided via CLI. Use the Python SDK directly for version creation with dill-serialized models.
|
|
385
|
+
|
|
335
386
|
### 📊 Dataset Transaction Management
|
|
336
387
|
|
|
337
388
|
pltr-cli provides comprehensive transaction management for datasets, allowing atomic operations with rollback capability:
|
|
@@ -470,7 +521,7 @@ See **[API Wrapper Documentation](docs/api/wrapper.md)** for detailed architectu
|
|
|
470
521
|
|
|
471
522
|
pltr-cli is **production-ready** with comprehensive features:
|
|
472
523
|
|
|
473
|
-
- ✅ **
|
|
524
|
+
- ✅ **81+ Commands** across 11 command groups
|
|
474
525
|
- ✅ **273 Unit Tests** with 67% code coverage
|
|
475
526
|
- ✅ **Published on PyPI** with automated releases
|
|
476
527
|
- ✅ **Cross-Platform** support (Windows, macOS, Linux)
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
pltr/__init__.py,sha256=DgpLNbv0e1LIEOOe54Db8_390i9pelMEFEnsBsNmyhA,23
|
|
2
|
+
pltr/__main__.py,sha256=HWJ49UoAYBQCf8kjuySPmBTuUjTZrOx-y6PzMTyS1KE,879
|
|
3
|
+
pltr/cli.py,sha256=dQlycWOS56mkhBx1hRoiE8NcpZVUFagSeIYsImgAT-4,3595
|
|
4
|
+
pltr/auth/__init__.py,sha256=G0V-Rh25FaJsH2nhrf146XQQG_ApdbyPJNuHJC25kgk,38
|
|
5
|
+
pltr/auth/base.py,sha256=LvmCwS7A0q0CITcym8udPzdACL52_jSGusiaeCTOaE8,981
|
|
6
|
+
pltr/auth/manager.py,sha256=ZqlGefr1a8MGx0g7kkQhpmiuVp0XTg3f43yMBCk-IRo,4305
|
|
7
|
+
pltr/auth/oauth.py,sha256=uTl5T3MSPlq8Jb3c45hib0vj-GQoyLxmS_NbnKez5dI,2844
|
|
8
|
+
pltr/auth/storage.py,sha256=C7I3-22CJcnrKGNdxk9nXjphsnqQVguT5gNfAnR78Ok,2474
|
|
9
|
+
pltr/auth/token.py,sha256=V48kxGn7CFbNGo17er5oI_ZA3xJ3iS9TsFjphZYqS2s,1925
|
|
10
|
+
pltr/commands/__init__.py,sha256=iOLJ1ql4mz-3-4nz21hAqjd-9IjpYAIxr9SJQKHNFxM,29
|
|
11
|
+
pltr/commands/admin.py,sha256=4HLFal2oqIxnyvMUP500HwiMTP7fLdXkArrZNOGfOnY,35373
|
|
12
|
+
pltr/commands/aip_agents.py,sha256=vPFRNmj6hR8sbedaIjgb77T-b4-cmodCwV4Z2m8T5NE,10324
|
|
13
|
+
pltr/commands/alias.py,sha256=r9xMsQNrGvaixSlspzoO2IXQ44LFXuZM4itt8vC0dRc,6862
|
|
14
|
+
pltr/commands/completion.py,sha256=YTxaRL4-rDs5n7aXf3ogFsxbHVJUBo_HiBbd0fbBPZ0,10870
|
|
15
|
+
pltr/commands/configure.py,sha256=oYj-VlOEj3MDwtB2RC4bYOYzI_sXTanPnz7y1GmMTqY,4800
|
|
16
|
+
pltr/commands/connectivity.py,sha256=6oqKjEx0a2vLGIXhDrwRXVP5ATa36QQQ7dNOvXrqM-8,25442
|
|
17
|
+
pltr/commands/cp.py,sha256=yYUJ9gf_px2NvbmDEFtWkhHM96ddzL5-2pJUTSW0dIg,3050
|
|
18
|
+
pltr/commands/dataset.py,sha256=TEqyALNgSO1jOX6RJvOHkvsvfC-oYL_94__q0fd4gIg,56693
|
|
19
|
+
pltr/commands/folder.py,sha256=ItUp49lyDWIoMv8RaNDo7JFyrlk-r_Klab9FCPXwUM8,10721
|
|
20
|
+
pltr/commands/functions.py,sha256=Papb_PcNj1zA05rUkQm8sfjoVAQnIK3mLrJHzfTQYDM,15018
|
|
21
|
+
pltr/commands/language_models.py,sha256=vjiAKnhBEBfxDP2FgfLeJeaDNnCTxe9aX9aVdTzZEi0,16703
|
|
22
|
+
pltr/commands/mediasets.py,sha256=u_Ju3vsWl8ZVQvKxArk9pFQJVVrr9eua1X0PTaDxDwk,21832
|
|
23
|
+
pltr/commands/models.py,sha256=6pouuFysH5p27H8e9Wo-jbG6uv5SjQplRPh-2Cw7bo0,10600
|
|
24
|
+
pltr/commands/ontology.py,sha256=ArDdlYdYy9CnPQWCMKHbwWYmWKFx48jul224urQDENM,22956
|
|
25
|
+
pltr/commands/orchestration.py,sha256=qQxSdG9p76dj2FgYxv8IY-D6WrSDxNJik-vYVkDWARM,28483
|
|
26
|
+
pltr/commands/project.py,sha256=jxx9nk4v62IFM13WnycK34QWJ2NEn4Q4XPFPND1rGo0,21274
|
|
27
|
+
pltr/commands/resource.py,sha256=SjyJBokiMTMYgpQF4-edD7pafYskNiaGz3s_AhIuFR8,32103
|
|
28
|
+
pltr/commands/resource_role.py,sha256=pM0DQxLBU9xyIYzLv1Y0sOMZG5oZ1INNSkMubYBGHJM,15394
|
|
29
|
+
pltr/commands/shell.py,sha256=QLF7TEGpaau9i0A9s3VjnegvtHde-SLRqI4suJFT4WI,3622
|
|
30
|
+
pltr/commands/space.py,sha256=uuyl024Cp3APh-CzLc55eVuhkIfQmmmqFKGSdFfYHuc,12547
|
|
31
|
+
pltr/commands/sql.py,sha256=Nn3fyrqS11LxWV_w0V73Wvv5dxHATPBKEPQHlS8HMvA,14148
|
|
32
|
+
pltr/commands/streams.py,sha256=hm3OQg-X4-qW5tvMjMDAjh4v8U31lHYTq7_VgqmP1q8,17992
|
|
33
|
+
pltr/commands/third_party_applications.py,sha256=0fGSx7anaO4sVxE8-I8lQlOqdRO5J46CjQ3ABjAdI-8,2508
|
|
34
|
+
pltr/commands/verify.py,sha256=n8LWhbfGieYa-a5_l3MxqkYbdpyVf8-i0FQIL__AaPA,6650
|
|
35
|
+
pltr/config/__init__.py,sha256=Y6gARy5lUHy-OJaOUxtfXoeQVNZV5QHLl6uKHQ8tpTk,41
|
|
36
|
+
pltr/config/aliases.py,sha256=ZmesZWMfa5riZlVe3fyC7EI3uIzxEGsDHz-8shOpIbM,6947
|
|
37
|
+
pltr/config/profiles.py,sha256=XMUIp6Ez5LNC6rGXZe2JLH7IKepXhARtuc8ASUA9FYA,3431
|
|
38
|
+
pltr/config/settings.py,sha256=bfIiosPqH_W73TOHS71DvgZdAHka4fJDopU1SvBRFuQ,2908
|
|
39
|
+
pltr/services/__init__.py,sha256=zQpgrqPdAkZI-nobi33mctU2-iGNgazzvjBVY8YRbSQ,101
|
|
40
|
+
pltr/services/admin.py,sha256=9ptQqR83003hMZxsuh8i7fZc85GaXX_vST6ESZFtlK8,21228
|
|
41
|
+
pltr/services/aip_agents.py,sha256=fyzJPXcaIAPwWvDDtwR53fpDTDfSUD0DEJvieaOzOpQ,5218
|
|
42
|
+
pltr/services/base.py,sha256=R64ao_k-HihjW-WugDsJlo0Z4sV3aBGe0v2TyN4FwvM,7266
|
|
43
|
+
pltr/services/connectivity.py,sha256=0KNoZJFms5R3-zHiWlCSQe5aeBWlxIiwIxpOJw7Y-dI,15107
|
|
44
|
+
pltr/services/copy.py,sha256=bJEQYVAiouRMiz25QU3ET7Q6g4oXIqeTsuyrbwQpuxs,15081
|
|
45
|
+
pltr/services/dataset.py,sha256=DnrUr_Rkh6jNwkQXj9mfXWgOFA2lC09AAb7lbCBUsgU,47581
|
|
46
|
+
pltr/services/folder.py,sha256=pxtHPGujxEr7xLmF8zQz-InLePkjeLbIn3f9zNqjlKs,5586
|
|
47
|
+
pltr/services/functions.py,sha256=Kk7HRz-pY2NHTn0MX9EJ2JGR_J8wrKLb2prlI_6H4gg,7690
|
|
48
|
+
pltr/services/language_models.py,sha256=cdSJenEkeUCWHaSsE__K1EW5DLZg6m_nv3GDbnLxbMY,10675
|
|
49
|
+
pltr/services/mediasets.py,sha256=dNUGVLb50WMOXq06_A6UIrELRa23c4yfjlzpF1vGD8w,14499
|
|
50
|
+
pltr/services/models.py,sha256=lglwiMKPS9dAOUQ3O7iPTzL2eqANBOXb5I3WrsanNzQ,5582
|
|
51
|
+
pltr/services/ontology.py,sha256=1E3ejSansyyQRorvws1eeKpbYMBVIOrvEWdVNoqrovI,18652
|
|
52
|
+
pltr/services/orchestration.py,sha256=C-jEW2Q2Mggpdff_WGdnAaRoytj5XyX7n5pEAAJKOfQ,19270
|
|
53
|
+
pltr/services/project.py,sha256=geKw3CpJ862xZ5YBTolWJGVdroacxGhWh9lHGNbXxLo,14791
|
|
54
|
+
pltr/services/resource.py,sha256=HlRer446C7nSY1xThUwdi0gkBF-uGVYn9OX5DOHdv2g,15923
|
|
55
|
+
pltr/services/resource_role.py,sha256=Ootor16c6PR9TNxe6KJyd4W2lYM_HHDxJk-JvZhgRxU,10608
|
|
56
|
+
pltr/services/space.py,sha256=pcP-xEwcwLtaSpUA9ZAv_HPR3ZNysXSYGhJP0UWT0_4,6909
|
|
57
|
+
pltr/services/sql.py,sha256=sVB7A-vp3QdrdFcFCX3e3eGsEwaxcmYS3qwDNDMx1oY,12509
|
|
58
|
+
pltr/services/streams.py,sha256=Imgp-eE980Y9jTzKTZ0nUBptbD2mnEtdhYgG1EMRkIU,9886
|
|
59
|
+
pltr/services/third_party_applications.py,sha256=v-V4CQl371DhSI0l-WMVf-vxfXWddwjS7_DE2IRtad4,1966
|
|
60
|
+
pltr/utils/__init__.py,sha256=DF7TigL1XbKVGM5VjgU8_8AGIszofkdO80oCzLGGnTE,38
|
|
61
|
+
pltr/utils/alias_resolver.py,sha256=DIF7P1UnUU8kqocJfIDEWjYq4s8_0KfqRZBbECeZEh8,1539
|
|
62
|
+
pltr/utils/completion.py,sha256=bjeqjleEfB2YcQFpcxvF0GoQ763F6KBbULSZC4FWY_g,4980
|
|
63
|
+
pltr/utils/formatting.py,sha256=CE0eVojkLIBfMevBDt4BKN_jyIgdLjNSNhpba3gRJGE,57502
|
|
64
|
+
pltr/utils/pagination.py,sha256=BgJ-AOAQQ1grF05lB8Lz3Pi5B8c_boEsa9WQo84Uako,11219
|
|
65
|
+
pltr/utils/progress.py,sha256=BKYbiLO61uhQbibabU7pxvvbAWMRLRmqk4pZldBQK_g,9053
|
|
66
|
+
pltr_cli-0.13.0.dist-info/METADATA,sha256=5cxOGEZunHflBfvbLahPgcd8Mf1-GyKzS80fkakB8kc,19660
|
|
67
|
+
pltr_cli-0.13.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
68
|
+
pltr_cli-0.13.0.dist-info/entry_points.txt,sha256=8tvEcW04kA_oAE2Dwwu-Og9efjl4ESJvs4AzlP2KBdQ,38
|
|
69
|
+
pltr_cli-0.13.0.dist-info/licenses/LICENSE,sha256=6VUFd_ytnOBD2O1tmkKrA-smigi9QEhYr_tge4h4z8Y,1070
|
|
70
|
+
pltr_cli-0.13.0.dist-info/RECORD,,
|
pltr_cli-0.11.0.dist-info/RECORD
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
pltr/__init__.py,sha256=raMu9XA9JEjvdoTmFqcOw7qhJX24rYDP7XmS59TAO-Q,23
|
|
2
|
-
pltr/__main__.py,sha256=HWJ49UoAYBQCf8kjuySPmBTuUjTZrOx-y6PzMTyS1KE,879
|
|
3
|
-
pltr/cli.py,sha256=DikRsWsU7QWvRWHgB6wZIct916ebWyaub7PlAjKJXws,2664
|
|
4
|
-
pltr/auth/__init__.py,sha256=G0V-Rh25FaJsH2nhrf146XQQG_ApdbyPJNuHJC25kgk,38
|
|
5
|
-
pltr/auth/base.py,sha256=LvmCwS7A0q0CITcym8udPzdACL52_jSGusiaeCTOaE8,981
|
|
6
|
-
pltr/auth/manager.py,sha256=ZqlGefr1a8MGx0g7kkQhpmiuVp0XTg3f43yMBCk-IRo,4305
|
|
7
|
-
pltr/auth/oauth.py,sha256=uTl5T3MSPlq8Jb3c45hib0vj-GQoyLxmS_NbnKez5dI,2844
|
|
8
|
-
pltr/auth/storage.py,sha256=C7I3-22CJcnrKGNdxk9nXjphsnqQVguT5gNfAnR78Ok,2474
|
|
9
|
-
pltr/auth/token.py,sha256=V48kxGn7CFbNGo17er5oI_ZA3xJ3iS9TsFjphZYqS2s,1925
|
|
10
|
-
pltr/commands/__init__.py,sha256=iOLJ1ql4mz-3-4nz21hAqjd-9IjpYAIxr9SJQKHNFxM,29
|
|
11
|
-
pltr/commands/admin.py,sha256=foscSO-QuH6uggUR5Rmv9pTqGjEXTUzpmMFj2-8hEJs,17065
|
|
12
|
-
pltr/commands/alias.py,sha256=r9xMsQNrGvaixSlspzoO2IXQ44LFXuZM4itt8vC0dRc,6862
|
|
13
|
-
pltr/commands/completion.py,sha256=YTxaRL4-rDs5n7aXf3ogFsxbHVJUBo_HiBbd0fbBPZ0,10870
|
|
14
|
-
pltr/commands/configure.py,sha256=oYj-VlOEj3MDwtB2RC4bYOYzI_sXTanPnz7y1GmMTqY,4800
|
|
15
|
-
pltr/commands/connectivity.py,sha256=m8_BYwHij_5IbrYFTU_SYYtbqLCjxA8VIQpbdlWJqHs,14758
|
|
16
|
-
pltr/commands/dataset.py,sha256=zuYtBXAGcfRjxE7cP9Hsz2tqSlsdNzdIflGKwytHbVI,53346
|
|
17
|
-
pltr/commands/folder.py,sha256=ItUp49lyDWIoMv8RaNDo7JFyrlk-r_Klab9FCPXwUM8,10721
|
|
18
|
-
pltr/commands/mediasets.py,sha256=FXq7OtYU9wLgUxQFcS_fkA4i_CozGnsYKxh8GOSI0ok,15342
|
|
19
|
-
pltr/commands/ontology.py,sha256=I5USog2YyDP9rTrrhl_nEMmTrM94GICiR0T-HJ9LeAI,21858
|
|
20
|
-
pltr/commands/orchestration.py,sha256=mizGJIuMEJGAW9-ic_q-WawAe4PKBgtJSUfysk6YI68,23227
|
|
21
|
-
pltr/commands/project.py,sha256=nlfyy4OYkYK9rtjOQp9awgCnSJ1P6sgsp0vaXdvkHFY,14183
|
|
22
|
-
pltr/commands/resource.py,sha256=8lS_iHqkvjKwodvPwqaTD2vYbHwPdEx3U1u3IDgvcA4,18392
|
|
23
|
-
pltr/commands/resource_role.py,sha256=pM0DQxLBU9xyIYzLv1Y0sOMZG5oZ1INNSkMubYBGHJM,15394
|
|
24
|
-
pltr/commands/shell.py,sha256=QLF7TEGpaau9i0A9s3VjnegvtHde-SLRqI4suJFT4WI,3622
|
|
25
|
-
pltr/commands/space.py,sha256=R9TN9OQVDtFB92DOjrh81_YYajiQaqRNELsBHK4O-pI,21944
|
|
26
|
-
pltr/commands/sql.py,sha256=wol0Rlvi_RplCFbOg4LCa3VXsOqmRZdFFVv7V6iVkh8,12602
|
|
27
|
-
pltr/commands/verify.py,sha256=n8LWhbfGieYa-a5_l3MxqkYbdpyVf8-i0FQIL__AaPA,6650
|
|
28
|
-
pltr/config/__init__.py,sha256=Y6gARy5lUHy-OJaOUxtfXoeQVNZV5QHLl6uKHQ8tpTk,41
|
|
29
|
-
pltr/config/aliases.py,sha256=ZmesZWMfa5riZlVe3fyC7EI3uIzxEGsDHz-8shOpIbM,6947
|
|
30
|
-
pltr/config/profiles.py,sha256=XMUIp6Ez5LNC6rGXZe2JLH7IKepXhARtuc8ASUA9FYA,3431
|
|
31
|
-
pltr/config/settings.py,sha256=bfIiosPqH_W73TOHS71DvgZdAHka4fJDopU1SvBRFuQ,2908
|
|
32
|
-
pltr/services/__init__.py,sha256=zQpgrqPdAkZI-nobi33mctU2-iGNgazzvjBVY8YRbSQ,101
|
|
33
|
-
pltr/services/admin.py,sha256=8FjExmDeIKeVqkAxM83SVvpp_pH9W-Q33cgVs6BHxLQ,9957
|
|
34
|
-
pltr/services/base.py,sha256=JF9cyYf7njZuj1ldOLdgzIDhJjOfazBvXPNR-gKVnMY,3682
|
|
35
|
-
pltr/services/connectivity.py,sha256=34kazXhue5gNi1_2s2R5Ma4VQe6jP25CO-ztiPhCeZw,10548
|
|
36
|
-
pltr/services/dataset.py,sha256=PB5PrNpnuCfzr7bqQ0corTmFTdZ9j1YWUHtRjIrXorM,44995
|
|
37
|
-
pltr/services/folder.py,sha256=mWElyvn-wXPB5sv8Ik_dLeW5JM6jZg3g9KKBk6UcrlQ,5389
|
|
38
|
-
pltr/services/mediasets.py,sha256=HgHNFWoG9r-5xupANVOxHg_h5EKsBDl6PsO8hwdbm28,9854
|
|
39
|
-
pltr/services/ontology.py,sha256=yZO0c2fzF0XTrXn-RImNWVBCKmAvngL55wxGJXR7mJU,17011
|
|
40
|
-
pltr/services/orchestration.py,sha256=z1lofohVNRVlKyHffo_K1-I-1f9ZqsLKxQuyUOhAGlY,14729
|
|
41
|
-
pltr/services/project.py,sha256=nwLXBX0MWgOnVQ7CAZQHnzZtSJY_hqlGyooFngQSjcc,7740
|
|
42
|
-
pltr/services/resource.py,sha256=J7cGsgy5lsWGu5fGhOQOo5TgFY7x0oCk3e1CRB3V9Dw,10186
|
|
43
|
-
pltr/services/resource_role.py,sha256=Ootor16c6PR9TNxe6KJyd4W2lYM_HHDxJk-JvZhgRxU,10608
|
|
44
|
-
pltr/services/space.py,sha256=4uea1nQ6CA-6_xWoD6n49E4Zm6KbW_7Cq9o89JorMTE,11544
|
|
45
|
-
pltr/services/sql.py,sha256=19cscjlzN8WE1s8_ctiRcrOvMzCfmWRj49vjJ8Gs5Q4,11286
|
|
46
|
-
pltr/utils/__init__.py,sha256=DF7TigL1XbKVGM5VjgU8_8AGIszofkdO80oCzLGGnTE,38
|
|
47
|
-
pltr/utils/alias_resolver.py,sha256=DIF7P1UnUU8kqocJfIDEWjYq4s8_0KfqRZBbECeZEh8,1539
|
|
48
|
-
pltr/utils/completion.py,sha256=bjeqjleEfB2YcQFpcxvF0GoQ763F6KBbULSZC4FWY_g,4980
|
|
49
|
-
pltr/utils/formatting.py,sha256=TpxbOXdXbk_aUUnj8FrjMPLSnTmtlpYZf0Oe6g6Wmvc,50626
|
|
50
|
-
pltr/utils/progress.py,sha256=BKYbiLO61uhQbibabU7pxvvbAWMRLRmqk4pZldBQK_g,9053
|
|
51
|
-
pltr_cli-0.11.0.dist-info/METADATA,sha256=rDBrj8VA3UmOuJvA0bCSN0vcAXrE-IYUQktuc7e3XNQ,17715
|
|
52
|
-
pltr_cli-0.11.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
53
|
-
pltr_cli-0.11.0.dist-info/entry_points.txt,sha256=8tvEcW04kA_oAE2Dwwu-Og9efjl4ESJvs4AzlP2KBdQ,38
|
|
54
|
-
pltr_cli-0.11.0.dist-info/licenses/LICENSE,sha256=6VUFd_ytnOBD2O1tmkKrA-smigi9QEhYr_tge4h4z8Y,1070
|
|
55
|
-
pltr_cli-0.11.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|