libre-devops-helpers 0.4.1__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.
Files changed (120) hide show
  1. libre_devops_helpers/__init__.py +23 -0
  2. libre_devops_helpers/__main__.py +5 -0
  3. libre_devops_helpers/cli/__init__.py +5 -0
  4. libre_devops_helpers/cli/app.py +147 -0
  5. libre_devops_helpers/cli/commands/__init__.py +1 -0
  6. libre_devops_helpers/cli/commands/automation.py +321 -0
  7. libre_devops_helpers/cli/commands/az.py +93 -0
  8. libre_devops_helpers/cli/commands/azure.py +258 -0
  9. libre_devops_helpers/cli/commands/config.py +54 -0
  10. libre_devops_helpers/cli/commands/devices.py +548 -0
  11. libre_devops_helpers/cli/commands/entra.py +554 -0
  12. libre_devops_helpers/cli/commands/graph.py +358 -0
  13. libre_devops_helpers/cli/commands/incidents.py +420 -0
  14. libre_devops_helpers/cli/commands/intune.py +79 -0
  15. libre_devops_helpers/cli/commands/keyvault.py +142 -0
  16. libre_devops_helpers/cli/commands/logicapp.py +489 -0
  17. libre_devops_helpers/cli/commands/logs.py +69 -0
  18. libre_devops_helpers/cli/commands/pim.py +381 -0
  19. libre_devops_helpers/cli/commands/pretty.py +141 -0
  20. libre_devops_helpers/cli/commands/profiles.py +153 -0
  21. libre_devops_helpers/cli/commands/snow.py +268 -0
  22. libre_devops_helpers/cli/commands/token.py +222 -0
  23. libre_devops_helpers/cli/commands/welcome.py +43 -0
  24. libre_devops_helpers/cli/commands/xdr.py +353 -0
  25. libre_devops_helpers/cli/exits.py +12 -0
  26. libre_devops_helpers/cli/options.py +146 -0
  27. libre_devops_helpers/cli/render.py +360 -0
  28. libre_devops_helpers/cli/runtime.py +348 -0
  29. libre_devops_helpers/cli/servicenow_runtime.py +170 -0
  30. libre_devops_helpers/core/__init__.py +94 -0
  31. libre_devops_helpers/core/auth.py +103 -0
  32. libre_devops_helpers/core/brand.py +67 -0
  33. libre_devops_helpers/core/browser.py +21 -0
  34. libre_devops_helpers/core/config.py +159 -0
  35. libre_devops_helpers/core/dpapi.py +60 -0
  36. libre_devops_helpers/core/errors.py +90 -0
  37. libre_devops_helpers/core/http.py +412 -0
  38. libre_devops_helpers/core/inputs.py +193 -0
  39. libre_devops_helpers/core/log.py +246 -0
  40. libre_devops_helpers/core/poll.py +88 -0
  41. libre_devops_helpers/core/process.py +106 -0
  42. libre_devops_helpers/core/sheets.py +330 -0
  43. libre_devops_helpers/core/tables.py +49 -0
  44. libre_devops_helpers/core/timewindow.py +127 -0
  45. libre_devops_helpers/core/token_store.py +266 -0
  46. libre_devops_helpers/core/util.py +120 -0
  47. libre_devops_helpers/core/yaml_text.py +142 -0
  48. libre_devops_helpers/microsoft/__init__.py +94 -0
  49. libre_devops_helpers/microsoft/auth/__init__.py +43 -0
  50. libre_devops_helpers/microsoft/auth/azure_cli.py +91 -0
  51. libre_devops_helpers/microsoft/auth/delegated.py +391 -0
  52. libre_devops_helpers/microsoft/auth/entra.py +241 -0
  53. libre_devops_helpers/microsoft/auth/factory.py +114 -0
  54. libre_devops_helpers/microsoft/auth/lapse.py +42 -0
  55. libre_devops_helpers/microsoft/auth/managed_identity.py +84 -0
  56. libre_devops_helpers/microsoft/automation/__init__.py +24 -0
  57. libre_devops_helpers/microsoft/automation/client.py +241 -0
  58. libre_devops_helpers/microsoft/automation/models.py +131 -0
  59. libre_devops_helpers/microsoft/azcli/__init__.py +27 -0
  60. libre_devops_helpers/microsoft/azcli/client.py +81 -0
  61. libre_devops_helpers/microsoft/azcli/context.py +95 -0
  62. libre_devops_helpers/microsoft/azure/__init__.py +34 -0
  63. libre_devops_helpers/microsoft/azure/client.py +260 -0
  64. libre_devops_helpers/microsoft/azure/models.py +198 -0
  65. libre_devops_helpers/microsoft/clouds.py +83 -0
  66. libre_devops_helpers/microsoft/config.py +244 -0
  67. libre_devops_helpers/microsoft/devices/__init__.py +45 -0
  68. libre_devops_helpers/microsoft/devices/antivirus.py +149 -0
  69. libre_devops_helpers/microsoft/devices/check.py +286 -0
  70. libre_devops_helpers/microsoft/devices/inspect.py +146 -0
  71. libre_devops_helpers/microsoft/devices/models.py +148 -0
  72. libre_devops_helpers/microsoft/entra/__init__.py +41 -0
  73. libre_devops_helpers/microsoft/entra/client.py +422 -0
  74. libre_devops_helpers/microsoft/entra/models.py +334 -0
  75. libre_devops_helpers/microsoft/entra/permissions.py +51 -0
  76. libre_devops_helpers/microsoft/graph/__init__.py +38 -0
  77. libre_devops_helpers/microsoft/graph/client.py +292 -0
  78. libre_devops_helpers/microsoft/incidents/__init__.py +51 -0
  79. libre_devops_helpers/microsoft/incidents/client.py +217 -0
  80. libre_devops_helpers/microsoft/incidents/models.py +165 -0
  81. libre_devops_helpers/microsoft/incidents/permissions.py +15 -0
  82. libre_devops_helpers/microsoft/intune/__init__.py +18 -0
  83. libre_devops_helpers/microsoft/intune/client.py +94 -0
  84. libre_devops_helpers/microsoft/intune/models.py +63 -0
  85. libre_devops_helpers/microsoft/intune/permissions.py +16 -0
  86. libre_devops_helpers/microsoft/keyvault/__init__.py +34 -0
  87. libre_devops_helpers/microsoft/keyvault/client.py +185 -0
  88. libre_devops_helpers/microsoft/loganalytics/__init__.py +17 -0
  89. libre_devops_helpers/microsoft/loganalytics/client.py +117 -0
  90. libre_devops_helpers/microsoft/logicapps/__init__.py +79 -0
  91. libre_devops_helpers/microsoft/logicapps/checks.py +432 -0
  92. libre_devops_helpers/microsoft/logicapps/client.py +162 -0
  93. libre_devops_helpers/microsoft/logicapps/document.py +202 -0
  94. libre_devops_helpers/microsoft/pim/__init__.py +39 -0
  95. libre_devops_helpers/microsoft/pim/azure.py +238 -0
  96. libre_devops_helpers/microsoft/pim/entra.py +294 -0
  97. libre_devops_helpers/microsoft/pim/models.py +93 -0
  98. libre_devops_helpers/microsoft/pim/permissions.py +98 -0
  99. libre_devops_helpers/microsoft/pim/rules.py +70 -0
  100. libre_devops_helpers/microsoft/process.py +70 -0
  101. libre_devops_helpers/microsoft/resources.py +137 -0
  102. libre_devops_helpers/microsoft/tokens.py +269 -0
  103. libre_devops_helpers/microsoft/xdr/__init__.py +33 -0
  104. libre_devops_helpers/microsoft/xdr/client.py +246 -0
  105. libre_devops_helpers/microsoft/xdr/models.py +181 -0
  106. libre_devops_helpers/microsoft/xdr/permissions.py +24 -0
  107. libre_devops_helpers/py.typed +0 -0
  108. libre_devops_helpers/servicenow/__init__.py +50 -0
  109. libre_devops_helpers/servicenow/auth.py +409 -0
  110. libre_devops_helpers/servicenow/config.py +261 -0
  111. libre_devops_helpers/servicenow/instance/__init__.py +32 -0
  112. libre_devops_helpers/servicenow/instance/client.py +91 -0
  113. libre_devops_helpers/servicenow/instance/models.py +131 -0
  114. libre_devops_helpers/servicenow/roles.py +23 -0
  115. libre_devops_helpers/servicenow/tables.py +133 -0
  116. libre_devops_helpers-0.4.1.dist-info/METADATA +153 -0
  117. libre_devops_helpers-0.4.1.dist-info/RECORD +120 -0
  118. libre_devops_helpers-0.4.1.dist-info/WHEEL +4 -0
  119. libre_devops_helpers-0.4.1.dist-info/entry_points.txt +2 -0
  120. libre_devops_helpers-0.4.1.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,153 @@
1
+ Metadata-Version: 2.5
2
+ Name: libre-devops-helpers
3
+ Version: 0.4.1
4
+ Summary: Libre DevOps Helpers: a fast, read-only CLI and importable helpers for Entra ID, Defender XDR, Intune, Azure, Graph, PIM, Logic Apps and ServiceNow, also shipped as a container image.
5
+ Project-URL: Homepage, https://github.com/libre-devops/python-helpers
6
+ Project-URL: Documentation, https://github.com/libre-devops/python-helpers/tree/main/docs
7
+ Project-URL: Changelog, https://github.com/libre-devops/python-helpers/blob/main/CHANGELOG.md
8
+ Project-URL: Issues, https://github.com/libre-devops/python-helpers/issues
9
+ Author: Craig Thacker
10
+ License-Expression: MIT
11
+ License-File: LICENSE
12
+ Keywords: azure,azure-cli,defender-for-endpoint,defender-xdr,entra-id,intune,key-vault,log-analytics,logic-apps,microsoft-graph,microsoft-sentinel,pim,servicenow
13
+ Classifier: Development Status :: 3 - Alpha
14
+ Classifier: Environment :: Console
15
+ Classifier: Intended Audience :: System Administrators
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3 :: Only
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Programming Language :: Python :: 3.13
22
+ Classifier: Programming Language :: Python :: 3.14
23
+ Classifier: Topic :: Security
24
+ Classifier: Topic :: System :: Systems Administration
25
+ Classifier: Typing :: Typed
26
+ Requires-Python: >=3.11
27
+ Requires-Dist: requests>=2.31
28
+ Requires-Dist: typer>=0.12
29
+ Provides-Extra: keychain
30
+ Requires-Dist: keyring>=25; extra == 'keychain'
31
+ Description-Content-Type: text/markdown
32
+
33
+ <div align="center">
34
+
35
+ <a href="https://libredevops.org">
36
+ <picture>
37
+ <source media="(prefers-color-scheme: dark)" srcset="https://libredevops.org/assets/libre-devops-white.png">
38
+ <img alt="Libre DevOps" src="https://libredevops.org/assets/libre-devops-black.png" width="320">
39
+ </picture>
40
+ </a>
41
+
42
+ # Libre DevOps Helpers
43
+
44
+ `ldo`: importable Python helpers and a fast CLI for day-to-day DevOps and security work.
45
+
46
+ [![Lint and Test](https://github.com/libre-devops/python-helpers/actions/workflows/ci.yml/badge.svg)](https://github.com/libre-devops/python-helpers/actions/workflows/ci.yml)
47
+ [![Coverage](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/libre-devops/python-helpers/badges/coverage.json)](https://github.com/libre-devops/python-helpers/actions/workflows/ci.yml)
48
+ [![CodeQL](https://github.com/libre-devops/python-helpers/actions/workflows/codeql.yml/badge.svg)](https://github.com/libre-devops/python-helpers/actions/workflows/codeql.yml)
49
+ [![Container](https://github.com/libre-devops/python-helpers/actions/workflows/container.yml/badge.svg)](https://github.com/libre-devops/python-helpers/actions/workflows/container.yml)
50
+
51
+ [![Release](https://img.shields.io/github/v/release/libre-devops/python-helpers?label=release&color=1793D1)](https://github.com/libre-devops/python-helpers/releases)
52
+ [![Container images](https://img.shields.io/badge/ghcr.io-python--helpers-2496ED?logo=docker&logoColor=white)](https://github.com/libre-devops/python-helpers/pkgs/container/python-helpers)
53
+ [![Python](https://img.shields.io/badge/python-3.11%20%7C%203.12%20%7C%203.13%20%7C%203.14-3776AB?logo=python&logoColor=white)](https://github.com/libre-devops/python-helpers/blob/main/pyproject.toml)
54
+ [![Licence: MIT](https://img.shields.io/badge/licence-MIT-blue.svg)](https://github.com/libre-devops/python-helpers/blob/main/LICENSE)
55
+
56
+ </div>
57
+
58
+ ---
59
+
60
+ `ldo` is a fast, read-only command line for day-to-day security and platform work across
61
+ Microsoft (Entra ID, Defender XDR, Intune, Azure, Graph, PIM, Logic Apps) and ServiceNow. It
62
+ signs in as you, through the Azure CLI by default, and can read only what you can. The Python
63
+ sibling of the [LibreDevOpsHelpers](https://github.com/libre-devops/powershell-helpers)
64
+ PowerShell module, and importable as a library too.
65
+
66
+ ---
67
+
68
+ ## Commands
69
+
70
+ | Command | What it does | Docs |
71
+ | --- | --- | --- |
72
+ | `ldo devices` | check a list of devices across Entra, Defender and Intune, watch until they are all there, show one, read Defender Antivirus versions | [devices](https://github.com/libre-devops/python-helpers/blob/main/docs/devices.md) |
73
+ | `ldo entra` | devices and whether they are in a group, users, groups, roles, sign-ins, app credentials, Conditional Access; tokens | [entra](https://github.com/libre-devops/python-helpers/blob/main/docs/entra.md) |
74
+ | `ldo intune` | managed devices: compliance, last sync, owner | [entra](https://github.com/libre-devops/python-helpers/blob/main/docs/entra.md) |
75
+ | `ldo xdr` | Defender machines, alerts, vulnerabilities, indicators, Advanced Hunting | [defender](https://github.com/libre-devops/python-helpers/blob/main/docs/defender.md) |
76
+ | `ldo xdr incidents` | the Defender XDR queue, Sentinel's included: top, latest, between days, summary | [defender](https://github.com/libre-devops/python-helpers/blob/main/docs/defender.md#incidents-sentinels-included) |
77
+ | `ldo graph` | any Graph GET, objects by name, `whoami`, a Graph token, hunting | [graph](https://github.com/libre-devops/python-helpers/blob/main/docs/graph.md) |
78
+ | `ldo azure` | subscriptions, Resource Graph, role assignments, Defender for Cloud | [azure](https://github.com/libre-devops/python-helpers/blob/main/docs/azure.md) |
79
+ | `ldo azure automation` | Automation accounts: runbook jobs, and each job's logs and output | [azure](https://github.com/libre-devops/python-helpers/blob/main/docs/azure.md#automation) |
80
+ | `ldo keyvault` | secrets, certificates and keys close to expiry | [azure](https://github.com/libre-devops/python-helpers/blob/main/docs/azure.md#key-vault) |
81
+ | `ldo logs` | KQL against a Log Analytics or Sentinel workspace | [azure](https://github.com/libre-devops/python-helpers/blob/main/docs/azure.md#log-analytics) |
82
+ | `ldo pim` | eligible, active and standing access, requests, approvals, activation settings | [pim](https://github.com/libre-devops/python-helpers/blob/main/docs/pim.md) |
83
+ | `ldo logicapp` | offline checks, export and validation for Consumption Logic Apps and Sentinel playbooks | [logic apps](https://github.com/libre-devops/python-helpers/blob/main/docs/logic-apps.md) |
84
+ | `ldo snow` | ServiceNow: sign in, whoami, the instance, applications, a token | [servicenow](https://github.com/libre-devops/python-helpers/blob/main/docs/servicenow.md) |
85
+ | `ldo az` | switch the Azure CLI between profiles | [signing in](https://github.com/libre-devops/python-helpers/blob/main/docs/authentication.md) |
86
+ | `ldo json` | pretty-print any JSON (`az rest ... \| ldo json`) in colour, or as YAML | [configuration](https://github.com/libre-devops/python-helpers/blob/main/docs/configuration.md#json-yaml-and-logs) |
87
+ | `ldo profiles`, `ldo config` | your profiles, and the config file | [configuration](https://github.com/libre-devops/python-helpers/blob/main/docs/configuration.md) |
88
+
89
+ Every command takes `-p` for a profile and `-o table|json|csv`, and lists of names from
90
+ arguments, stdin, a text file, or a column of a CSV or Excel workbook.
91
+
92
+ ---
93
+
94
+ ## Install
95
+
96
+ ```bash
97
+ uv tool install git+https://github.com/libre-devops/python-helpers@v0.4.1
98
+ ```
99
+
100
+ Or run the container image, which has the Azure CLI inside:
101
+ `podman run --rm -it ghcr.io/libre-devops/python-helpers:latest --help`
102
+ (see [Container images](https://github.com/libre-devops/python-helpers/blob/main/docs/containers.md)).
103
+
104
+ ---
105
+
106
+ ## Quickstart
107
+
108
+ ```bash
109
+ az login # the default sign-in is the Azure CLI's
110
+ ldo config init # write ~/.config/ldo/config.toml
111
+ $EDITOR "$(ldo config path)" # put your tenant id in a profile
112
+ ldo profiles # your profiles, and whether each can sign in
113
+ ```
114
+
115
+ Then:
116
+
117
+ ```bash
118
+ ldo devices check web01,web02 # in Entra and onboarded to Defender?
119
+ ldo devices check -f plan.xlsx --column FQDN --tag linux-servers
120
+ ldo devices av-signature web01 # Defender Antivirus versions
121
+ ldo entra devices -f plan.xlsx --column FQDN --group "MDE Pilot Devices"
122
+ ldo azure automation logs aa-ops --runbook Rotate-Keys # the newest run's logs
123
+ ldo graph get-device web01
124
+ ldo xdr alerts --since 24h --severity high
125
+ ldo azure resource-graph "resources | summarize count() by type"
126
+ ldo keyvault expiry --all-vaults --within 30d
127
+ ```
128
+
129
+ Incidents, Graph hunting and PIM for Entra roles need scopes the Azure CLI's token never
130
+ has: sign in through [your own app registration](https://github.com/libre-devops/python-helpers/blob/main/docs/authentication.md#your-own-app-registration)
131
+ for those. [Permissions](https://github.com/libre-devops/python-helpers/blob/main/docs/permissions.md) lists what each command needs.
132
+
133
+ ---
134
+
135
+ ## Documentation
136
+
137
+ - [Configuration](https://github.com/libre-devops/python-helpers/blob/main/docs/configuration.md): profiles, common options, environment variables, exit codes
138
+ - [Signing in](https://github.com/libre-devops/python-helpers/blob/main/docs/authentication.md) and [Permissions](https://github.com/libre-devops/python-helpers/blob/main/docs/permissions.md)
139
+ - [Container images](https://github.com/libre-devops/python-helpers/blob/main/docs/containers.md)
140
+ - [Using it as a library](https://github.com/libre-devops/python-helpers/blob/main/docs/library.md) and [Rebranding](https://github.com/libre-devops/python-helpers/blob/main/docs/rebranding.md) for your organisation
141
+ - [Development](https://github.com/libre-devops/python-helpers/blob/main/docs/development.md): `just` recipes, tests, CI and releasing
142
+
143
+ Contributions are welcome: see [CONTRIBUTING.md](https://github.com/libre-devops/python-helpers/blob/main/CONTRIBUTING.md), and
144
+ [SECURITY.md](https://github.com/libre-devops/python-helpers/blob/main/SECURITY.md) to report a vulnerability. Licensed under [MIT](https://github.com/libre-devops/python-helpers/blob/main/LICENSE).
145
+
146
+ ---
147
+
148
+ <div align="center">
149
+ <sub>
150
+ Part of <a href="https://libredevops.org">Libre DevOps</a>. Everything we publish is open and
151
+ provided as-is; review and test it against your own requirements before production use.
152
+ </sub>
153
+ </div>
@@ -0,0 +1,120 @@
1
+ libre_devops_helpers/__init__.py,sha256=Xmdhv_Iz6raJt3A3VIFvcxiddvpRjEF-iFP0KQG4jAA,1240
2
+ libre_devops_helpers/__main__.py,sha256=po8YqsOHHt9VOTEL8w2JETZoYqhlxtkiB8c9LrFP8nM,99
3
+ libre_devops_helpers/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
+ libre_devops_helpers/cli/__init__.py,sha256=muELbvQk8c4gE62y86kRr_Pi9jM6ilMtYy-VedK6W50,165
5
+ libre_devops_helpers/cli/app.py,sha256=c6CUJnUQVusHH1n3Bej-SlqLOtK-NDpbHtfe7HRr3P8,4019
6
+ libre_devops_helpers/cli/exits.py,sha256=ztzDKdXhdvCYl4tYZO3VwCN4uoy4T9RD36emPBEI094,426
7
+ libre_devops_helpers/cli/options.py,sha256=DHG9mz2JVSDGSCH86kqCmveF3hH9j-aF-IEiCXKAtY0,4299
8
+ libre_devops_helpers/cli/render.py,sha256=wKGERGyCi2HVl_pOYn2-1_2_eBdildAP4PqF1y0wa2A,12343
9
+ libre_devops_helpers/cli/runtime.py,sha256=7x3pVvo9YeHER0gkgOBBavswqdV8uKWfeiOLVCL4bBU,14360
10
+ libre_devops_helpers/cli/servicenow_runtime.py,sha256=AbaayAuoo2N1YQ6n174YnQ-X6mDqOXpTm6xhTHZ_Sa8,6583
11
+ libre_devops_helpers/cli/commands/__init__.py,sha256=5sLSga3bcImLpKi0GEfyd8vVlgDPuIGp_2C5UoDx0tQ,80
12
+ libre_devops_helpers/cli/commands/automation.py,sha256=_q_EA4CPivU-dcLm-Qmj7mbIhgycEi9TvXhVmMDBUBg,10901
13
+ libre_devops_helpers/cli/commands/az.py,sha256=HDAvS83rYUE-AoxhCKo7tG9hMAo-UISuAkDm-nPlzpo,3405
14
+ libre_devops_helpers/cli/commands/azure.py,sha256=aBpONT31nQj5dg3D6FkzHzinhf35eUgxJq5F7mSlRWo,9197
15
+ libre_devops_helpers/cli/commands/config.py,sha256=0RrbpofBdfkMdE1fsa0GwnMy2pQon_mpghj63PSwN7c,2310
16
+ libre_devops_helpers/cli/commands/devices.py,sha256=F8ZeClywmk44U8pUiXbQLy-CDdgYktAr9loBz_-c5qs,19509
17
+ libre_devops_helpers/cli/commands/entra.py,sha256=pY5RGFQ_U1VAV9lFJ2FCie77ViNCkKq5plweRVxJOeM,19992
18
+ libre_devops_helpers/cli/commands/graph.py,sha256=bRZ9UBF19JpMsVcKWlpBrAGAar_pGFJGoBwk_AYyMFs,12949
19
+ libre_devops_helpers/cli/commands/incidents.py,sha256=B1IM6Px2zQ7T6KLaBQK_kVvrUlmsPWX9OY9X4ZD8-UE,13925
20
+ libre_devops_helpers/cli/commands/intune.py,sha256=vb1p51Svi-BCpDmOdIq_4uL7HF7yhR_ZGZvpfeAP1G0,2654
21
+ libre_devops_helpers/cli/commands/keyvault.py,sha256=jKaRbSfCWSghxDQgia-GuAttBTSykfPZNL-SJiuje1s,4843
22
+ libre_devops_helpers/cli/commands/logicapp.py,sha256=iwqk9yFotv0daT1dVZPfkYusHPi0MJPYLuZ8iBHyGHY,16570
23
+ libre_devops_helpers/cli/commands/logs.py,sha256=MiY8lZCE-56MJNhUCvUy7Qul-gjkGRi1Ju2l9PtMSK0,2037
24
+ libre_devops_helpers/cli/commands/pim.py,sha256=9QaUWhI5MwkHAG7ErbcRg3ELeieir9c9AcIFtR9H-r4,14177
25
+ libre_devops_helpers/cli/commands/pretty.py,sha256=nvlPIN8W_dlvNORy48MXS1GwzO77ANPnSHbyj1r2ZmE,5126
26
+ libre_devops_helpers/cli/commands/profiles.py,sha256=RhBMU9q_oCK-o6rPcoNRCD--qhCAwJ25zIHtTRzMXF4,5936
27
+ libre_devops_helpers/cli/commands/snow.py,sha256=iJ_P7xzyqawDmSUhcAwDzHhhPv46b-KL3h0BlEQb9yQ,9591
28
+ libre_devops_helpers/cli/commands/token.py,sha256=6ymuFn-NTCBIdJYHO9l_sKIOCK7TVBOMQ1vsFN4GxX8,7544
29
+ libre_devops_helpers/cli/commands/welcome.py,sha256=zONCfgvtgfnZ6JteNnZbviyHgdqXQp5bPfkPBYeeDec,1548
30
+ libre_devops_helpers/cli/commands/xdr.py,sha256=6HEmYnz_mh47gwumxzT2W9ggPIJgBJt9mGw1wEfP1f8,12011
31
+ libre_devops_helpers/core/__init__.py,sha256=WqSWhtSwhtD5tC0XRk-HDFEvwKtOrwLjECiBJmMuakM,2305
32
+ libre_devops_helpers/core/auth.py,sha256=no5YWpjM5a-6aKxGkE-_pKPVbsNpx4DLRm_ZbulEr28,3706
33
+ libre_devops_helpers/core/brand.py,sha256=zGzWLk46xpGutPJPpHhnM3aNN786vMkADyOrqPaqiqI,2306
34
+ libre_devops_helpers/core/browser.py,sha256=o1wUOsHzXxiqL-nIb5lswTqoZubhlv2YIpjYDCq7Mo4,589
35
+ libre_devops_helpers/core/config.py,sha256=0rMpQPDoeW698_Y2cISb9XatcDDEgh2iDoMoWO-hLYs,5854
36
+ libre_devops_helpers/core/dpapi.py,sha256=KC-IjQLzfKfDyYDDSFfo7sGY3Eyu9Sa2Esa1jiQoojI,2320
37
+ libre_devops_helpers/core/errors.py,sha256=eFE3KJ_OHmq54XncECPmpbfgrOHq7b-39_oewNKu5n4,2325
38
+ libre_devops_helpers/core/http.py,sha256=02QjZU5yonWFVYa6dXJyE18rJzyHoxaxYG0MzTncPI8,16267
39
+ libre_devops_helpers/core/inputs.py,sha256=e3SYWRPtFyL2Y91tmD0vBs8s0zMoE70eqeSmaic42qI,7439
40
+ libre_devops_helpers/core/log.py,sha256=dfKqSmfK4LOAJ7eBzC4eyN22yHfV8ilgigFTnMViruQ,10101
41
+ libre_devops_helpers/core/poll.py,sha256=yBpp8scO5N0CqNCn3oRjIJm9kIL_Iawf5CXL23xwHy8,2972
42
+ libre_devops_helpers/core/process.py,sha256=6QbSCpK6kwcROj18tfIc_GsdXMRlT4T2zLACJdyAKTg,3972
43
+ libre_devops_helpers/core/sheets.py,sha256=zL7CtP-qhYsGEpTklPOyPcw8-nmiQdkU4yTDt_35dSk,13225
44
+ libre_devops_helpers/core/tables.py,sha256=-4pSLf3iLAj-2HNGgpgWj2H32tgdlXkT5xwqlOsDP8A,1687
45
+ libre_devops_helpers/core/timewindow.py,sha256=ELnHL0AaCAY3nagpRoOB2l_-mEaRTcMkwtRGtuYE8Ho,4620
46
+ libre_devops_helpers/core/token_store.py,sha256=DLRq3r0QNch2neRXlO_RBjnM3c_Zu3J3GnY3TI4ha7I,10636
47
+ libre_devops_helpers/core/util.py,sha256=HbfDrFXljQmF4fL4T2eDastaxhqWgZ8ldQ2slLn3mhI,4351
48
+ libre_devops_helpers/core/yaml_text.py,sha256=52FlNp72vdVDuLlmBi1g1pjQURnzB6UyISB8LE0wP5c,6198
49
+ libre_devops_helpers/microsoft/__init__.py,sha256=JhDqocn9wcOjT5uHHE4ME4XjF1CeIqDoJThDDEhlbmI,2423
50
+ libre_devops_helpers/microsoft/clouds.py,sha256=JO2sxV-YFeQ2VS77POSjgbdxYJsSkOy3XS3SVnCXNxM,2826
51
+ libre_devops_helpers/microsoft/config.py,sha256=kzw_cAJVcNQCm71bc2j20GuXEWUWeRw1BNyHdkoZxhQ,9569
52
+ libre_devops_helpers/microsoft/process.py,sha256=wymHRp8blnuEB2N68iF0kufDO3W1zlD6_pXfbeqgCDg,2712
53
+ libre_devops_helpers/microsoft/resources.py,sha256=x75Au6eIWqWAHIr-SmSOj0FaMB7NMjuAI4VdEVMd3AY,4494
54
+ libre_devops_helpers/microsoft/tokens.py,sha256=puw2AQgASO-TljikAA2ZpZ9V0dRGhlQ9bvYwQy6Gu2Q,9648
55
+ libre_devops_helpers/microsoft/auth/__init__.py,sha256=vfdC-9VVoVAHIv8EmNevlxmvRqAsOTgBeKEVrkHqV2A,1444
56
+ libre_devops_helpers/microsoft/auth/azure_cli.py,sha256=hB-NPLnVw5TJqofc4a9il6-WSh2pFx8zgzkpqI43OGs,3781
57
+ libre_devops_helpers/microsoft/auth/delegated.py,sha256=d3oWtWCH2aEu3H_cPNgil4fiovGY0X1COB1jZOH9IGc,15721
58
+ libre_devops_helpers/microsoft/auth/entra.py,sha256=AZh4GA4zGikcYE5-6NewtvZ37nDaB1pmMA7OMeAG5yw,8425
59
+ libre_devops_helpers/microsoft/auth/factory.py,sha256=Pc05zdRVIpr9qHa1pWVLbJRY1wq0Zh6yq17E_XggC_c,4465
60
+ libre_devops_helpers/microsoft/auth/lapse.py,sha256=8AfePLSLjwuRjBsbFiQIXOiw8PKnSL7sq5TRMMfaH7Q,1930
61
+ libre_devops_helpers/microsoft/auth/managed_identity.py,sha256=KRmiBcixUvVogrYE9D0jXQcKZLPI7Ukw7WUg7Fy8LBI,3220
62
+ libre_devops_helpers/microsoft/automation/__init__.py,sha256=XGPFbMgiGpK-zx8EqjOZnRECnybW5gOyiyIqvtWMK6Y,590
63
+ libre_devops_helpers/microsoft/automation/client.py,sha256=h1BbyKkHSXiWi11MhGYCoqi_vUL2nk2_kjZGHvYmQh4,9061
64
+ libre_devops_helpers/microsoft/automation/models.py,sha256=KF4OkePi9n624gVFGFbsbBIB8t4R3dACCnC3cjEMVBA,4320
65
+ libre_devops_helpers/microsoft/azcli/__init__.py,sha256=RxUXe8jhFj14Kdu1BLlhoDyeyHnCUQsgl72AwsMYF88,652
66
+ libre_devops_helpers/microsoft/azcli/client.py,sha256=FopyFkVareZjS2T5J5vJ6594KNSQIZ0UgE_emm9vUeo,3069
67
+ libre_devops_helpers/microsoft/azcli/context.py,sha256=ptxHYShkB1nJpnouym1AaB--I94liZwXgKp9pkH1fTo,3696
68
+ libre_devops_helpers/microsoft/azure/__init__.py,sha256=B11hzW5y3L4WVp6Jmpw88bixj963c_DiS2gggRPQoAE,989
69
+ libre_devops_helpers/microsoft/azure/client.py,sha256=mi44GFidfZw7UeRZnrQnEwDhN3J6xvrJc0s2KY0pFxU,10430
70
+ libre_devops_helpers/microsoft/azure/models.py,sha256=EQEgJp0qa7uZ1CUByXIDXPvSoVleNmWvHHj-eFjLAK8,6376
71
+ libre_devops_helpers/microsoft/devices/__init__.py,sha256=QeWTzlGzEXfd3PcFyRZlgyEAdISLEpGCJhUSc0zrRiE,1289
72
+ libre_devops_helpers/microsoft/devices/antivirus.py,sha256=kufAVJHYvlPXGTa-JRYOkBZOvsobA9g9z-tOd8zfhRc,5994
73
+ libre_devops_helpers/microsoft/devices/check.py,sha256=vFonHADkr-RMZFcY0hr0a--rYo4O3UwUc5mBCdSNV8M,12313
74
+ libre_devops_helpers/microsoft/devices/inspect.py,sha256=VxtL3BqaIv9Fxn92LEM0sNN9C8cXmVoDck9xJNzRIf4,5666
75
+ libre_devops_helpers/microsoft/devices/models.py,sha256=GsvtYFLtLwv2eaKYHmRdjFhdW9vG2XE8Ecw6trkRkq8,4375
76
+ libre_devops_helpers/microsoft/entra/__init__.py,sha256=sELLo4ORddssvqxyrb6A5YrcvaFLoL9fR7dEnuCxEC0,1159
77
+ libre_devops_helpers/microsoft/entra/client.py,sha256=D81cDRBhA_oPWDPDMMMIIgVcoX0dp7ikZaLfKJ-07Fc,16260
78
+ libre_devops_helpers/microsoft/entra/models.py,sha256=5_fH0GI0CZX1-XFIYqsgpF0xj9Tx1wNIbdJofKorygg,11912
79
+ libre_devops_helpers/microsoft/entra/permissions.py,sha256=8Hyy0hZJ_0Zkf1_kxLireewkuCbZ5khd9DtKhP6lEyA,1921
80
+ libre_devops_helpers/microsoft/graph/__init__.py,sha256=27lAPqLPzD3HBLEApxQZWKjwB7Di5fmBwH7rhpIIZ6c,812
81
+ libre_devops_helpers/microsoft/graph/client.py,sha256=v5ZSAFzyM1eZuGwO2sUXN6HVFEolOoHAWWhnRUjzIc0,11170
82
+ libre_devops_helpers/microsoft/incidents/__init__.py,sha256=07oWIFUUULGgKAvf0fru_KPAXCBizkri0rNMs3rJZpI,1215
83
+ libre_devops_helpers/microsoft/incidents/client.py,sha256=gQX-F4UWEJ19JKL0kT_jwVZ9XSKwuEnmUWy_B-2Jvb4,7758
84
+ libre_devops_helpers/microsoft/incidents/models.py,sha256=be0vPrQFhP_9mop71CqZ2bio7iUnkkHCMLoqM8AyMt8,5885
85
+ libre_devops_helpers/microsoft/incidents/permissions.py,sha256=oTWu7nSS6JOxuZSvTtKpwPu8TnSmLNiTe0ajJhVHc6s,440
86
+ libre_devops_helpers/microsoft/intune/__init__.py,sha256=oVHXWimKUldEg69qrBsY8iw2g-2T3uRceddfTslvNQY,815
87
+ libre_devops_helpers/microsoft/intune/client.py,sha256=8vuWbu7B1LcXh0kdZoDsmXjVJxqxm7zgIOJsw_O-TOo,3209
88
+ libre_devops_helpers/microsoft/intune/models.py,sha256=md2ygvz-NvKd6my6DWHeX10COm_2FD7dtYVr4dYbZvM,2222
89
+ libre_devops_helpers/microsoft/intune/permissions.py,sha256=YiPuoos3AHCLCAqTJCYkGgut45r5qMHpGAAqkr6kW58,417
90
+ libre_devops_helpers/microsoft/keyvault/__init__.py,sha256=VAK9pm4ZgXTxtMyFlzFzviIUJsgwGCm-6eY7uFzH-fw,1024
91
+ libre_devops_helpers/microsoft/keyvault/client.py,sha256=uz9a-0zjnfSsME-ub75k667beUjV9DELTBLThMmNbEw,6488
92
+ libre_devops_helpers/microsoft/loganalytics/__init__.py,sha256=CP8uzazSx60qXYB9433FU1xi8M4fxykfGtRoU0bjdxY,727
93
+ libre_devops_helpers/microsoft/loganalytics/client.py,sha256=zffWaYsizXwPVBkPel7NSTvdQc5p6nxUaDLXJ2BISCs,4325
94
+ libre_devops_helpers/microsoft/logicapps/__init__.py,sha256=O86ha-a7jzENEfW8VTyPRUNz1Ipf27priHA6mVemKRY,1852
95
+ libre_devops_helpers/microsoft/logicapps/checks.py,sha256=w2MN85pMnB1ydh0lUHiaWq52CZpaLuK5z2sQMbNE8DQ,16716
96
+ libre_devops_helpers/microsoft/logicapps/client.py,sha256=_0uK3yR7RAklYw-7bWpby5Hq-MCmQJWp0xoZVdH5pFM,6229
97
+ libre_devops_helpers/microsoft/logicapps/document.py,sha256=8ff9jDJut4S7m-UlDbJat8U0coyNFB6KADWwc_tel54,7772
98
+ libre_devops_helpers/microsoft/pim/__init__.py,sha256=v0xMYh0lhBX-Ucqh5_pErx69VeSKcef15Pl1cUaMPSw,1345
99
+ libre_devops_helpers/microsoft/pim/azure.py,sha256=IzxtLt5htH5ihbQz20epAwRIRy8_atxCdLGXIUSvToQ,9625
100
+ libre_devops_helpers/microsoft/pim/entra.py,sha256=3O-2PkGZH9qFDCuNsdKbSgD0TyAAJABVbtmmSO23xQg,12127
101
+ libre_devops_helpers/microsoft/pim/models.py,sha256=vJh08oBOvEKoUKEN9iG_ycsX1GJkHFvGJZyJda54k8E,2787
102
+ libre_devops_helpers/microsoft/pim/permissions.py,sha256=KqM5btjBBNKPHq1zJwi66zpi1s8iRkKApFVtIrVC3E8,2694
103
+ libre_devops_helpers/microsoft/pim/rules.py,sha256=nGJg6CTcrDXD10jAZLalRhTJwkyXCBSRwEToHVep9g4,2867
104
+ libre_devops_helpers/microsoft/xdr/__init__.py,sha256=jX_IqgDsLTeZrZdpT1xH5m6zNeoSB7MpXTwelEOPZMQ,991
105
+ libre_devops_helpers/microsoft/xdr/client.py,sha256=tsCnU4zEcgV5uOwqVDKUMhmKCpNUjXjCPFW3NHdPQeY,9247
106
+ libre_devops_helpers/microsoft/xdr/models.py,sha256=NZIkBvkJNxWYJASWPS0aKP0BlS1UwvZHonRDbqxHMEQ,5993
107
+ libre_devops_helpers/microsoft/xdr/permissions.py,sha256=DrLYme_aXcZFdubppvXbx6siV7bPc4KMfsLJ7CKyLzQ,989
108
+ libre_devops_helpers/servicenow/__init__.py,sha256=EMnYXDeDt-PPWy8LgN-pR-j0Bw7rqMnuDwgwDGbPMAI,1195
109
+ libre_devops_helpers/servicenow/auth.py,sha256=UNJT0D0TBFWy5piqpJH1JoyLKT8CJh4Tbx9xGDwGj10,16302
110
+ libre_devops_helpers/servicenow/config.py,sha256=Ej6ZQ8p6P6aoqodW4sdoJLOu6rDxGBq4KO-85yEp3SE,10799
111
+ libre_devops_helpers/servicenow/roles.py,sha256=qC3-1ySqmuCc7vNbVb0DtKvo3PELKCmxmRvrN0lPpd4,641
112
+ libre_devops_helpers/servicenow/tables.py,sha256=CVpkN9yoAVJaTRf9wnFrfKR_8nuLJhRpYUsddwJ8RLQ,4969
113
+ libre_devops_helpers/servicenow/instance/__init__.py,sha256=7jNZnS0Ewn4geGyaHgCnfXgvhIiCz-G2YdpqVkpRlmc,857
114
+ libre_devops_helpers/servicenow/instance/client.py,sha256=x6GMDBgue3Z6_QGiVBgGp7oJ7E43wdYMRCRAvqatTaw,4114
115
+ libre_devops_helpers/servicenow/instance/models.py,sha256=iMdoZh8WDPymanIx-9Y5iUpDNjfHnIq3Jhtc6Dj0rA0,3747
116
+ libre_devops_helpers-0.4.1.dist-info/METADATA,sha256=Yd0fu8gvSbhUNnY16BgRsM9VJOq79pcU7PKM5BkjRjc,10057
117
+ libre_devops_helpers-0.4.1.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
118
+ libre_devops_helpers-0.4.1.dist-info/entry_points.txt,sha256=gJXiaMZZbBezwnCUzni0l7CagYbJada-Vn79GiHZ9Ww,54
119
+ libre_devops_helpers-0.4.1.dist-info/licenses/LICENSE,sha256=VAuIK1Nk0bQ--D-6RFTNRDoO8-Ls9Ufj8g1ZYmj-b_s,1069
120
+ libre_devops_helpers-0.4.1.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.32.4
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ ldo = libre_devops_helpers.cli:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Libre DevOps
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.