# casbin-python-cli **Repository Path**: mirrors_casbin/casbin-python-cli ## Basic Information - **Project Name**: casbin-python-cli - **Description**: Python CLI for Casbin - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-04 - **Last Updated**: 2026-07-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # casbin-python-cli ![PyPI - Python Version](https://img.shields.io/badge/python-3.8%2B-blue) ![PyPI - License](https://img.shields.io/badge/license-Apache%202.0-green) ![PyPI - PyCasbin Version](https://img.shields.io/badge/pycasbin-2.3.0%2B-orange) ## Features - **casbin-editor Integration**: Full API compatibility with casbin-editor for multi-language backend support - **Unified JSON Response Format**: Standardized `{"allow": boolean|null, "explain": array|null}` response format - **Method Name Mapping**: Automatic conversion between Java-style command names and Python method names - **Comprehensive API Coverage**: Support for policy execution, management, RBAC operations, and data retrieval - **Cross-platform Binaries**: Automated builds for Windows, macOS, and Linux - **Dynamic Command Execution**: Reflection-based method invocation similar to Java version ## Installation ### Prerequisites - Python 3.8+ - pip package manager ### Installation Methods **Clone from repository**: ```bash git clone https://github.com/casbin/casbin-python-cli.git cd casbin-python-cli pip install -r requirements.txt ``` ## Usage ### Basic Command Structure ```bash python -m casbin_cli.client [command] [options] [args] ``` ### Examples **Policy Execution**: ```bash # Basic enforcement python -m casbin_cli.client enforce -m "examples/rbac_model.conf" -p "examples/rbac_policy.csv" "alice" "data1" "read" {"allow":true,"explain":null} # Enforcement with explanation python -m casbin_cli.client enforceEx -m "examples/rbac_model.conf" -p "examples/rbac_policy.csv" "alice" "data1" "read" {"allow":true,"explain":["alice","data1","read"]} ``` **Policy Management**: ```bash # Add policy python -m casbin_cli.client addPolicy -m "examples/rbac_model.conf" -p "examples/rbac_policy.csv" "eve" "data3" "read" {"allow":true,"explain":null} # Get all policies python -m casbin_cli.client getPolicy -m "examples/rbac_model.conf" -p "examples/rbac_policy.csv" {"allow":null,"explain":[["alice","data1","read"],["bob","data2","write"]]} ``` **RBAC Operations**: ```bash # Get user roles python -m casbin_cli.client getRolesForUser -m "examples/rbac_model.conf" -p "examples/rbac_policy.csv" "alice" {"allow":null,"explain":["data2_admin"]} # Get role users python -m casbin_cli.client getUsersForRole -m "examples/rbac_model.conf" -p "examples/rbac_policy.csv" "data2_admin" {"allow":null,"explain":["alice"]} ``` **Data Retrieval**: ```bash # Get all subjects python -m casbin_cli.client getAllSubjects -m "examples/rbac_model.conf" -p "examples/rbac_policy.csv" {"allow":null,"explain":["alice","bob","data2_admin"]} # Get all objects python -m casbin_cli.client getAllObjects -m "examples/rbac_model.conf" -p "examples/rbac_policy.csv" {"allow":null,"explain":["data1","data2"]} ``` ### API Compatibility The Python CLI maintains full compatibility with the Java version through: - **Command Interface**: Identical command-line arguments (`-m`, `-p`, etc.) - **Method Name Mapping**: Automatic conversion from Java camelCase to Python snake_case - **Response Format**: Standardized JSON responses matching Java implementation - **Error Handling**: Consistent error reporting across all backends ### Supported APIs | Category | Commands | Status | | --------------------- | ------------------------------------------------------------ | ------ | | **Policy Execution** | `enforce`, `enforceEx`, `enforceWithMatcher` | ✅ | | **Policy Management** | `addPolicy`, `removePolicy`, `getPolicy`, `hasPolicy` | ✅ | | **RBAC Operations** | `getRolesForUser`, `getUsersForRole`, `hasRoleForUser` | ✅ | | **Data Retrieval** | `getAllSubjects`, `getAllObjects`, `getAllActions` | ✅ | | **Grouping Policies** | `getGroupingPolicy`, `addGroupingPolicy`, `removeGroupingPolicy` | ✅ | | **Named Policies** | `getNamedPolicy`, `getAllNamedRoles` | ✅ | | **Filtered Queries** | `getFilteredPolicy`, `getFilteredGroupingPolicy` | ✅ | ## Project Structure ``` casbin-python-cli/ ├── .github/ │ └── workflows/ │ └── release.yml # GitHub Actions CI/CD ├── scripts/ │ ├── update_version.py # Version management │ └── build_binaries.py # Binary building ├── casbin_cli/ │ ├── __init__.py │ ├── __version__.py # Version information │ ├── client.py # Main CLI entry point & argument parsing │ ├── command_executor.py # Dynamic command execution & method mapping │ ├── enforcer_factory.py # PyCasbin enforcer creation │ ├── response.py # Standardized JSON response formatting │ └── utils.py # Utility functions ├── examples/ # Example model and policy files │ ├── rbac_model.conf # RBAC model configuration │ ├── rbac_policy.csv # RBAC policy data │ ├── basic_model.conf # Basic model configuration │ └── basic_policy.csv # Basic policy data ├── tests/ # Test files (if any) ├── .releaserc.json # Semantic release configuration ├── package.json # Node.js dependencies for release automation ├── requirements.txt # Python dependencies ├── setup.py # Package setup and distribution └── README.md # This file ``` ## Requirements - Python 3.8+ - PyCasbin 2.3.0+ ## License This project is licensed under the Apache License 2.0 - see the [LICENSE](LICENSE) file for details. --- **Note**: This Python CLI is part of the Casbin ecosystem and designed to work seamlessly with casbin-editor for multi-language backend support. For more information about Casbin, visit [casbin.org](https://casbin.org).