{"id":32430670,"url":"https://github.com/rknightion/intune-manager-python","last_synced_at":"2026-02-27T15:14:42.551Z","repository":{"id":320276126,"uuid":"1081415405","full_name":"rknightion/intune-manager-python","owner":"rknightion","description":"Python GUI that aims to address some of the Intune UI limitations less painful","archived":false,"fork":false,"pushed_at":"2026-02-18T03:00:12.000Z","size":9554,"stargazers_count":1,"open_issues_count":5,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-18T04:54:39.123Z","etag":null,"topics":["intune","mdm"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rknightion.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-10-22T18:49:20.000Z","updated_at":"2026-02-03T11:51:11.000Z","dependencies_parsed_at":"2025-10-22T23:30:45.349Z","dependency_job_id":"a9432761-b89c-40f1-b975-bcc72ef480ac","html_url":"https://github.com/rknightion/intune-manager-python","commit_stats":null,"previous_names":["rknightion/intune-manager-python"],"tags_count":37,"template":false,"template_full_name":null,"purl":"pkg:github/rknightion/intune-manager-python","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rknightion%2Fintune-manager-python","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rknightion%2Fintune-manager-python/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rknightion%2Fintune-manager-python/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rknightion%2Fintune-manager-python/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rknightion","download_url":"https://codeload.github.com/rknightion/intune-manager-python/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rknightion%2Fintune-manager-python/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29808866,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-24T22:43:48.403Z","status":"online","status_checked_at":"2026-02-25T02:00:07.329Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["intune","mdm"],"created_at":"2025-10-25T21:19:10.509Z","updated_at":"2026-02-25T02:01:00.329Z","avatar_url":"https://github.com/rknightion.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Intune Manager (Python Edition)\n\nCross-platform rewrite of the Intune Manager desktop application using Python 3.13, PySide6, and the Microsoft Graph beta SDK.\n\n## Prerequisites\n- **Python**: Managed via `uv` (3.13 baseline). No system `pip` or venv usage.\n- **Microsoft Graph access**: Azure AD app registration with required Intune beta scopes (see `migration.txt` Phase 0).\n- **Platform dependencies**: Qt runtime libraries are handled by PySide6 wheels; additional packaging prerequisites will be documented in Phase 9.\n\n## Quick Start\n1. Sync dependencies: `uv sync`\n2. Launch placeholder app stub: `uv run intune-manager-app`\n\n## Authentication Setup\n- Update tenant/client settings via future configuration UI or directly in `settings.env` (managed by `SettingsManager`).\n- Tokens are cached in the runtime directory and protected secrets (e.g., optional client secrets) are stored via OS keyring.\n- Auth flows rely on MSAL interactive sign-in; ensure default browser access is permitted.\n\n## Developer Scripts\n- `uv run intune-manager-lint` – Ruff static analysis\n- `uv run intune-manager-fmt` – Ruff formatter\n- `uv run intune-manager-typecheck` – Mypy type checking\n- `uv run intune-manager-tests` – Pytest suite (includes pytest-asyncio/pytest-qt)\n\n## Project Layout\n```\nsrc/intune_manager/\n  auth/       # MSAL flows, permission checks, secure storage\n  services/   # Graph-powered business logic and orchestration\n  data/       # SQLModel persistence and caching\n  graph/      # Graph REST client (httpx+MSAL), rate limiting, batching\n  ui/         # PySide6 windows, widgets, and layouts\n  config/     # Settings management and environment handling\n  utils/      # Shared helpers and infrastructure utilities\n  cli/        # Optional command-line tools / diagnostics\n```\nEach subpackage contains an `AGENTS.md` file describing expectations for LLM-driven development within that area.\n\n## Troubleshooting\n\n### Keyring Backend Issues (Compiled Builds)\n\nWhen running compiled executables (built with Nuitka), you may encounter keyring backend failures on Windows:\n\n```\nInsecureKeyringError: Keyring backend keyring.backends.fail.Keyring does not provide encrypted storage.\n```\n\n**Cause**: The Windows Credential Manager backend requires `pywin32-ctypes` (a pure-Python Windows credential library). This dependency is now included in the project with a Windows platform marker.\n\n**Solutions**:\n1. **Recommended**: Ensure you have the latest dependencies installed with `uv sync`. The project now includes `pywin32-ctypes\u003e=0.2.0` for Windows systems.\n2. **Temporary workaround**: Set the environment variable `INTUNE_MANAGER_ALLOW_INSECURE_KEYRING=1` to bypass the security check for development/testing. ⚠️ **Warning**: This disables secure credential storage and should only be used in non-production environments.\n\n### Nuitka Compilation Debugging\n\nThe build process generates a `compilation-report.xml` file that details all included modules, DLL dependencies, and compilation decisions. This report is invaluable for troubleshooting missing dependencies in compiled builds.\n\nTo review the report after building:\n```bash\n# The report is generated automatically during Nuitka builds\ncat compilation-report.xml | grep \"module-name\"  # Search for specific modules\n```\n\n## Working Notes\n- All long-term planning and task tracking lives in `migration.txt`. Update it whenever scope changes or milestones complete.\n- Favor async-first patterns and update AGENT guides as architecture evolves.\n- Packaging, CI, and distribution workflows will be introduced in later migration phases.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frknightion%2Fintune-manager-python","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frknightion%2Fintune-manager-python","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frknightion%2Fintune-manager-python/lists"}