syft-perm


Namesyft-perm JSON
Version 0.3.92 PyPI version JSON
download
home_pageNone
SummaryMinimal utilities for managing SyftBox file permissions
upload_time2025-07-15 12:26:00
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseApache-2.0
keywords syftbox permissions privacy federated-learning
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            [![CI](https://github.com/OpenMined/syft-perm/actions/workflows/test.yml/badge.svg)](https://github.com/OpenMined/syft-perm/actions/workflows/test.yml)
[![PyPI version](https://img.shields.io/pypi/v/syft-perm.svg)](https://pypi.org/project/syft-perm/)
[![PyPI downloads](https://img.shields.io/pypi/dm/syft-perm.svg)](https://pypi.org/project/syft-perm/)
[![Python versions](https://img.shields.io/pypi/pyversions/syft-perm.svg)](https://pypi.org/project/syft-perm/)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
[![License](https://img.shields.io/github/license/OpenMined/syft-perm.svg)](https://github.com/OpenMined/syft-perm/blob/main/LICENSE)

# SyftPerm

**File permission management for SyftBox made simple.**

SyftPerm provides intuitive Python APIs for managing SyftBox file permissions with powerful pattern matching, inheritance, and debugging capabilities.

## 📚 **[Complete Documentation](https://openmined.github.io/syft-perm/)**

## Installation

```bash
pip install syft-perm
```

## Quick Start

```python
import syft_perm as sp

# Open a file or folder
file = sp.open("my_data.txt")

# Grant permissions (higher levels include lower ones)
file.grant_read_access("reviewer@external.org")
file.grant_write_access("colleague@company.com")  # Gets read + write
file.grant_admin_access("boss@company.com")       # Gets everything

# Use patterns for multiple files
project = sp.open("my_project/")
project.grant_write_access("*.py", "dev@company.com")
project.grant_read_access("docs/**/*.md", "*")  # Public docs

# Debug permissions
print(file.explain_permissions("colleague@company.com"))

# Check access
if file.has_write_access("colleague@company.com"):
    print("Colleague can modify this file")

# Display beautiful permission tables in Jupyter notebooks
file._repr_html_()  # Shows permissions table with compliance info
```

## Permission Hierarchy

- **Read** - View file contents
- **Create** - Read + create new files  
- **Write** - Read + Create + modify existing files
- **Admin** - Read + Create + Write + manage permissions

## Key Features

- **🎯 Intuitive Permission Hierarchy** - Higher permissions include all lower ones
- **🌟 Powerful Pattern Matching** - Use `*.py`, `docs/**/*.md` to control multiple files
- **🔍 Nearest-Node Algorithm** - Predictable inheritance from closest permission rules
- **🐛 Built-in Debugging** - Trace exactly why permissions work or don't work
- **📁 Folder-Level Efficiency** - Set permissions once on directories, files inherit automatically
- **🎮 Interactive Web Editor** - Google Drive-style permission management interface

## Beautiful Table Display

SyftPerm provides rich table displays for Jupyter notebooks:

```python
# Display permissions table with compliance information
file._repr_html_()  # Shows user permissions, file limits, and compliance status

# The table includes:
# • User permissions (Read/Create/Write/Admin)
# • File size vs limits
# • File type compliance (directories, symlinks)
# • Overall compliance status
# • Direct link to web editor
```

## Web Editor

For non-technical users, SyftPerm includes a web interface:

```python
# Get editor URL for any file or folder
url = sp.get_editor_url("my_project/")
print(f"Edit permissions at: {url}")
```

## Learn More

- **[5-Minute Quick Start](https://openmined.github.io/syft-perm/quickstart.html)** - Get productive immediately
- **[Comprehensive Tutorials](https://openmined.github.io/syft-perm/tutorials/)** - Master advanced features
- **[API Reference](https://openmined.github.io/syft-perm/api/)** - Complete Python API docs

## Requirements

- Python 3.9+
- Works on Windows, macOS, and Linux

## Contributing

1. Check out our [GitHub Issues](https://github.com/OpenMined/syft-perm/issues)
2. Read the [Contributing Guide](CONTRIBUTING.md)
3. Join the [OpenMined Community](https://openmined.org/)

## License

MIT License - see [LICENSE](LICENSE) file for details.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "syft-perm",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "syftbox, permissions, privacy, federated-learning",
    "author": null,
    "author_email": "OpenMined <info@openmined.org>",
    "download_url": "https://files.pythonhosted.org/packages/55/98/8a29317e8d0d9fc39e558b2fffe82632739de965fa9b1b79238c0c88fb0c/syft_perm-0.3.92.tar.gz",
    "platform": null,
    "description": "[![CI](https://github.com/OpenMined/syft-perm/actions/workflows/test.yml/badge.svg)](https://github.com/OpenMined/syft-perm/actions/workflows/test.yml)\n[![PyPI version](https://img.shields.io/pypi/v/syft-perm.svg)](https://pypi.org/project/syft-perm/)\n[![PyPI downloads](https://img.shields.io/pypi/dm/syft-perm.svg)](https://pypi.org/project/syft-perm/)\n[![Python versions](https://img.shields.io/pypi/pyversions/syft-perm.svg)](https://pypi.org/project/syft-perm/)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![License](https://img.shields.io/github/license/OpenMined/syft-perm.svg)](https://github.com/OpenMined/syft-perm/blob/main/LICENSE)\n\n# SyftPerm\n\n**File permission management for SyftBox made simple.**\n\nSyftPerm provides intuitive Python APIs for managing SyftBox file permissions with powerful pattern matching, inheritance, and debugging capabilities.\n\n## \ud83d\udcda **[Complete Documentation](https://openmined.github.io/syft-perm/)**\n\n## Installation\n\n```bash\npip install syft-perm\n```\n\n## Quick Start\n\n```python\nimport syft_perm as sp\n\n# Open a file or folder\nfile = sp.open(\"my_data.txt\")\n\n# Grant permissions (higher levels include lower ones)\nfile.grant_read_access(\"reviewer@external.org\")\nfile.grant_write_access(\"colleague@company.com\")  # Gets read + write\nfile.grant_admin_access(\"boss@company.com\")       # Gets everything\n\n# Use patterns for multiple files\nproject = sp.open(\"my_project/\")\nproject.grant_write_access(\"*.py\", \"dev@company.com\")\nproject.grant_read_access(\"docs/**/*.md\", \"*\")  # Public docs\n\n# Debug permissions\nprint(file.explain_permissions(\"colleague@company.com\"))\n\n# Check access\nif file.has_write_access(\"colleague@company.com\"):\n    print(\"Colleague can modify this file\")\n\n# Display beautiful permission tables in Jupyter notebooks\nfile._repr_html_()  # Shows permissions table with compliance info\n```\n\n## Permission Hierarchy\n\n- **Read** - View file contents\n- **Create** - Read + create new files  \n- **Write** - Read + Create + modify existing files\n- **Admin** - Read + Create + Write + manage permissions\n\n## Key Features\n\n- **\ud83c\udfaf Intuitive Permission Hierarchy** - Higher permissions include all lower ones\n- **\ud83c\udf1f Powerful Pattern Matching** - Use `*.py`, `docs/**/*.md` to control multiple files\n- **\ud83d\udd0d Nearest-Node Algorithm** - Predictable inheritance from closest permission rules\n- **\ud83d\udc1b Built-in Debugging** - Trace exactly why permissions work or don't work\n- **\ud83d\udcc1 Folder-Level Efficiency** - Set permissions once on directories, files inherit automatically\n- **\ud83c\udfae Interactive Web Editor** - Google Drive-style permission management interface\n\n## Beautiful Table Display\n\nSyftPerm provides rich table displays for Jupyter notebooks:\n\n```python\n# Display permissions table with compliance information\nfile._repr_html_()  # Shows user permissions, file limits, and compliance status\n\n# The table includes:\n# \u2022 User permissions (Read/Create/Write/Admin)\n# \u2022 File size vs limits\n# \u2022 File type compliance (directories, symlinks)\n# \u2022 Overall compliance status\n# \u2022 Direct link to web editor\n```\n\n## Web Editor\n\nFor non-technical users, SyftPerm includes a web interface:\n\n```python\n# Get editor URL for any file or folder\nurl = sp.get_editor_url(\"my_project/\")\nprint(f\"Edit permissions at: {url}\")\n```\n\n## Learn More\n\n- **[5-Minute Quick Start](https://openmined.github.io/syft-perm/quickstart.html)** - Get productive immediately\n- **[Comprehensive Tutorials](https://openmined.github.io/syft-perm/tutorials/)** - Master advanced features\n- **[API Reference](https://openmined.github.io/syft-perm/api/)** - Complete Python API docs\n\n## Requirements\n\n- Python 3.9+\n- Works on Windows, macOS, and Linux\n\n## Contributing\n\n1. Check out our [GitHub Issues](https://github.com/OpenMined/syft-perm/issues)\n2. Read the [Contributing Guide](CONTRIBUTING.md)\n3. Join the [OpenMined Community](https://openmined.org/)\n\n## License\n\nMIT License - see [LICENSE](LICENSE) file for details.\n",
    "bugtrack_url": null,
    "license": "Apache-2.0",
    "summary": "Minimal utilities for managing SyftBox file permissions",
    "version": "0.3.92",
    "project_urls": {
        "Documentation": "https://github.com/OpenMined/syft-perm#readme",
        "Homepage": "https://github.com/OpenMined/syft-perm",
        "Issues": "https://github.com/OpenMined/syft-perm/issues",
        "Repository": "https://github.com/OpenMined/syft-perm"
    },
    "split_keywords": [
        "syftbox",
        " permissions",
        " privacy",
        " federated-learning"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "84b474cdfd2f5d25f4c154493e32ed4621a931b0bf2f0a5a7e961ddf0912f333",
                "md5": "b56943267150d7ca58e869fed76c0316",
                "sha256": "1b89b1e034d5eff34876664a67daa96911bb3bfe7172a03f4d7512501a79c5bd"
            },
            "downloads": -1,
            "filename": "syft_perm-0.3.92-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "b56943267150d7ca58e869fed76c0316",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 124814,
            "upload_time": "2025-07-15T12:25:59",
            "upload_time_iso_8601": "2025-07-15T12:25:59.382904Z",
            "url": "https://files.pythonhosted.org/packages/84/b4/74cdfd2f5d25f4c154493e32ed4621a931b0bf2f0a5a7e961ddf0912f333/syft_perm-0.3.92-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "55988a29317e8d0d9fc39e558b2fffe82632739de965fa9b1b79238c0c88fb0c",
                "md5": "321afed42e049dffbbd4b495204b9d0e",
                "sha256": "2478916eb9f393a7add209e5e418e68f857d399369c0d907bc276d9f6b9e0291"
            },
            "downloads": -1,
            "filename": "syft_perm-0.3.92.tar.gz",
            "has_sig": false,
            "md5_digest": "321afed42e049dffbbd4b495204b9d0e",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 195441,
            "upload_time": "2025-07-15T12:26:00",
            "upload_time_iso_8601": "2025-07-15T12:26:00.431626Z",
            "url": "https://files.pythonhosted.org/packages/55/98/8a29317e8d0d9fc39e558b2fffe82632739de965fa9b1b79238c0c88fb0c/syft_perm-0.3.92.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-15 12:26:00",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "OpenMined",
    "github_project": "syft-perm#readme",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "syft-perm"
}
        
Elapsed time: 0.41421s