pvw-cli 1.2.2__py3-none-any.whl → 1.2.3__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.
Potentially problematic release.
This version of pvw-cli might be problematic. Click here for more details.
- purviewcli/__init__.py +2 -2
- purviewcli/cli/search.py +10 -4
- purviewcli/client/_search.py +8 -8
- {pvw_cli-1.2.2.dist-info → pvw_cli-1.2.3.dist-info}/METADATA +26 -9
- {pvw_cli-1.2.2.dist-info → pvw_cli-1.2.3.dist-info}/RECORD +8 -8
- {pvw_cli-1.2.2.dist-info → pvw_cli-1.2.3.dist-info}/WHEEL +0 -0
- {pvw_cli-1.2.2.dist-info → pvw_cli-1.2.3.dist-info}/entry_points.txt +0 -0
- {pvw_cli-1.2.2.dist-info → pvw_cli-1.2.3.dist-info}/top_level.txt +0 -0
purviewcli/__init__.py
CHANGED
purviewcli/cli/search.py
CHANGED
|
@@ -157,11 +157,17 @@ def _format_search_results(data, show_ids=False):
|
|
|
157
157
|
# Handle collection - try multiple sources
|
|
158
158
|
collection = 'N/A'
|
|
159
159
|
if 'collection' in item and item['collection']:
|
|
160
|
-
|
|
161
|
-
|
|
160
|
+
if isinstance(item['collection'], dict):
|
|
161
|
+
collection = item['collection'].get('name', 'N/A')
|
|
162
|
+
else:
|
|
163
|
+
collection = str(item['collection'])
|
|
164
|
+
elif 'collectionId' in item and item['collectionId']:
|
|
162
165
|
collection = item.get('collectionId', 'N/A')
|
|
163
|
-
elif 'assetName' in item:
|
|
164
|
-
collection
|
|
166
|
+
elif 'assetName' in item and item['assetName']:
|
|
167
|
+
# Try to extract collection from asset name
|
|
168
|
+
asset_name = item.get('assetName', '')
|
|
169
|
+
if asset_name and asset_name != 'N/A':
|
|
170
|
+
collection = asset_name
|
|
165
171
|
|
|
166
172
|
# Build row data with ID always shown
|
|
167
173
|
row_data = [name, entity_type, entity_id, collection, qualified_name]
|
purviewcli/client/_search.py
CHANGED
|
@@ -93,13 +93,13 @@ class Search(Endpoint):
|
|
|
93
93
|
self.endpoint = ENDPOINTS["discovery"]["suggest"]
|
|
94
94
|
self.params = get_api_version_params("datamap")
|
|
95
95
|
|
|
96
|
+
# Suggest API expects keywords in search field, not keywords field
|
|
96
97
|
suggest_request = {
|
|
97
|
-
"keywords": args.get("--keywords", ""),
|
|
98
|
-
"limit": args.get("--limit", 5)
|
|
99
|
-
"filter": {}
|
|
98
|
+
"keywords": args.get("--keywords", "*"),
|
|
99
|
+
"limit": args.get("--limit", 5)
|
|
100
100
|
}
|
|
101
101
|
|
|
102
|
-
#
|
|
102
|
+
# Only add filter if provided and not empty
|
|
103
103
|
if args.get("--filter"):
|
|
104
104
|
suggest_request["filter"] = self._parse_filter(args["--filter"])
|
|
105
105
|
|
|
@@ -107,18 +107,18 @@ class Search(Endpoint):
|
|
|
107
107
|
|
|
108
108
|
@decorator
|
|
109
109
|
def searchAutocomplete(self, args):
|
|
110
|
-
"""Get autocomplete suggestions (Official API:
|
|
110
|
+
"""Get search autocomplete suggestions (Official API: AutoComplete)"""
|
|
111
111
|
self.method = "POST"
|
|
112
112
|
self.endpoint = ENDPOINTS["discovery"]["autocomplete"]
|
|
113
113
|
self.params = get_api_version_params("datamap")
|
|
114
114
|
|
|
115
|
+
# Autocomplete API expects keywords (text to complete)
|
|
115
116
|
autocomplete_request = {
|
|
116
117
|
"keywords": args.get("--keywords", ""),
|
|
117
|
-
"limit": args.get("--limit",
|
|
118
|
-
"filter": {}
|
|
118
|
+
"limit": args.get("--limit", 5)
|
|
119
119
|
}
|
|
120
120
|
|
|
121
|
-
#
|
|
121
|
+
# Only add filter if provided and not empty
|
|
122
122
|
if args.get("--filter"):
|
|
123
123
|
autocomplete_request["filter"] = self._parse_filter(args["--filter"])
|
|
124
124
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pvw-cli
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.3
|
|
4
4
|
Summary: Microsoft Purview CLI with comprehensive automation capabilities
|
|
5
5
|
Author-email: AYOUB KEBAILI <keayoub@msn.com>
|
|
6
6
|
Maintainer-email: AYOUB KEBAILI <keayoub@msn.com>
|
|
@@ -56,10 +56,13 @@ Requires-Dist: pytest-asyncio>=0.20.0; extra == "test"
|
|
|
56
56
|
Requires-Dist: pytest-cov>=4.0.0; extra == "test"
|
|
57
57
|
Requires-Dist: requests-mock>=1.9.0; extra == "test"
|
|
58
58
|
|
|
59
|
-
# PURVIEW CLI v1.2.
|
|
59
|
+
# PURVIEW CLI v1.2.3 - Microsoft Purview Automation & Data Governance
|
|
60
60
|
|
|
61
|
-
> **LATEST UPDATE (October 2025):**
|
|
62
|
-
> -
|
|
61
|
+
> **LATEST UPDATE v1.2.3 (October 2025):**
|
|
62
|
+
> - **🔍 FIXED: Search API Integration** - Fixed `suggest` and `autocomplete` API payload format (HTTP 400 errors resolved)
|
|
63
|
+
> - **📊 ENHANCED: Collection Display** - Improved collection name detection in search results with proper fallback logic
|
|
64
|
+
> - **✅ VALIDATED: All Search Commands** - Comprehensive testing of query, browse, suggest, find-table operations
|
|
65
|
+
> - **📦 NEW: Bulk Term Import/Export** - Import multiple terms from CSV/JSON with dry-run support
|
|
63
66
|
> - **🗑️ NEW: Bulk Delete Scripts** - PowerShell and Python scripts for bulk term deletion
|
|
64
67
|
> - **📊 NEW: Multiple Output Formats** - `--output` flag supports table, json, and jsonc formats
|
|
65
68
|
> - **🔧 NEW: PowerShell Integration** - Plain JSON output works with `ConvertFrom-Json`
|
|
@@ -72,7 +75,7 @@ Requires-Dist: requests-mock>=1.9.0; extra == "test"
|
|
|
72
75
|
|
|
73
76
|
## What is PVW CLI?
|
|
74
77
|
|
|
75
|
-
**PVW CLI v1.2.
|
|
78
|
+
**PVW CLI v1.2.3** is a modern, full-featured command-line interface and Python library for Microsoft Purview. It enables automation and management of *all major Purview APIs* including:
|
|
76
79
|
|
|
77
80
|
- **Unified Catalog (UC) Management** - Complete governance domains, glossary terms, data products, OKRs, CDEs
|
|
78
81
|
- **Bulk Operations** - Import/export terms from CSV/JSON, bulk delete scripts with progress tracking
|
|
@@ -164,7 +167,7 @@ For more advanced usage, see the documentation in `doc/` or the project docs: ht
|
|
|
164
167
|
|
|
165
168
|
## Overview
|
|
166
169
|
|
|
167
|
-
**PVW CLI v1.2.
|
|
170
|
+
**PVW CLI v1.2.3** is a modern command-line interface and Python library for Microsoft Purview, enabling:
|
|
168
171
|
|
|
169
172
|
- Advanced data catalog search and discovery
|
|
170
173
|
- Bulk import/export of entities, glossary terms, and lineage
|
|
@@ -511,6 +514,11 @@ The PVW CLI provides advanced search using the latest Microsoft Purview Discover
|
|
|
511
514
|
- Use autocomplete and suggestion endpoints
|
|
512
515
|
- Perform faceted, time-based, and entity-type-specific queries
|
|
513
516
|
|
|
517
|
+
**✅ v1.2.3 Improvements:**
|
|
518
|
+
- Fixed `suggest` and `autocomplete` API payload format (removed empty filter causing HTTP 400 errors)
|
|
519
|
+
- Enhanced collection display with robust type checking and fallback logic
|
|
520
|
+
- All search commands validated and working correctly (query, browse, suggest, find-table)
|
|
521
|
+
|
|
514
522
|
### CLI Usage Examples
|
|
515
523
|
|
|
516
524
|
#### 🎯 **Multiple Output Formats**
|
|
@@ -1149,10 +1157,13 @@ PVW CLI includes comprehensive sample files and scripts for bulk operations:
|
|
|
1149
1157
|
- Success/failure tracking per term
|
|
1150
1158
|
- Rate limiting (200ms delay)
|
|
1151
1159
|
|
|
1152
|
-
### ✅ Critical Fixes
|
|
1160
|
+
### ✅ Critical Fixes (v1.2.3)
|
|
1161
|
+
- **Search API Suggest/Autocomplete:** Fixed HTTP 400 errors by removing empty filter objects from payload
|
|
1162
|
+
- **Collection Display:** Enhanced collection name detection with proper fallback logic (isinstance checks)
|
|
1153
1163
|
- **Owner ID Format:** Must use Entra ID Object IDs (GUIDs), not email addresses
|
|
1154
1164
|
- **Domain Status:** Terms cannot be "Published" in unpublished domains - use "Draft"
|
|
1155
1165
|
- **Error Validation:** Enhanced error handling shows actual API responses
|
|
1166
|
+
- **Windows Console Compatibility:** All emoji removed for CP-1252 encoding support
|
|
1156
1167
|
|
|
1157
1168
|
---
|
|
1158
1169
|
|
|
@@ -1203,6 +1214,12 @@ See [LICENSE](LICENSE) file for details.
|
|
|
1203
1214
|
|
|
1204
1215
|
---
|
|
1205
1216
|
|
|
1206
|
-
**PVW CLI v1.2.
|
|
1217
|
+
**PVW CLI v1.2.3 empowers data engineers, stewards, and architects to automate, scale, and enhance their Microsoft Purview experience with powerful command-line and programmatic capabilities.**
|
|
1207
1218
|
|
|
1208
|
-
**Latest
|
|
1219
|
+
**Latest in v1.2.3:**
|
|
1220
|
+
- Fixed Search API suggest/autocomplete (HTTP 400 errors resolved)
|
|
1221
|
+
- Enhanced collection display with robust fallback logic
|
|
1222
|
+
- Comprehensive search command validation
|
|
1223
|
+
- Bulk term import/export with dry-run support
|
|
1224
|
+
- PowerShell integration with plain JSON output
|
|
1225
|
+
- Multiple output formats and beautiful progress tracking
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
purviewcli/__init__.py,sha256=
|
|
1
|
+
purviewcli/__init__.py,sha256=v5JNPN85G2EM5adxgzN03nNd_5Nv5Q_BM2foitqgsUw,413
|
|
2
2
|
purviewcli/__main__.py,sha256=n_PFo1PjW8L1OKCNLsW0vlVSo8tzac_saEYYLTu93iQ,372
|
|
3
3
|
purviewcli/cli/__init__.py,sha256=UGMctZaXXsV2l2ycnmhTgyksH81_JBQjAPq3oRF2Dqk,56
|
|
4
4
|
purviewcli/cli/account.py,sha256=Z_bwhKriMQpoBicOORM64wpQ1MJ94QG7jGKiaG-D_r8,7092
|
|
@@ -14,7 +14,7 @@ purviewcli/cli/management.py,sha256=ArSN7ADWMKUJ-fVYjPiuab4g666GQUmxU2WZov3JxzI,
|
|
|
14
14
|
purviewcli/cli/policystore.py,sha256=Xj3Yx6kNt9W8v577x2iacqSlPatR6AuFfMBpjtHTj1E,4439
|
|
15
15
|
purviewcli/cli/relationship.py,sha256=Ky4klI-clKh6sRK7bsI7SwgtVrpo1ljegVyrbqjkeOY,2682
|
|
16
16
|
purviewcli/cli/scan.py,sha256=91iKDH8iVNJKndJAisrKx3J4HRoPH2qfmxguLZH3xHY,13807
|
|
17
|
-
purviewcli/cli/search.py,sha256=
|
|
17
|
+
purviewcli/cli/search.py,sha256=QNAKiFSi8oSEwzh-ksR4vhNAZ1z0dje1icdg36xRMvk,22667
|
|
18
18
|
purviewcli/cli/share.py,sha256=QRZhHM59RxdYqXOjSYLfVRZmjwMg4Y-bWxMSQVTQiIE,20197
|
|
19
19
|
purviewcli/cli/types.py,sha256=zo_8rAqDQ1vqi5y-dBh_sVY6i16UaJLLx_vBJBfZrrw,23729
|
|
20
20
|
purviewcli/cli/unified_catalog.py,sha256=ZQn5GsHsfXCrjzTPnfNA6gfGBOD5AH2m7uauGZt-oZs,74753
|
|
@@ -32,7 +32,7 @@ purviewcli/client/_management.py,sha256=2_ZXRSeEzGuHv1muUbn8mQb07enYYuHPI3NskIHI
|
|
|
32
32
|
purviewcli/client/_policystore.py,sha256=wx9Yw6wcvj236ZmmitUKxW5u4YAtfJqAFNuxMpa7HIU,18078
|
|
33
33
|
purviewcli/client/_relationship.py,sha256=KJZRltrzpTw7cfKjlZH2MuoTPS7eHxxp3cqU2etDSEA,9997
|
|
34
34
|
purviewcli/client/_scan.py,sha256=2atEBD-kKWtFuBSWh2P0cwp42gfg7qgwWq-072QZMs4,15154
|
|
35
|
-
purviewcli/client/_search.py,sha256=
|
|
35
|
+
purviewcli/client/_search.py,sha256=9QfRE7FUukhpMQ_Xc9NziG6aKFMlPt4_OVaI0QinGa8,12019
|
|
36
36
|
purviewcli/client/_share.py,sha256=vKENIhePuzi3WQazNfv5U9y-6yxRk222zrFA-SGh1pc,10494
|
|
37
37
|
purviewcli/client/_types.py,sha256=ONa3wh1F02QOVy51UGq54121TkqRcWczdXIvNqPIFU0,15454
|
|
38
38
|
purviewcli/client/_unified_catalog.py,sha256=WDpl68NJXfMJ5OIlING0wrfXwbOLwbnGRAFL9WPZnCE,40017
|
|
@@ -53,8 +53,8 @@ purviewcli/client/settings.py,sha256=nYdnYurTZsgv9vcgljnzVxLPtYVl9q6IplqOzi1aRvI
|
|
|
53
53
|
purviewcli/client/sync_client.py,sha256=gwCqesJTNaXn1Q-j57O95R9mn3fIOhdP4sc8jBaBcYw,9493
|
|
54
54
|
purviewcli/plugins/__init__.py,sha256=rpt3OhFt_wSE_o8Ga8AXvw1pqkdBxLmjrhYtE_-LuJo,29
|
|
55
55
|
purviewcli/plugins/plugin_system.py,sha256=C-_dL4FUj90o1JS7Saxkpov6fz0GIF5PFhZTYwqBkWE,26774
|
|
56
|
-
pvw_cli-1.2.
|
|
57
|
-
pvw_cli-1.2.
|
|
58
|
-
pvw_cli-1.2.
|
|
59
|
-
pvw_cli-1.2.
|
|
60
|
-
pvw_cli-1.2.
|
|
56
|
+
pvw_cli-1.2.3.dist-info/METADATA,sha256=rx7pJk-uMjIsZXSixs-R590RDEzxOYMeHmLYXVFUrtk,40276
|
|
57
|
+
pvw_cli-1.2.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
58
|
+
pvw_cli-1.2.3.dist-info/entry_points.txt,sha256=VI6AAbc6sWahOCX7sn_lhJIr9OiJM0pHF7rmw1YVGlE,82
|
|
59
|
+
pvw_cli-1.2.3.dist-info/top_level.txt,sha256=LrADzPoKwF1xY0pGKpWauyOVruHCIWKCkT7cwIl6IuI,11
|
|
60
|
+
pvw_cli-1.2.3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|