Metadata-Version: 2.4
Name: syft-objects
Version: 0.3.0
Summary: Share files with explicit mock vs private control
Project-URL: Homepage, https://github.com/OpenMined/syft-objects
Project-URL: Documentation, https://openmined.github.io/syft-objects/
Project-URL: Repository, https://github.com/OpenMined/syft-objects
Project-URL: Bug Tracker, https://github.com/OpenMined/syft-objects/issues
Project-URL: Discussions, https://github.com/OpenMined/syft-objects/discussions
Author-email: OpenMined <contact@openmined.org>
Maintainer-email: OpenMined <contact@openmined.org>
License: Apache-2.0
License-File: LICENSE
Keywords: data-sharing,distributed,openmined,privacy,syft
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: System :: Distributed Computing
Requires-Python: >=3.8
Requires-Dist: pydantic>=2.0.0
Requires-Dist: pyyaml>=6.0
Provides-Extra: dev
Requires-Dist: black>=23.0.0; extra == 'dev'
Requires-Dist: isort>=5.0.0; extra == 'dev'
Requires-Dist: mypy>=1.0.0; extra == 'dev'
Requires-Dist: pre-commit>=3.0.0; extra == 'dev'
Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
Requires-Dist: pytest>=7.0.0; extra == 'dev'
Provides-Extra: docs
Requires-Dist: mkdocs-jupyter>=0.24.0; extra == 'docs'
Requires-Dist: mkdocs-material>=9.0.0; extra == 'docs'
Requires-Dist: mkdocs>=1.5.0; extra == 'docs'
Provides-Extra: syftbox
Requires-Dist: syft-core>=0.1.0; extra == 'syftbox'
Description-Content-Type: text/markdown

# 🔐 Syft Objects

**Share files with explicit mock vs private control**

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

## Quick Start

```python
import syft_objects as syo

# Create an object with demo and real content
obj = syobj(
    name="AI Results",
    mock_contents="Model achieved good performance",
    private_contents="Accuracy: 94.5%, Cost: $127"
)

# Browse all your objects interactively
syo.objects

# Search for specific objects
syo.objects.search("financial")
```

## What It Does

**Mock vs Private Pattern**: Every object has two versions:
- **Mock**: What everyone sees (demo/sample)
- **Private**: What authorized users see (real data)

**Example**:
```python
obj = syobj(
    name="Customer Data",
    mock_contents="Sample: 100 customers, avg age 42",
    private_contents="Full: 47,293 customers, avg age 41.7, LTV $1,247"
)
```

## Interactive Object Browser

```python
# Browse all objects with search and selection
syo.objects

# Search by name, email, description, or metadata
syo.objects.search("financial")

# Filter by email
syo.objects.filter_by_email("andrew")

# Get specific objects
selected = [syo.objects[i] for i in [0, 1, 5]]
```

## Installation

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

For SyftBox integration:
```bash
pip install syft-objects[syftbox]
```

## Key Features

- **One function**: `syobj()` - simple and clean
- **Explicit control**: You decide what goes in mock vs private
- **Beautiful display**: Rich HTML widgets in Jupyter
- **Interactive browsing**: Search and select objects easily
- **Unique filenames**: No collisions when creating objects with same name
- **Real-time updates**: New objects appear immediately

## License

Apache License 2.0
