syft-objects


Namesyft-objects JSON
Version 0.10.18 PyPI version JSON
download
home_pageNone
SummaryShare files with explicit mock vs private control
upload_time2025-07-10 04:38:51
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseNone
keywords data-sharing distributed openmined privacy syft
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # ๐ŸŽฏ Syft Objects

[![PyPI version](https://badge.fury.io/py/syft-objects.svg)](https://badge.fury.io/py/syft-objects)

**Discover and use files you can't read.** Syft Objects enables federated data science by letting you write code against mock data that runs on real data elsewhere.

## Why Syft Objects?

In federated computing, you often need to:
- ๐Ÿ” **Discover** files that exist on other machines
- ๐Ÿ“ **Address** those files in your code
- ๐Ÿงช **Test** your code locally before running remotely
- ๐Ÿ” **Control** who can see what

Syft Objects solves this by providing a simple mock/private pattern for any file type.

## Installation

```bash
pip install syft-objects
```

## Quick Start

```python
import syft_objects as so

# Create an object with mock (public) and private versions
analysis = so.create_object(
    name="Q4 Sales Analysis",
    mock_contents="Revenue up 10% to $2.5M",         # What others see
    private_contents="Revenue: $2,547,891.23",       # What you see
    discovery_read=["public"],                       # Who can discover it
    mock_read=["team@customer_company.com"],         # Who can see mock
    private_read=["cfo@our_company.com"]             # Who can see real data
)

# Browse available objects
so.objects  # Interactive table with search, filter, and permissions
```

## Core Concepts

### 1. Every Object Has Two Versions
- **Mock**: Sample/demo data anyone can code against
- **Private**: Real data only authorized users can access

### 2. Permissioned Discovery
```python
# Others can discover your object exists, even if they can't read it
so.objects  # Shows objects YOU can discover (not everyone sees the same list)
```

### 3. Write Once, Run Anywhere
```python
# Test locally with mock data
netflix_data = so.objects["0b2f982d-6f82-48f3-b32e-3005e186e1cc"]
result = len(netflix_data.mock.obj)  # Works with mock

# Same code runs on private data elsewhere
def analyze_netflix_data():
    data = pd.read_csv(netflix_data.private.path)  # Runs on real data
    return len(data)
```

## Common Workflows

### Creating Objects from Files
```python
# From existing files
dataset = so.create_object(
    name="Customer Dataset",
    mock_file="sample_100.csv",
    private_file="customers_full.csv"
)

# From folders
model = so.create_object(
    name="ML Model",
    mock_folder="model_demo/",
    private_folder="model_prod/"
)
```

### Finding and Using Objects
```python
# 1. Browse available objects
so.objects

# 2. Search and select (checkbox) objects of interest
# 3. Click "Python" button to copy code
# 4. Paste and use:
results = [so.objects["uid-here"]]
mock_data = results[0].mock.obj
```

### Creating Derivative Objects
```python
# Your analysis creates new syft objects
def my_analysis():
    # Load input
    input_data = pd.read_csv(input_path)
    
    # Process
    result = len(input_data)
    
    # Save as new syft object
    so.create_object(
        name=f"Row count: {result}",
        private_file="result.txt",
        mock_file="result_mock.txt",
        discovery_read=["researcher@university.edu"]
    )
```

## CRUD Operations

### Create
```python
obj = so.create_object(name="My Object", mock_contents="demo", private_contents="real")
```

### Read
```python
obj.get_name()
obj.get_permissions() 
obj.mock.obj  # Access mock data
```

### Update
```python
obj.set_name("Updated Name")
obj.set_permissions(mock_read=["new@user.com"])
```

### Delete
```python
obj.delete_obj()
```

## Web Interface

```bash
./run.sh  # Starts web UI at http://localhost:8004
```

Features:
- Search and filter objects
- Drag-and-drop file upload
- Edit permissions
- View/edit mock and private files

## How It Works

Syft Objects creates YAML config files that point to mock and private versions of your data:

```yaml
name: Sales Data
mock_url: syft://user@email.com/public/objects/sales_mock.csv
private_url: syft://user@email.com/private/objects/sales_real.csv
mock_permissions: [public]
private_permissions: [cfo@company.com]
```

The library handles all the complexity of:
- File management and syft:// URLs
- Permission checking
- Mock/private switching
- Cross-datasite discovery

## Use Cases

- **Federated Data Science**: Write analysis code against mock data, run on real data elsewhere
- **Privacy-Preserving ML**: Train models on distributed data without seeing it
- **Secure Collaboration**: Share data structure without revealing contents
- **Intermediate Results**: Track outputs from multi-step federated computations

## Learn More

- **Tutorial**: See `5mins.ipynb` for hands-on examples
- **Federated Execution**: Use with [syft-queue](https://github.com/OpenMined/syft-queue) or [syft-data-science](https://github.com/OpenMined/syft-data-science)
- **Issues**: https://github.com/OpenMined/syft-objects/issues

## License

Apache License 2.0
            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "syft-objects",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": "OpenMined <contact@openmined.org>",
    "keywords": "data-sharing, distributed, openmined, privacy, syft",
    "author": null,
    "author_email": "OpenMined <contact@openmined.org>",
    "download_url": "https://files.pythonhosted.org/packages/8a/37/9db513c4889bd337e78723dc8b02abce1488dd6eac412fb452863315a52c/syft_objects-0.10.18.tar.gz",
    "platform": null,
    "description": "# \ud83c\udfaf Syft Objects\n\n[![PyPI version](https://badge.fury.io/py/syft-objects.svg)](https://badge.fury.io/py/syft-objects)\n\n**Discover and use files you can't read.** Syft Objects enables federated data science by letting you write code against mock data that runs on real data elsewhere.\n\n## Why Syft Objects?\n\nIn federated computing, you often need to:\n- \ud83d\udd0d **Discover** files that exist on other machines\n- \ud83d\udccd **Address** those files in your code\n- \ud83e\uddea **Test** your code locally before running remotely\n- \ud83d\udd10 **Control** who can see what\n\nSyft Objects solves this by providing a simple mock/private pattern for any file type.\n\n## Installation\n\n```bash\npip install syft-objects\n```\n\n## Quick Start\n\n```python\nimport syft_objects as so\n\n# Create an object with mock (public) and private versions\nanalysis = so.create_object(\n    name=\"Q4 Sales Analysis\",\n    mock_contents=\"Revenue up 10% to $2.5M\",         # What others see\n    private_contents=\"Revenue: $2,547,891.23\",       # What you see\n    discovery_read=[\"public\"],                       # Who can discover it\n    mock_read=[\"team@customer_company.com\"],         # Who can see mock\n    private_read=[\"cfo@our_company.com\"]             # Who can see real data\n)\n\n# Browse available objects\nso.objects  # Interactive table with search, filter, and permissions\n```\n\n## Core Concepts\n\n### 1. Every Object Has Two Versions\n- **Mock**: Sample/demo data anyone can code against\n- **Private**: Real data only authorized users can access\n\n### 2. Permissioned Discovery\n```python\n# Others can discover your object exists, even if they can't read it\nso.objects  # Shows objects YOU can discover (not everyone sees the same list)\n```\n\n### 3. Write Once, Run Anywhere\n```python\n# Test locally with mock data\nnetflix_data = so.objects[\"0b2f982d-6f82-48f3-b32e-3005e186e1cc\"]\nresult = len(netflix_data.mock.obj)  # Works with mock\n\n# Same code runs on private data elsewhere\ndef analyze_netflix_data():\n    data = pd.read_csv(netflix_data.private.path)  # Runs on real data\n    return len(data)\n```\n\n## Common Workflows\n\n### Creating Objects from Files\n```python\n# From existing files\ndataset = so.create_object(\n    name=\"Customer Dataset\",\n    mock_file=\"sample_100.csv\",\n    private_file=\"customers_full.csv\"\n)\n\n# From folders\nmodel = so.create_object(\n    name=\"ML Model\",\n    mock_folder=\"model_demo/\",\n    private_folder=\"model_prod/\"\n)\n```\n\n### Finding and Using Objects\n```python\n# 1. Browse available objects\nso.objects\n\n# 2. Search and select (checkbox) objects of interest\n# 3. Click \"Python\" button to copy code\n# 4. Paste and use:\nresults = [so.objects[\"uid-here\"]]\nmock_data = results[0].mock.obj\n```\n\n### Creating Derivative Objects\n```python\n# Your analysis creates new syft objects\ndef my_analysis():\n    # Load input\n    input_data = pd.read_csv(input_path)\n    \n    # Process\n    result = len(input_data)\n    \n    # Save as new syft object\n    so.create_object(\n        name=f\"Row count: {result}\",\n        private_file=\"result.txt\",\n        mock_file=\"result_mock.txt\",\n        discovery_read=[\"researcher@university.edu\"]\n    )\n```\n\n## CRUD Operations\n\n### Create\n```python\nobj = so.create_object(name=\"My Object\", mock_contents=\"demo\", private_contents=\"real\")\n```\n\n### Read\n```python\nobj.get_name()\nobj.get_permissions() \nobj.mock.obj  # Access mock data\n```\n\n### Update\n```python\nobj.set_name(\"Updated Name\")\nobj.set_permissions(mock_read=[\"new@user.com\"])\n```\n\n### Delete\n```python\nobj.delete_obj()\n```\n\n## Web Interface\n\n```bash\n./run.sh  # Starts web UI at http://localhost:8004\n```\n\nFeatures:\n- Search and filter objects\n- Drag-and-drop file upload\n- Edit permissions\n- View/edit mock and private files\n\n## How It Works\n\nSyft Objects creates YAML config files that point to mock and private versions of your data:\n\n```yaml\nname: Sales Data\nmock_url: syft://user@email.com/public/objects/sales_mock.csv\nprivate_url: syft://user@email.com/private/objects/sales_real.csv\nmock_permissions: [public]\nprivate_permissions: [cfo@company.com]\n```\n\nThe library handles all the complexity of:\n- File management and syft:// URLs\n- Permission checking\n- Mock/private switching\n- Cross-datasite discovery\n\n## Use Cases\n\n- **Federated Data Science**: Write analysis code against mock data, run on real data elsewhere\n- **Privacy-Preserving ML**: Train models on distributed data without seeing it\n- **Secure Collaboration**: Share data structure without revealing contents\n- **Intermediate Results**: Track outputs from multi-step federated computations\n\n## Learn More\n\n- **Tutorial**: See `5mins.ipynb` for hands-on examples\n- **Federated Execution**: Use with [syft-queue](https://github.com/OpenMined/syft-queue) or [syft-data-science](https://github.com/OpenMined/syft-data-science)\n- **Issues**: https://github.com/OpenMined/syft-objects/issues\n\n## License\n\nApache License 2.0",
    "bugtrack_url": null,
    "license": null,
    "summary": "Share files with explicit mock vs private control",
    "version": "0.10.18",
    "project_urls": {
        "Bug Tracker": "https://github.com/OpenMined/syft-objects/issues",
        "Discussions": "https://github.com/OpenMined/syft-objects/discussions",
        "Documentation": "https://openmined.github.io/syft-objects/",
        "Homepage": "https://github.com/OpenMined/syft-objects",
        "Repository": "https://github.com/OpenMined/syft-objects"
    },
    "split_keywords": [
        "data-sharing",
        " distributed",
        " openmined",
        " privacy",
        " syft"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "29eeec4324f01c8537e714674f38b3e51aab647a1f81a888112ba7555f92a297",
                "md5": "a390aacde2b5ed399b82da99aaf944d4",
                "sha256": "4cf0dba8a208867158117ea317af8a2dcaa121221591c1a1ff8227ff644c2051"
            },
            "downloads": -1,
            "filename": "syft_objects-0.10.18-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "a390aacde2b5ed399b82da99aaf944d4",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 68906,
            "upload_time": "2025-07-10T04:38:50",
            "upload_time_iso_8601": "2025-07-10T04:38:50.420697Z",
            "url": "https://files.pythonhosted.org/packages/29/ee/ec4324f01c8537e714674f38b3e51aab647a1f81a888112ba7555f92a297/syft_objects-0.10.18-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "8a379db513c4889bd337e78723dc8b02abce1488dd6eac412fb452863315a52c",
                "md5": "3d55e48530e79f544afc1aa35c033a9c",
                "sha256": "2bac5f43394dc7fa55d57f269e2b311c60aedba4d5690e15b7a607dac6eeaf9c"
            },
            "downloads": -1,
            "filename": "syft_objects-0.10.18.tar.gz",
            "has_sig": false,
            "md5_digest": "3d55e48530e79f544afc1aa35c033a9c",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 61487,
            "upload_time": "2025-07-10T04:38:51",
            "upload_time_iso_8601": "2025-07-10T04:38:51.384776Z",
            "url": "https://files.pythonhosted.org/packages/8a/37/9db513c4889bd337e78723dc8b02abce1488dd6eac412fb452863315a52c/syft_objects-0.10.18.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-10 04:38:51",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "OpenMined",
    "github_project": "syft-objects",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "syft-objects"
}
        
Elapsed time: 0.59297s