{"library":"policyuniverse","title":"PolicyUniverse","description":"PolicyUniverse, currently at version 1.5.1.20231109, is a Python library for parsing and processing AWS IAM Policies, Statements, ARNs, and wildcards. It provides classes to parse AWS IAM and Resource Policies, expand wildcards using AWS permission data, and minify policies to help users stay under AWS policy size limits. The project, open-sourced by Netflix-Skunkworks, sees releases as needed, with its latest update in November 2023.","language":"python","status":"active","last_verified":"Sat May 16","install":{"commands":["pip install policyuniverse"],"cli":null},"imports":["from policyuniverse.arn import ARN","from policyuniverse.policy import Policy","from policyuniverse.statement import Statement"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"from policyuniverse.policy import Policy\n\npolicy_document = {\n    'Version': '2012-10-17',\n    'Statement': [\n        {\n            'Effect': 'Allow',\n            'Principal': 'arn:aws:iam::012345678910:root',\n            'Action': ['s3:*'],\n            'Resource': '*',\n            'Condition': {\n                'IpAddress': {\n                    'AWS:SourceIP': ['0.0.0.0/0']\n                }\n            }\n        },\n        {\n            'Effect': 'Allow',\n            'Principal': 'arn:aws:iam::*:role/Hello',\n            'Action': ['ec2:*'],\n            'Resource': '*',\n            'Condition': {\n                'StringLike': {\n                    'AWS:SourceOwner': '012345678910'\n                }\n            }\n        }\n    ]\n}\n\npolicy = Policy(policy_document)\n\nprint(f\"Policy principals: {policy.principals}\")\nprint(f\"Is internet accessible: {policy.is_internet_accessible()}\")\nprint(f\"Actions summary: {policy.action_summary()}\")","lang":"python","description":"This example demonstrates how to parse an AWS IAM policy document using the `Policy` class, retrieve its principals, check for internet accessibility, and get a summary of actions.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-16","installed_version":"1.5.1.20231109","pypi_latest":"1.5.1.20231109","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":1.6,"avg_import_s":0.25,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"policyuniverse","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":0.23,"mem_mb":26.8,"disk_size":"25.7M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"policyuniverse","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":1.5,"import_time_s":0.15,"mem_mb":26.8,"disk_size":"26M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"policyuniverse","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":0.3,"mem_mb":25.5,"disk_size":"27.6M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"policyuniverse","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":1.6,"import_time_s":0.26,"mem_mb":25.5,"disk_size":"28M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"policyuniverse","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":0.27,"mem_mb":24.6,"disk_size":"19.5M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"policyuniverse","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":1.5,"import_time_s":0.3,"mem_mb":24.6,"disk_size":"20M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"policyuniverse","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":0.28,"mem_mb":24.9,"disk_size":"19.2M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"policyuniverse","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":1.5,"import_time_s":0.27,"mem_mb":24.7,"disk_size":"20M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"policyuniverse","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":0.25,"mem_mb":26.8,"disk_size":"25.2M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"policyuniverse","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":1.8,"import_time_s":0.19,"mem_mb":26.8,"disk_size":"26M"}]}}